En la entrada anterior quedamos pendientes de conocer los detalles técnicos de la conexión entre el Arduino y el módulo WiFi. Veamos cómo.
Conexión del módulo ESP8266 con Arduino
Una característica importante del módulo ESP8266 a tener en cuenta es su tensión de funcionamiento de 3.3 voltios (LVTTL), sin ningún tipo de tolerancia a tensiones superiores. Si utilizamos un Arduino tradicional, como el UNO, que trabaja a 5 voltios (TTL), es necesario realizar una adaptación de tensiones, tanto para la alimentación del módulo como para las líneas de comunicación entre ambos dispositivos.
Hay otros modelos de Arduino que trabajan a 3.3v como el MINI PRO 3v, el DUE, o el nuevo M0+, y pueden ser conectados directamente al módulo ESP8266 sin ningún tipo de adaptación. Incluso estos dos últimos pueden alimentarlo por su salida de 3.3v ya que proporcionan corriente suficiente para ello.
También es posible modificar el Arduino UNO para que funcione internamente a 3.3 voltios, pero siempre será mejor opción implementar una adaptación de niveles lógicos entre dispositivos de diferente tensión.
Resulta sencillo cuando se conectan dispositivos de lógica TTL 5v con dispositivos de lógica LVTTL 3.3v, porque son compatibles entre sí al establecerse los mismos valores de tensión para los niveles lógicos HIGH y LOW.
Solo es necesario implementar una limitación o reducción de tensión cuando el dispositivo LVTTL 3.3v no sea tolerante a 5v. No ocurre igual con conexiones I2C o SPI, las cuales requieren conversores bi-direccionales que eleven la tensión de 3.3v a 5v cuando la comunicación va en este sentido.
Hay varias formas de realizar la limitación de tensión de 5v a 3.3v: conversores de nivel bi-direccionales, limitadores de diodo zener, e incluso un simple divisor de tensión formado por dos resistencias.
Una forma poco usual, aunque de excelentes resultados, es utilizar un diodo Schottky en polarización inversa junto a una resistencia pull-up. De esta forma se consigue una conversión mucho más rápida y precisa, ideal para altas velocidades de transmisión.
Al utilizar un Arduino UNO es necesario adaptar obligatoriamente dos líneas de comunicación con el módulo ESP8266:
La línea de transmisión (TX) en teoría no necesitaría ninguna adaptación por tratarse de una línea de salida, pero es aconsejable incorporar un limitador de tensión. La razón es que esta línea se conectará con el RX0 del Arduino (Atmega328p), que a su vez está conectada con la línea de transmisión del conversor USB-Serie que trabaja a 5v, los cuales son suministrados cuando el conversor transmite, por ejemplo, al cargar un nuevo sketch.
Además de la adaptación en las líneas de comunicación, en necesario alimentar el módulo ESP8266 a 3.3 voltios con al menos 215mA de intensidad.En las especificaciones del Arduino UNO indican 50mA como intensidad máxima en su salida de 3.3 voltios. No obstante, este es un valor no actualizado desde las primeras versiones de Arduino USB que utilizaban un conversor USB-Serie de FTDI con estas características.
Los nuevos modelos de Arduino, como el UNO, incorporan como conversor USB-Serie un Atmega16U2, junto con un regulador lineal de 3.3 voltios LP2985-33 que es capaz de entregar hasta a 150mA de intensidad.
Es posible utilizar esta salida de 3.3v del Arduino UNO para alimentar el ESP8266 en las etapas de prueba, pero para un uso optimo y estable, es conveniente incorporar un regulador lineal de mayor capacidad.
El uso de las librerías espduino requiere que la comunicación serie con el módulo ESP8266 se realice a través de la UART hardware de Arduino "HardwareSerial" (TX0 y RX0).
Para la recepción y envío de mensajes de depuración a través de un terminal virtual, es necesario utilizar un conversor USB-Serie adicional como puerto SoftwareSerial.
Ahora que ya sabemos cómo conectarlo, veremos en la siguiente entrega cómo cargar el firmware al ESP8266 para poder utilizar la librería espduino desde Arduino y establecer la comunicación SLIP con el módulo ESP8266.
* Latch y el Internet de las Cosas: Integración con Arduino (I)
* Latch y el Internet de las Cosas: Integración con Arduino (II)
Conexión del módulo ESP8266 con Arduino
Una característica importante del módulo ESP8266 a tener en cuenta es su tensión de funcionamiento de 3.3 voltios (LVTTL), sin ningún tipo de tolerancia a tensiones superiores. Si utilizamos un Arduino tradicional, como el UNO, que trabaja a 5 voltios (TTL), es necesario realizar una adaptación de tensiones, tanto para la alimentación del módulo como para las líneas de comunicación entre ambos dispositivos.
Pinout del módulo ESP-01 |
Hay otros modelos de Arduino que trabajan a 3.3v como el MINI PRO 3v, el DUE, o el nuevo M0+, y pueden ser conectados directamente al módulo ESP8266 sin ningún tipo de adaptación. Incluso estos dos últimos pueden alimentarlo por su salida de 3.3v ya que proporcionan corriente suficiente para ello.
También es posible modificar el Arduino UNO para que funcione internamente a 3.3 voltios, pero siempre será mejor opción implementar una adaptación de niveles lógicos entre dispositivos de diferente tensión.
Resulta sencillo cuando se conectan dispositivos de lógica TTL 5v con dispositivos de lógica LVTTL 3.3v, porque son compatibles entre sí al establecerse los mismos valores de tensión para los niveles lógicos HIGH y LOW.
Solo es necesario implementar una limitación o reducción de tensión cuando el dispositivo LVTTL 3.3v no sea tolerante a 5v. No ocurre igual con conexiones I2C o SPI, las cuales requieren conversores bi-direccionales que eleven la tensión de 3.3v a 5v cuando la comunicación va en este sentido.
Niveles de tensión de diferentes familias lógicas |
Hay varias formas de realizar la limitación de tensión de 5v a 3.3v: conversores de nivel bi-direccionales, limitadores de diodo zener, e incluso un simple divisor de tensión formado por dos resistencias.
Una forma poco usual, aunque de excelentes resultados, es utilizar un diodo Schottky en polarización inversa junto a una resistencia pull-up. De esta forma se consigue una conversión mucho más rápida y precisa, ideal para altas velocidades de transmisión.
Respuesta de diferentes limitadores de tensión |
Al utilizar un Arduino UNO es necesario adaptar obligatoriamente dos líneas de comunicación con el módulo ESP8266:
- Línea de recepción (RX)
- Línea de selección de chip (CH_PD) "Power Down", obteniendo mejores resultados uniendo esta a la línea de reset (RST).
La línea de transmisión (TX) en teoría no necesitaría ninguna adaptación por tratarse de una línea de salida, pero es aconsejable incorporar un limitador de tensión. La razón es que esta línea se conectará con el RX0 del Arduino (Atmega328p), que a su vez está conectada con la línea de transmisión del conversor USB-Serie que trabaja a 5v, los cuales son suministrados cuando el conversor transmite, por ejemplo, al cargar un nuevo sketch.
Conexión interna del conversor USB-Serie |
Además de la adaptación en las líneas de comunicación, en necesario alimentar el módulo ESP8266 a 3.3 voltios con al menos 215mA de intensidad.En las especificaciones del Arduino UNO indican 50mA como intensidad máxima en su salida de 3.3 voltios. No obstante, este es un valor no actualizado desde las primeras versiones de Arduino USB que utilizaban un conversor USB-Serie de FTDI con estas características.
Los nuevos modelos de Arduino, como el UNO, incorporan como conversor USB-Serie un Atmega16U2, junto con un regulador lineal de 3.3 voltios LP2985-33 que es capaz de entregar hasta a 150mA de intensidad.
Es posible utilizar esta salida de 3.3v del Arduino UNO para alimentar el ESP8266 en las etapas de prueba, pero para un uso optimo y estable, es conveniente incorporar un regulador lineal de mayor capacidad.
Conexión de Arduino UNO y módulo ESP-01 en modo de funcionamiento normal |
El uso de las librerías espduino requiere que la comunicación serie con el módulo ESP8266 se realice a través de la UART hardware de Arduino "HardwareSerial" (TX0 y RX0).
Para la recepción y envío de mensajes de depuración a través de un terminal virtual, es necesario utilizar un conversor USB-Serie adicional como puerto SoftwareSerial.
Ahora que ya sabemos cómo conectarlo, veremos en la siguiente entrega cómo cargar el firmware al ESP8266 para poder utilizar la librería espduino desde Arduino y establecer la comunicación SLIP con el módulo ESP8266.
* Latch y el Internet de las Cosas: Integración con Arduino (I)
* Latch y el Internet de las Cosas: Integración con Arduino (II)
Jorge Rivera
jorge.rivera@11paths.com