IoT: Arduino blocks+ESP8266+Adafruit.io (parte 1)

publicado en: Arduino | 0

En esta primera entrada vamos a explicar como podemos monitorizar una variable (unidireccional), en nuestro caso temperatura y humedad, a través del sensor DHT-11, y visualizarla en nuestro navegador web via Adafruit.io utilizando el módulo wifi ESP8266. Para ello vamos a utilizar la placa Keystudio (Arduino UNO).

(En la segunda parte del tutorial, realizaremos la comunicación bidireccional)

Los pasos a realizar seran los siguientes:

  • Configuración del módulo wifi ESP8266
  • Creación de la cuenta Adafruit y feeds de las variables
  • Programación Arduino Blocks

1.- El módulo ESP8266

Para utilizar este módulo, podemos hacerlo directamente usando los 8 pines y realizando las conexiones correspondientes, o podemos utilizar una sencilla placa de conexión la cual ya incorpora el conexionado interno y solo necesitamos 4 cables: VCC, GND, TX (transmisión) y RX (recepción).

Podéis encontrar más información en el siguiente enlace: Keyestudio_8266_WIFI_Module_2PCS

El módulo wifi nos permite trabajar a velocidades de 9600 a 115200 baudios, pero para evitar problemas trabajaremos de forma estable a 9600 baudios.

El siguiente esquema muestra la conexión a la placa arduino del sensor DHT-11 y el módulo ESP8266.

Conectaremos el módulo a la placa arduino y comprobaremos la comunicación entre los dos a través del monitor serie. Para ello cargamos el siguiente programa:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.println("Hello World");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  mySerial.println("Hello, world?");
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

Abrimos el monitor serie y comprobamos la comunicación. Seleccionamos la velocidad en la parte inferior a 9600 baudios.

Probamos el comando AT, y obtendremos un OK si la comunicación funciona correctamente.

Podemos tambien mirar que redes wifis tenemos disponibles con el siguiente comando: AT+CWLAP.

Ahora configuraremos el módulo a 9600 Baudios por defecto: AT+UART_DEF=9600,8,1,0,0.

Ya tenemos coneixón WIFI lista para usarla en nuestra placa de manera permanente.

2.- Creación de el feed en Adafruit.io

Vamos a acceder a la web de adafruit.io y realizaremos el registro. (recordar el usuario ya que posteriormente será necesario para la configuración).

Nuestro objetivo es monitorizar dos variables: temperatura y humedad. Para ello crearemos el tema (Feed) donde se visualizaran los datos.

Desplegamos el menú acciones y creamos un tema “create a new feed”

Creamos un nombre, temp, para la variable que queremos monitorizar. Podemos utilizar mayúsculas o minúsculas para definir el tema, pero debemos recordar el nombre exacto del feed para su posterior configuración.

Repetimos el proceso para crear el tema de humedad, en nuestro caso con el nombre hum.

Seguiremos creando el formato de visualización de los datos en pantalla. Para ello seleccionamos el en el menú lateral Dashboard. Repetimos el proceso igual que con el feed, creando un nombre para nuestro espacio de monitorización.

Cuando accedemos al Dashboard creado accederemos a “create new block” para ir añadiendo nuestras variables y el formato de visualización.

Existen diferentes bloques para visualizar los datos. Nosotros vamos a usar el semicirculo (Gauge) y la gráfica (Line Chart).

Al crear el bloque nos pide cual es el feed que queremos visualizar. En nuestro caso vamos a visualizar en el semicírculo el feed temp y la feed hum en la gráfica.

Hemos añadido unos límites y pequeños ajustes en la creación de los bloques, pero son totalmente configurables por el usuario.

El resultado final es este:

Podemos reconfigurar cualquier bloque o cambiar de posición utilizando los iconos superiores.

3.- Arduino Blocks

Para realizar la programación vamos a utilizar Arduino Blocks, la qual nos facilita la programación de manera visual. Obviamente tambien podemos utilizar el IDE de Arduino con sus correspondientes librerias para cada módulo.

Haremos el registro en la web con un correo electrónico y posteriormente crearemos un proyecto seleccionando la placa Arduino UNO. Podemos crear proyectos públicos o privados segun nuestra necesidad.

Antes de utilizar la placa Arduino, debemos descargar un conector que nos permitirá la comunicación entre la placa y Arduino Blocks. Podemos realizar la descarga desde el menú superior “Arduino Blocks Connector“.



Una vez descargado lo ejecutamos mientras tenemos la placa conectada a nuestro ordenador y seleccionamos el modo de comunicación USB en el desplegable de la parte superior derecha de Arduino Blocks. De esta manera ya podemos enviar el programa a nuestra placa.

Para trabajar con el módulo wifi ESP8266 vamos a utilitzar el protocolo MQTT, el cual viene integrado en Arduino Blocks. Su configuración será la siguiente:

  • RX = 2 TX =3 Baudios 9600 (todo esto lo hemos configurado de esta manera en la placa anteriormente).
  • WIFI RED = Nombre de la red wifi que nos vamos a conectar.
  • CLAVE = Contraseña de nuestra red wifi.
  • Broker = io.adafruit.com (es el servidor de adafruit)
  • Puerto = 1883 (puerto por defecto)
  • Cliente id = usuario de Adafruit (podeis poner cualquier identificador)
  • Usuario = usuario registrado en Adafruit (vigilar mayúsculas y minúsculas)
  • Clave = Key (accesible desde el menu de Adafruit “View AIO Key”)

El programa será el siguiente:

El programa consta de dos partes: iniciación del bloque MQTT que hemos configurado previamente, y la parte del bucle que es la lectura constante del sensor DHT-11 y su posterior envio a consola (serial port) y Adafruit.

La parte de envio a consola es simplemente para comprobar que la lectura es correcta por parte del sensor, ya que muchas veces, el envio via WIFI tiene cortes y de esta manera acotamos el problema.

Para publicar los datos en nuestro dashboard de Adafruit, debemos configurar correctamente estos bloques. En la parte de usuario debemos repetir el mismo usuario que tenemos en la cuenta de Adafruit, y en la parte de Feed Key el nombre que hemos asignado al tema (feed).

Una vez rellenados estos datos podemos enviar el programa a la placa Arduino y provar la comunicación.

El resultado en consola debería ser el siguiente:

Esto nos asegura que el sensor funciona correctamente. 👍

El resultado en el servidor de Adafruit debería ser el siguiente:

Podemos observar las lecturas de las dos variables en nuestro dashboard.

También podemos acceder desde un navegador via móvil y ver las lecturas.

En la segunda entrega del manual realizaremos la conexión bidireccional, es decir, controlar elementos de nuestra placa arduino desde la web.

coming soon…

¡Hasta la proxima! 😉

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *