Arduino y el chip ESP8266

por Ricardo Vega el 28/07/2016

El módulo ESP8266 es un módulo WiFi de bajo coste cada vez más común en instalaciones electrónicas caseras y que nos permite conectar nuestro Arduino al mundo exterior de una forma rápida, sencilla y sin cables.

No es la primera vez que en este blog conectamos nuestro Arduino a una red Ethernet desde la que enviamos información al mundo exterior (o la consumimos nosotros mismos). Para ello, hemos usado diferentes modos pero prácticamente en todos nos encontrábamos con el problema de tener que realizar la conexión físicamente vía cable.

Aunque teníamos una solución: comprar una shield WiFi. El problema es que teníamos que pagar por ella más de 50€ y claro, como que no nos salía a cuenta. Pero ya no tenemos que preocuparnos más, puesto que desde hace un tiempo tenemos disponible un nuevo componente que estoy seguro hará tus delicias si estás adentrándote en el mundo del Internet de las Cosas. Estoy hablando del módulo ESP8266.

ESP8266

Este módulo lo podemos comprar por incluso menos de 3 dólares y como te podrás imaginar, nos abre un nuevo mundo de posibilidades. El ESP8266 es realmente simple y es una sencilla puerta de entrada al IoT (Internet de las Cosas).

La conexión con un punto de acceso WiFi se lleva a cabo mediante comandos de texto AT a través del puerto serie y una vez establecida, se comunicará con él.

Si te has pegado alguna vez con conexiones de este tipo, estarás pensando ¿qué pasa con toda la gestión TCP/IP? ¿Cómo se realiza? La verdad que es una muy buena pregunta. Éste módulo ESP8266 limpia todo lo relativo al empaquetado TCP/IP enviando tan sólo la información directa. Este modo de trabajar tiene algunas desventajas en cuanto a enrutado o fiabilidad, pero sin duda trae asociada una mayor sencillez y una reducción drásticas de las necesidades de procesador y memoria (características ambas que nos vienen perfectas para usarlo junto con un Arduino).

Aunque en todo momento hablo de conectarlo a un Arduino, debes saber que podemos trabajar directamente con el módulo, conectando a éste sensores o receptores. Sin embargo, creo que para empezar con el ESP8266 es mejor hacerlo esclavo de un Arduino puesto que ya estamos familiarizados con el entorno.

ESP8266 y Arduino

Una vez conocemos para qué queremos este módulo, vamos a dedicar lo que nos queda de post a conectar un Arduino y dicho módulo ESP8266.

Pinout ESP8266

Para ello, lo primero que debes saber es que está alimentado a 3.3V. Arduino tiene una pin capaz de alimentar a este voltaje, pero el máximo voltaje que puede circular por este circuito es de 50mA. Desgraciadamente, en el arranque del módulo el consumo que el módulo demanda es superior por lo que, fácilmente si optamos por este modo de conexión, nos encontraremos con que el módulo no arranca y deberemos iniciarlo una y otra vez.

Dicho esto, te recomiendo usar una fuente de alimentación de 3.3V para evitar estos malos arranques que por un lado restan fiabilidad al módulo y por otro lo hacen sufrir pero, si no tienes un elemento de estas caracterísiticas, ya sabes que aunque no es recomendable, puedes acabar arrancando el módulo directamente con el pin 3.3V del Arduino.

Dicho esto, el resto del cableado lo puedes hacer como indica la siguiente imagen:

ESP8266 y Arduino

Una vez todo cableado, vamos a volcar el siguiente programa a nuestro Arduino:

#include <SoftwareSerial.h>
SoftwareSerial WIFI(3, 2); // RX y TX

int BAUDRATE 9600;

void setup() {
    Serial.begin(BAUDRATE);
    WIFI.begin(BAUDRATE);
}

void loop() {  
    if (WIFI.available()) {
      Serial.print(WIFI.read());
    }
    if (Serial.available()) {
      WIFI.print(Serial.read());
    }
}

Dicho programa se encargará, usando el módulo, de dos acciones:

  • transmitir por WiFi todo lo que escribamos usando la conexión serie
  • leer via la consola serie todo lo que reciba el módulo ESP8266.

Acuérdate también de fijar la comunicación en tu IDE a ese BAUDRATE (en mi caso 9600).

Baudrate Arduino

Existen módulos que vienen precargados de fábrica a otro Baudrate, si esto es así, te darás cuenta rápidamente puesto que verás caracteres extraños en la consola. En este caso, varía el BAUDRATE hasta encontrar el adecuado a tu módulo y vuelve a subir el código con el Baudrate corregido.

Deberás en todo caso observar un mensaje "ready" en la consola, indicando que lo tenemos configurado.

Vamos a empezar a escribir comandos AT para conectar el módulo a nuestro WiFi.

Conectando un ESP8266 a nuestra WiFi

Todos estos comandos los iremos escribiendo uno a uno en la terminal de la consola serie. En primer lugar, escribimos:

AT

Deberemos recibir un OK indicándonos que el módulo está listo para ser empleado.

Vamos ahora a establecer el modo 3 de funcionamiento que parece ser el más adecuado:

AT+CWMODE=3

¿Qué WiFis estamos recibiendo?

AT+CWLAP

Deberíamos encontrar la nuestra. Para conectarnos a ella escribimos:

AT+CWJAP="ricveal","password"

donde "ricveal" es el nombre de mi red y "password" la clave.

Si todo va bien, recibiremos un OK y ya podremos conocer la IP que tenemos asignada con:

AT+CIFSR

Por último, vamos a montar un pequeño servidor para que puedas empezar a mezclar el módulo ESP8266 con otros sensores que tengas:

AT+CIPMUX=1
AT+CIPSERVER=1,80

La primera instrucción nos permite múltiples conexiones simultáneas, mientras que la segunda arranca un servicio web (id=1) en el puerto 80.

Al abrir tu navegador web (Chrome, Firefox o el que quieras) y meter como URL la IP que tenemos asignada en el módulo, veremos como, por un lado, tenemos conexión y, por otro, en la consola nos sale la típica información correspondiente con una cabecera HTML.

A partir de este momento, puedes empezar tu mismo a cacharrear con el módulo. En próximos posts, entraremos más a fondo en algunas de las posibilidades que nos brinda.

Espero que te haya gustado este post. Si es así, por favor, acuérdate de compartirlo en redes sociales con tus seguidores y siéntete libre de dejar los comentarios que desees.

¡Nos vemos la próxima semana!

Apoya al blog


Si te ha gustado este artículo, valora apoyarme económicamente a través de Patreon, una plataforma de Micro-mecenazgo con la que puedes hacerme un donativo que ayude a la continuidad del blog. Una pequeña ayuda significa mucho. 😃

Deja tu comentario!

Permanezcamos en contacto!


¿Quieres enterarte de todas las novedades del sector? ¿Te gustaría trabajar conmigo? ¡Puedes contactar conmigo de forma muy sencilla!