Nuestra propuesta para el estudio de la IA aplicada sistemas IoT, es el siguiente:
Imaginemos que queremos monitorizar la temperatura y humedad de nuestro centro académico. Estamos hablando de uno o varios edificios con gran cantidad de aulas, talleres, laboratorios, etc. Igualmente, este trabajo podría aplicarse a cualquier empresa o en definitiva edificio con un alto número de espacios.
Bien, si quisiéramos monitorizar estas condiciones atmosféricas en gran número de estancias, tendríamos un alto coste de dispositivos IoT que instalar, monitorizar y mantener. Se nos ocurre que quizás, la IA pueda ayudarnos en este proyecto. ¿Cómo? Pues podríamos por ejemplo llevar a cabo un estudio previo del comportamiento de todas las estancias a través de unos pocos dispositivos y usar esta información para monitorizar todas las estancias. Es decir, imaginemos que monitorizamos el comportamiento de 3 salas contiguas. Es más que probable que el comportamiento de la sala intermedia pueda quedar caracterizado por el comportamiento de las otras dos salas.
En definitiva, lo que vamos a hacer es lo siguiente. Usaremos 3 dispositivos IoT para estudiar el comportamiento de 3 salas contiguas. A continuación aplicaremos inteligencia artificial para predecir temperatura y humedad en una de las 3 salas a través de la monitorización de las otras 2 salas y compararemos la predicción con el valor real a ver si es viable usar IA para predecir condiciones atmosféricas de un espacio a través del comportamiento de otros espacios de parecidas condiciones.
Empecemos por el principio y estudiemos cómo implementar el bloque de percepción de nuestros IoT.
Como ya sabemos, el bloque de percepción nos permite introducir información al sistema IA mediante la codificación de las magnitudes obtenidas de los sensores. En esta unidad vamos a crear una solución tipo Internet of Things (IoT). Este tipo de soluciones se basa en la creación de dispositivos conectados a través de la red capaces de intercambiar información con otros dispositivos o plataformas.
Mi propuesta es el uso de Wemos, una plataforma de desarrollo similar a Arduino y orientada al IoT. Técnicamente hablando, Wemos es una placa basada en el famoso ESP8266, con capacidad de conexión WiFi en la misma placa y alta facilidad de conexión con periféricos como el sensor de temperatura y humedad DHT11 que vamos a usar en esta unidad.
Estamos hablando de una solución de bajo coste, pues todo el sistema se encuentra por debajo de 10€ con stock en tiendas nacionales y facilidad de adquisición de acuerdo a la política económica de nuestros centros educativos. Decir, que en concreto he adquirido varias placas Wemos D1 Mini, aunque existen más variantes como por ejemplo el uso de placas Raspberry pues también incorporan conexiones de redes tanto Wifi como cableadas y como no, poder adaptar nuestros Arduinos con módulos Wifi, o usar otros como NodeMCU. La oferta es bastante amplia, y todas estas componentes se pueden incorporar incluso a proyectos como Innovated en modalidades como CITE. Pero quizás desde mi punto de vista, Wemos D1 mini es bueno, bonito y barato.
Vamos a comenzar conectando nuestra placa Wemos con el sensor DHT11. Aunque en la imagen veréis un sensor sin ningún componente adicional, os recomiendo que compréis un modulo dónde ya esté debidamente acondicionado, esto es:
Como podéis ver, en ese modulo ya lo tenemos preparado para conectar directamente a Vcc (pin + en el caso de Wemos a 3.3V), a GND (pin - a G) y pin central de Señal por ejemplo a D2.
A continuación vamos a configurar el software de programación Arduino para que podamos programar la placa Wemos. Para ello seguimos los pasos siguientes:
1. Abrimos Arduino
2. Pinchamos en Archivo -> Preferencias.
3. En la parte que pone "Gestor de URLs Adicionales de Tarjetas", escribimos la siguiente URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json
4. A continuación instalamos las tarjetas ESP8266 pinchando en Herramientas -> Placa -> Gestor de Tarjetas y escribiendo ESP8266 en el cuadro de búsqueda e instalándolo.
Ya podemos reiniciar Arduino y lo tendríamos. Vamos con el proceso de grabar nuestro primer código en la placa Wemos.
Conectamos por USB la placa.
Pinchamos en Herramientas -> Placa -> ESP8266 Boards -> Wemos D1 R2 & Mini. Si la vuestra fuera otra pues la correspondiente.
Pinchamos en Herramientas -> Puerto -> [Puerto Correspondiente]
Por último grabamos el siguiente código y vemos si podemos subirlo a Wemos y éste se pone a parpadear.
// Wemos D1 Blink example.
void setup() {
pinMode(BUILTIN_LED, OUTPUT); // initialize onboard LED as output
}
void loop() {
digitalWrite(BUILTIN_LED, HIGH); // turn on LED with voltage HIGH
delay(1000); // wait one second
digitalWrite(BUILTIN_LED, LOW); // turn off LED with voltage LOW
delay(1000); // wait one second
}
Para poder llevar a cabo la lectura, primero debemos instalar una librería, que es un conjunto de código desarrollado con el fin de simplificar el trabajo con este tipo de sensores.
Para ello pinchamos en Programa -> Incluir Librería -> Administrar Bibliotecas y buscamos "dht sensor library", instalando la desarrollada por Adafruit.
A continuación ya podemos leer la temperatura y humedad a través del puerto Serie.
#include <DHT.h>
DHT dht(D2, DHT11);
void setup() {
Serial.begin(115200);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" grados Celsius. Humedad: ");
Serial.println(h);
}
Como podemos ver, el programa es muy sencillo. Primero incluimos la librería DHT que necesitamos para usar el sensor de temperatura y humedad. A continuación creamos una variable que va a controlar el sensor. En dicha variable le indicamos que lo hemos conectado a D2 y que el tipo de sensor es el DHT11.
Dentro del setup de Arduino (procedimento que se ejecuta al iniciar Arduino una única vez) inicializamos el sensor y el puerto serie que vamos a utilizar para mostrar el resultado.
Por último, en el loop (procedimiento que se ejecuta después del setup y se repite una y otra vez) haremos la lectura de temperatura y humedad, almacenando el resultado en dos variables h y t. Estas variables, junto a algo de texto, lo mostramos por pantalla a través del monitor serie de Arduino (botón que se encuentra en la parte superior derecha del IDE Arduino).
De este modo, ya tenemos un sistema IoT que es capaz de percibir los cambios de temperatura y humedad. Vayamos ahora a la representación de estos datos para nuestro estudio.