Paso 4: Arduino código (escudo ATMEL)
Instalar el IDE de Arduino:
Es necesario instalar el IDE de Arduino: https://www.arduino.cc/en/Main/Software
Elija su sistema operativo, descargarlo e instalarlo.
Obtener el código fuente:
Puede descargar el código fuente en Github: https://github.com/luisomoreau/sigfox_talking_plant_atmel
Conocimientos básicos de programación de Arduino:
Antes de iniciar cada programa, empezamos con dos funciones de «base»: void setup() y loop() de anular.
- void setup() se ejecuta primero. Se utiliza para inicializar la tarjeta.
- void loop() se ejecuta infinitamente (siempre y cuando se proporciona energía)
Ver más en arduino.cc
Nuestro programa:
Abra el archivo sigfox_talking_plant_atmel.ino en el IDE de Arduino. Verá que existen funciones setup() y loop(). Otras dos funciones están también presente, sensorActivity() y sendValues().
Ahora, tenemos que definir la entrada, las variables y el tiempo para dormir:
Al principio del programa, usted verá:
- #define TIMEINTERVALL 3600000; Este es el intervalo entre los valores de cada sensor de lectura. 3600000 corresponde a una hora en milisegundos (60 minutos x 60 segundos x 1000)
- #define photores A0; Definimos el pin A0 a la clavija de entrada para leer los valores de la fotocélula.
- #define humedad A1; Definimos el pin A1 que la clavija de entrada para leer valores desde el sensor de humedad.
- contador de tiempo largo sin firmar;
- unsigned int lum;
- unsigned int húmeda;
Echemos un vistazo más profundo en las funciones:
- Setup():
En esta función, la tarjeta está inicializada, comprobamos que el escudo está presente, lo activamos y obtenemos el ID y el número de PAC del escudo. A continuación, configurarlo en el modo de dormir e inicializar el temporizador.
- Loop():
Existen dos opciones activar la función de sensorActivity. Puede pulsar el botón o espere el retraso definido con el valor TIMEINTERVALL.
- sensorActivity():
Esta función se utilizará para leer los valores de los sensores y luego llamar a la función sendValues. Para el brillo y sensores de humedad, no se integran con la biblioteca de escudo. Por lo tanto necesitamos utilizar la función analogRead para obtener el valor de entrada.
He utilizado una función de mapa para convertir en porcentaje y para calibrar la entrada.
Para la temperatura, ue la librairie, por lo tanto, tenemos que activar el escudo con SIGsh.SIGFOXon() y usar SIGsh.readTemp() para obtener la temperatura.
Finalmente, llamamos a la función sendValues() con la humedad, luminosidad y temperatura como parámetros.
El código proporcionado, el poder se incluye
- sendValues():
En primer lugar, creamos un buffer para agregar los valores obtenidos.
Como Sigfox utiliza datos muy pequeños, tenemos que optimizarlo. Por esta razón tomamos sólo el byte más bajo de los valores enteros.
Explicación: peso de unsigned int es de 16 bits (2 bytes) en placas basadas en el Atmega. Sigfox puede enviar hasta 12 bytes. Como los valores que obtenemos será entre 0 y 100, 1 byte es suficiente para almacenarlos.
Ver más sobre pesos enteros aquí.
Entonces enviamos el buffer y la longitud utilizando la biblioteca proporcionada (SIGsh.sendMessage)
Ejecutar el código:
Trate ahora de compilar el código utilizando el botón de verificación en la esquina superior izquierda y subirlo utilizando el botón justo al lado. (No olvide agregar el puerto serie es detectada automáticamente no: Herramientas > Serial Port > su puerto arduino).
Abra al monitor de serie y pulse el botón. Si todo funciona bien. Que obtenga el estado "OK" en la consola.
Siguiente paso es activar tu tarjeta.