¡IoT por todas partes! (o probando el módulo ESP8266, parte 1)

Esta vez damos un salto en nuestros proyectos y trasteos. Nos invade el Internet de las Cosas. El módulo ESP8266 del fabricante chino Espressif nos permite dar conectividad WIFI 802.11b/g/n a cualquier trasto que hagamos. Sí, y todo por 2,5€ puesto en casa. El módulo en sí puede funcionar como una simple pasarela serie-wifi si lo usamos con un Arduino, o como sistema independiente ya que se puede programar directamente, o mediante scripts en Lua.

De lo primero que nos damos cuenta cuando buscamos información sobre este módulo es la cantidad de versiones que existen del mismo:

all_esp_modules1esp 12

Los más usados son el ESP-01 y el ESP-12 (que es el que usa la placa NodeMCU). La diferencia entre unos y otros es básicamente el número de GPIOs (hasta 16) que están disponibles para su uso. Las características del chip las podéis ver aquí, y dejan al Arduino UNO o al Mega como un chiste malo: funciona a 80Mhz, tiene una memoria SPI de 512kB (hay versiones con 4MB), soporte IPv4, WPA y WPA2, SPI, I2C, PWM…

Las pegas: funciona a 3.3v y consume 200mA a pleno funcionamiento. ¿Qué significa esto? Pues que no se puede alimentar con un Arduino (necesitaremos alimentarlo separadamente) y también necesitaremos un conversor de niveles de 5v a 3.3v. No son problemas muy graves, ya que existen conversores de 5v a 3.3v como el AMS1117:

ams117

Conversor 5v a 3.3v AMS1117

Y también tenemos conversores de niveles como este de 4 canales:

level converter

Conversor de niveles

 

Además para programarlo necesitaremos un conversor serie-usb como en el caso de los Arduinos más básicos que use señales TX y RX a 3.3v. Vamos, que si queremos reducir el tamaño del proyecto necesitaremos el modulo y varios conversores o… el NodeMCU. ¿Qué es el NodeMCU? Pues es una de las versiones todo en uno que hay en el mercado que incluye el ESP8266-12 con el conversor serie-micro usb y el conversor de 3.3v para alimentar la placa (que sale por unos 7€ en ebay):

versiones NodeMCU

Versiones nueva y vieja del NodeMCU

Llegados a este punto yo me decantaría por la versión NodeMCU, que es conectar y listo. Con la versión ESP-01 tendríamos que montar algo así para empezar:

20150730_204830

Con el NodeMCU tendremos el mismo montaje pero ocupando una tercera parte de la protoboard de la imagen anterior. A pesar de todo le veo una ventaja indiscutible al modulo ESP-01: para meterlo en una caja es ideal ya que ocupa muy poco (menos que un modulo nrf24l01+). Imaginaos un sensor de temperatura wifi: con un ESP-01 es prácticamente trivial el montaje. O un enchufe radiocontrolado como veíamos en una entrada anterior reconvertido a enchufe wifi-controlado (alguien ya lo ha hecho, lo podéis ver aquí). Las posibilidades son ilimitadas. En mi caso me gustaría probarlo para controlar una electroválvula vía wifi en lugar de tener que usar un Arduino con un modulo ENC28J60 conectado a un PLC para que la señal llegue desde el ordenador hasta el lugar donde está instalada la electroválvula, pasaría de un coste de unos 28€ (Arduino+ENC28J60+PLC) a 7€ (NodeMCU) que es ¡cuatro veces menos! y ¡el montaje ocuparía muchísimo menos! Todo son ventajas (si tienes cobertura wifi :)).

Vale, todo esto está muy bien pero ¿cómo se le meten programas al ESP8266? No estamos en un blog que te venden el aparato y ya está, ¡queremos saber como funciona! ¡queremos conectarle cosas y ver lucecitas parpadeando! Si sí, a ello vamos. Con el NodeMCU es todo igual, y como lo complicado es conectar los módulos por separado vamos a hacerlo así: complicado.

Los materiales que necesitaremos son lo siguientes:

CantidadDescripciónCosteTienda
1Modulo Wifi ESP8266 012,38€Ebay
1Conversor DC-DC 5v a 3.3v0,60€Ebay
1Fuente de Alimentacion 5v2,96€Ebay
VariosCables para puentear1€
1 (opcional)Adaptador DC a protoboard3€Ebay
1Protoboard 2,05€
11,99€

Hacemos el siguiente montaje:

montaje basico ESP01

Montaje básico para probar el ESP01

Una vez lo tenemos todo conectado, recomiendo volver a comprobar todas las conexiones:

  • La alimentación del módulo ESP va a 3,3v,
  • Los pines RX y TX del módulo ESP van cruzados a los pines TX y RX del conversor serie USB,
  • Todas las conexiones GND están unidas.
  • Muy importante: El conversor serie-USB debe funcionar  a 3,3v y no a 5v como lo hacen la mayoría. Si no tenéis uno así compradlo, los hay bastante baratos. Incluso los hay que funcionan con los dos voltajes, cambiando un interruptor de posición, como es el caso del UartSBee que es el que yo suelo usar, y podeis ver en la imagen de arriba.

Una vez tenemos todo conectado, comprobado, y vuelto a comprobar, conectamos la fuente de alimentación de 5v y el cable USB al equipo. Ahora necesitamos un programa para interactuar con el puerto serie, se puede usar el que viene con el entorno de Arduino, putty, ESPlorer, o como me gusta a mi (difícil y espartano) el picocom:

Ejecutamos el siguiente comando y abrimos el terminal ttyUSB0:

La velocidad de funcionamiento suele ser 115200 o 9600, deberéis probar con las dos para ver a que velocidad esta configurado vuestro módulo.

picocom

No sale nada, ¿qué pasa? El módulo está a la espera de recibir comandos. ¿qué comandos? Pues comandos AT. Sí, retrocedemos 20 años y volvemos a configurar aparatos con comandos AT. El primero comando que podemos usar es AT+RST para resetear el módulo y ver que todo esta funcionando correctamente:

at rst

No os preocupéis si os aparece un montón de basura, es normal, y depende de la versión del firmware que tenga grabada el módulo. Para ello usamos el comando AT+GMR:

version fw

Vamos ahora con algo un poco más interesante: vamos a conectar nuestro módulo a una red wifi. Los comandos que usaremos son AT+CWMODE=1 para poner el módulo en modo cliente de un AP, AT+CWLAP para que el módulo nos muestre la lista de APs que están a su alcance, AT+CWJAP=”ssid”,”password” para unirlo a la wifi, AT+CIPSTATUS para comprobar el estado de la conexión, y AT+CIFSR para que nos muestre la dirección IP y MAC del módulo:

conexionB

Probamos a hacerle ping…

ping

Y ahí lo tenemos, nuestro módulo respondiendo a los pings que le hacemos desde un PC en la red… En las siguientes entradas configuraremos el módulo para actualizarle el firmware y haremos un pequeño programa para controlar una placa de reles que active y desactive un dispositivo conectado a 220v…

Espero que os haya gustado el ESP8266 y os animéis a echarle un vistazo, porque ¡tiene montones de posibilidades!

Comentarios

  1. Por Felipe Alonso

    Responder

    • Por José María

      Responder

  2. Por 0scar

    Responder

    • Por José María

      Responder

Deja un comentario

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