IOT con NodeMCU y módulo ESP


El módulo WiFi ESp8266 es un pequeño dispositivo compatible con Arduino que nos permite crear comunicaciones a través de nuestra red de casa. Es la opción más barata que podemos encontrar actualmente para crear nuestros propios proyectos relacionados con el “Internet of Things” o simplemente para introducirnos en el mundo de internet.

Existen varios modelos para poner a funcionar y entre ellos hay que seguir varios pasos para poder empezar a desarrollar gran variedad de proyectos.

Nodemcu

Durante nuestros cursos vamos a utilizar principalmente una nodemcu con una shield para conectar distintos pines para sensores para control y monitorización.

Curso IOT

Desde estos enlaces podremos acceder a los tutoriales para realizar nuestras primeras pruebas y utilizar nuestra plataforma habilitada para desarrollar facilmente nuestros programas con Blockly Nodemcu.

 

 

En esencia, todos los ESP se basan en el mismo módulo, por lo que si tenemos un módulo u otro vamos a poder realizar los mismos ejercicios.

 

Módulo ESP8266

 

Con un coste de 5 tenemos la opción de aprender cómo funciona la comunicación inalámbrica WiFi, pero no voy a hablar de su funcionamiento, sino de las dificultades asociadas a la hora de poner en práctica nuestro módulo.

En un post anterior, explicábamos las distintas maneras de conectar un dispositivo con una comunicación por puerto serial. El más fácil es la comunicación usando la librería SoftwareSerial si solo disponemos de una Arduino UNO (mi preferida es utilizar una MEGA), pero éste módulo concreto presenta una problemática que puede llegar a dar dolores de cabeza.

Éste módulo WiFi tiene instalado un firmware que van actualizando en la página del fabricante. Y a la hora de comprar estos dispositivos desde china vienen con una versión antigua que curiosamente dá fallos en la comunicación con SoftwareSerial.

Si solo se dispone de una Arduino UNO, no se disponen de opciones cómodas para acceder a la comunicación por comandos AT, por lo que habilitar esta opción de crear una comunicación con la librería SoftwareSerial es indispensable.

Para ello vamos a instalar un nuevo firmware dentro del módulo y a él de una manera más cómoda. Incluso si desconfiguramos el dispositivo podemos restaurar la versión para poder seguir utilizándolo.

Para realizar este proceso necesitamos descargar un bootloader escrito en python para el ESP8266 llamado esptool.

Este bootloader lo que hace es escribir alguna de las versiones .bin publicadas en la siguiente carpeta. Dentro de la carpeta de olds están los binarios de las versiones antiguas y la que vamos a instalar es la V0018000902.

Ahora conectamos el ESP8266 a la placa Arduino a 3.3V

  • GPIO0 a GND
  • CH_PD conectada al voltaje a través de una resistencia de 2K2
  • UTXD a el RX del Arduino (pin0)
  • URXD a el TX del Arduino (pin1)

ESP8266_pinESP8266Pinout


Una vez descargado el archivo de la aplicación, se debe descomprimir y copiar el firmware dentro de la misma carpeta.

Desde una terminal de Linux escribimos lo siguiente:

 

1
sudo ./esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash 0x000000 v0.9.2.2ATFirmware.bin

 

Con esta instrucción se ejecuta el programa de python, se escribe el puerto desde el que hemos conectado nuestra conexión serie y establecemos la comunicación a 115200 baudios. Después solo tendremos que añadir el binario del firmware a flashear.

Si se ha realizado bien, aparecerá un mensaje como el siguiente:

  • Connecting
  • Erasing flash

Tardará unos 5 minutos  y una vez finalizado el proceso podremos crear la conexión SoftwareSerial, que es una evolución dentro de las comunicaciones de este tipo.

 

Por si ocurriera algún problema, debido a las versiones, también se pueden utilizar las siguientes instrucciones.

1
sudo python esptool.py --port /dev/ttyACM0 --baud 115200 write_flash 0x000000 "v0.9.2.2ATFirmware.bin"

Acordarse también de instalar el módulo de python-serial

1
sudo apt-get install python-serial