RESPIRA, Paso a Paso (Parte 2)

Continuamos aquí donde lo dejamos la semana pasada. Recordemos que ya teníamos montada nuestra estación respira, o al menos conectados todos los elementos (sensores, placa y microcontrolador): vamos entonces a echarle un vistazo al programa. Es complejo, así que vamos a ir por partes, y si no has visto antes como se elabora un programa en Arduino, quizá sería interesante que le echases un vistazo al ejemplo que comentamos, paso a paso aquí. Todo el código mostrado aquí puede descargarse en el repositorio del proyecto.

Lo primero que haremos, claro está, será declarar las bibliotecas que vamos a usar, y que previamente nos habremos descargado, bien del repositorio de RESPIRA, bien del repositorio oficial de cada librería en cuestión. Como vemos, tenemos unas cuantas (DHT, Multichannel, Sensirion, etc) que se encargaran de gestionar los sensores, mientras que otras (WiFiManager y
Wifi) las utilizaremos para realizar la conexión a una red wifi, y posterior envío de datos. También vamos a incluir 2 archivos extra, fiware.h y config.h. Luego les echaremos un vistazo.

Lo siguiente será declarar todas las variables, constantes, y demás elementos que iremos usando durante la ejecución del programa, tanto para la parte de lectura de sensores, como para la de envío de datos.

Una vez hecho esto, podemos empezar ya con la primera parte del funcionamiento del dispositivo, que como recordamos se incluye en la función setup(), para ejecutarse una vez, al encenderse. Aquí, a parte de inicializar algunos procesos básicos como la comunicación serie, lo primero que hacemos es usar la librería WiFiManager para configurar la conexión WiFi. Al ejecutar esta parte del programa, nuestro dispositivo abrirá su propia red, a la que nos conectaremos, para poder elegir otra red WiFi externa que quedará guardada en la estación RESPIRA. De esta forma, si la cambiamos de sitio, podemos volver a configurar la conexión, sin tener que tocar el código:

Bien, si ya hemos inicializado las conexiones, ahora tocará inicializar la otra parte de nuestro código: los sensores. Puesto que el sensor de gas Grove necesita precalentarse, lo hacemos en este punto; también inicializamos todas las comunicaciones entre sensores y placa, y con la biblioteca Wire.h ponemos también en marcha la comunicación I2C, utilizada por algunos de los sensores.

Ahora, antes de continuar al loop, vamos a echarle un vistazo a un par de funciones que hemos definido en otra parte del código. A quienes ya hayan estado en alguno de nuestros talleres de conexión de un sensor a plataforma, seguro que le suena la función send, que declaramos dentro del archivo fiware.h, y que no es más que la construcción del envio de datos a una plataforma FIWARE:

Por otra parte, la función transmitir simplemente recoge toda la información proporcionada por los sensores, y utiliza esa misma función send para hacer el envío. Será ésta a la que llamaremos dentro del bucle principal:

Hablando del cual, lo primero que este hace es comprobar que, en efecto, los sensores se han precalentado, después de lo cual realiza las correspondientes medidas, y las muestra por el puerto serie. A continuación, basta con hacer una llamada a la función transmit, ¡y voila! Datos enviados a la plataforma. Un delay para no saturar al dispositivo (ni a la plataforma que reciba la información), y vuelta a empezar.

Por supuesto, ahora mismo, no vemos el resultado, pero basta con irnos a la página del proyecto, en http://calidadmedioambiental.org, para acceder a los datos que está recopilando nuestro dispositivo:

¡Pero ojo! Hay un paso que nos hemos saltado. Para poder conectar nuestra estación a la plataforma RESPIRA, primero tenemos que iniciar sesión en la misma: una vez tengamos nuestras credenciales, podemos acceder a la sección “perfiles de dispositivo”, donde encontraremos una serie de elementos: apiKey, servicio y subservicio…

Pues bien, cuando estemos programando la estación, bastará con que editemos el archivo confi.h (no, no se nos había olvidado), incorporando estos elementos en las variables correspondientes:

Y ahora sí, nuestra estación está lista para recopilar y enviar datos, poniéndolos a disposición del publico, y participando de una verdadera plataforma colaborativa de calidad medioambiental.