ESP8266, módulo wifi ESP-01S

El módulo ESP-01S es la variante más común basada en el conocido SoC ESP8266EX de Espressif que integra los protocolos TCP/IP necesarios para la comunicación Wifi. Adelanto que este módulo nos va a dar muchos quebraderos de cabeza pero también es el que nos abre las puertas a internet inalámbrico pudiendo funcionar incluso como cliente y servidor web.

Su bajo precio y reducido consumo ha hecho que sea ampliamente utilizado en aplicaciones IoT (Internet of Things) como proyectos de redes domóticas y casas inteligentes;  con sólo conectarlo al router Wifi permite el control remoto de electrodomésticos, medidas de temperatura/humedad y en general control de dispositivos mediante el teléfono móvil.

Existen 2 versiones que se distinguen por el color de la placa: la primera, azul, dispone de 512 kB, y la segunda, negra, dispone de 1024 kB. Ambas disponen de 2 pines GPIO y un interfaz de comunicación serie que permite configurarlo mediante comandos AT.

Características ESP-01S:

  • Microcontrolador ESP8266EX
  • 1MB Flash Memory (según versión)
  • Antena incorporada
  • Alimentación:  3.0 a 3.6V
  • GPIO0, GPIO1(Tx ), GPIO2, GPIO3(Rx )

Características ESP8266EX:

  • MCU 32-bit 80 MHz (programable)
  • Comunicación serie 8N1 (115200 baudios)
  • Frecuencia de trabajo: 2.4GHz (2400 – 2484 MHz)
  • WiFi: 802.11 b/g/n
  • Wifi Direct (P2P), soft-AP, LNA, WPA/WPA2,…
  • Potencia salida: +19.5dBm (802.11b)
  • Consumo < 1.0mW (standby),  240mA (max)

La hoja de características se puede descargar de este enlace

Como vemos, el ESP01 incluye un microcontrolador mucho más potente que el propio Arduino, de hecho es posible programar este módulo y utilizarlo de forma independiente. En este artículo nos limitaremos a usarlo desde Arduino como módulo que le proporciona conectividad WiFi. En este sentido es muy similar al módulo Bluetooth que ya vimos en un artículo anterior.

La forma más simple de usar el módulo ESP8266 es comunicarse con él a través del puerto serie y manejarlo mediante los comandos AT (hayes) que tiene en su firmware.

Conexiones

Antes de realizar las conexiones hay que considerar lo siguiente:

  • El ESP8266 funciona a 3.3V y no tiene entradas tolerantes 5V, por lo que se necesita realizar una conversión de nivel para comunicarse con un microcontrolador a 5V como Arduino. También se puede utilizar una tarjeta adaptadora que algunos vendedores suministran junto al ESP-01S
  • Haciendo un uso intensivo del Wifi, el consumo puede superar los 200 mA, por tanto debe tener una alimentación independiente; no obstante para nuestros sketchs de ejemplo usamos la alimentación de Arduino (max 50mA)

Conectando ESP-01 a un convertidor USB-Serie

Estos convertidores USB/UART, también llamados USBtoTTL o simplemente FTDI son ampliamente utilizados para programar desde el ordenador dispositivos que se comunican mediante un puerto serie. Es una herramienta imprescindible para cualquier aficionado a programar microcontroladores. Recomiendo adquirir una versión con la posibilidad de funcionar a 5v y 3.3v pues cada vez son más los dispositivos que funcionan a 3.3v

Al conectar al puerto USB el convertidor basado en el chip FTDI FT232RL la instalación del controlador es automática en Windows 7, en otro caso o si usamos un convertidor basado en el chip CH340G debemos instalar manualmente los controladores correspondientes.

El pin TX (transmisión) de FTDI va conectado al RX (recibir) del módulo ESP-01 y viceversa, el RX del FTDI se conecta al TX del módulo.

IMPORTANTE: FTDI debe estar en modo 3.3v o dañaremos el ESP8266

Tras realizar las conexiones según muestra el esquema y conectarlo al PC el dispositivo recibe alimentación veremos entonces un destello azul del led incluido en el módulo y en nuestro teléfono móvil o portátil aparecerá una nueva conexión Wifi creada por nuestro módulo: “AI-THINKER_00FC23”.

Por fin  nuestro módulo da señales de vida, ahora el siguiente paso es configurarlo mediante comandos AT. Debemos usar un software de comunicación en serie como “PuTTY” o “Termite”, o mejor “Docklight” que permite enviar fácilmente líneas de comandos.

Abrimos el Docklight y configuramos el puerto COM donde Windows tiene asignado nuestro convertidor USB-Serie y ajustamos la velocidad de transmisión que a priori no sabemos cual es, así que tendremos que ir probando hasta obtener respuesta, en nuestro caso es 115200 bps. Esto es un problema cuando intentemos conectar el ESP01S al Arduino UNO, puesto que el puerto serie virtual no funciona bien a esta velocidad, así que aprovechamos ahora que lo tenemos conectado al FTDI para cambiar la velocidad mediante el comando “AT+UART_DEF=9600,8,1,0,0” (no olvidar los retorno de carro “<CR><LF>”)

Algunos comandos AT pueden cambiar de una versión a otra, si tenemos una versión demasiado antigua podemos actualizarla cambiando el firmware

En esta tabla vemos los comandos más básicos:

Comando AT
Descripción
Respuesta
AT
Test de comunicación
OK
AT+GMR
Versión del firmware

AT version:0.40.0.0(Aug 8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK

AT+RST
Reiniciar módulo

Ai-Thinker Technology Co.,Ltd.

ready

AT+CWLAP Lista los Access Points disponibles para conectarse.

AT+CWLAP:ecn,ssid,rssi,mac

  • ecn: codificación, puede ser:
    0 = Abierto
    1 = WEP
    2 = WPA PSK
    3 = WPA2 PSK
    4 = WPA WPA2 PSK
  • ssid: String que contiene el SSID del AP
  • rssi: Fuerza de la señal
  • mac: String que contiene la dirección MAC
AT+CWMODE=? Modo de operación
1 -> Cliente
2 -> Host
3 -> Cliente + Host
AT+CWJAP=
SSID“,”PASS
Conexión a red Wifi

WIFI CONNECTED
WIFI GOT IP

AT+CIFSR
Dirección IP local

+CIFSR:APIP,”192.168.1.4″
+CIFSR:APMAC,”62:01:94:00:fc:23″

Manual oficial de comandos AT en PDF para descargar o si prefieres el manual de referencia online en un enlace.

Si el módulo no responde a los comandos AT o simplemente queremos actualizar el set de comandos AT, debemos “flashearlo”, actualizando el firmware con la última versión del fabricante, para ello hay que iniciar el ESP8266 en “ModoFlash”, conectando el pin GPIO-0 a GND y el pin CH_PD a VCC (3.3v)

Enlaces donde descargar el programa para flashear

Conectando ESP-01 a Arduino UNO

Una vez configurado ESP01 con un “baud rate” de 9600 baudios podemos conectarlo directamente a Arduino, sin olvidar adaptar los niveles a 3.3v. Así quedaría el esquema:

Ejemplo1

Ahora con este sencillo sketch podemos enviar comandos AT a través del monitor serie.

Hay que asegurarse de que la ventana del monitor serie está correctamente configurada, en la parte inferior debemos ver seleccionados “NL&CR” y “9600 baudio”. Entonces veremos algo como esto:

 

Ejemplo2

En el siguiente ejemplo se configura el módulo como un sencillo servidor web que nos permite encender y apagar el led de arduino desde un navegador conectado a la red wifi.

Los comandos on/off se pasan por la url del navegador mediante la IP del host, de la forma http://192.168.0.172/led=0 para el led apagado y http://192.168.0.172/led=1 para el led encendido. En el navegador se muestra el estado del led.

Este era un ejemplo básico, obviamente con conocimientos más profundos de HTML y CSS se puede programar un entorno web más elaborado, incluso una app para dispositivos móviles.


Acceder a las funciones del ESP01 directamente mediante comandos AT puede convertirse en una tortura, mucho más práctico es usar una librería como ésta que nos ahorra la parte tediosa. Tras instalarla, aparecerán en el IDE unos programas de ejemplos que recomiendo probar,  si no funcionan necesitaremos actualizar nuestra versión del firmware.


Existen multitud de módulos que incluyen el chip ESP2286, hemos visto el ESP-01S, una versión ampliada y mejorada del módulo ESP-01  compatible con él, pero hay muchos más:

 

También te podría gustar...