Objetivos
Material requerido.
2 x Protoboard . | |
Algunos cables de protoboard, | |
Un módulo WIFI ESP8266 modelo ESP-12E o ESP-07. | |
Un placa soporte para ESP8266 | |
Un adaptador FTDI a USB | |
Una fuente de alimentación externa de 3.3V | |
Un display I2C del tipo 16×02 |
Mas sobre WIFI ESP8266
El módulo ESP8266 esta ganado en sus diferentes variedades una popularidad impresionante en Internet estos días, y no es sorprendente, ya que une algunas características envidiables, como son un completo sistema WIFI incluido más un potente procesador SOC (System On Chip) y un precio imbatible, apenas unos pocos euros
Por si esto fuera poco, un grupo de voluntarios han desarrollado un pluggin para poderlo programar con el familiar y confortable lenguaje y modelo Arduino, lo que nos abre la puerta a innumerables posibilidades para incluir comunicaciones inalámbricas en nuestros proyectos (una aspiración que alcanza niveles de obsesión en esta humilde casa)
Pero siguiendo la tradición de los productos chinos, la documentación es escasa, confusa y hasta contradictoria por lo que los foros de Internet están plagados de tutoriales e historias sobre el ESP8266 de los que en su mayor parte solo se saca información dispersa de difícil encaje y un buen dolor de cabeza.
Además la popularidad del módulo ha hecho que salgan un número inabordable de módulos, placas y productos varios que lo incluyen, de modo que lo que vale para un módulo no sirve para otro y al final, el resultado es un pequeño follón del que resulta difícil sacar información o ejemplos útiles
Y por eso, porque hay que dedicar un numero indecente de tiempo a tratar de encontrar información útil sobre estos módulos, con muy escasos resultados, lo que pretendemos con este sencillo tutorial, es empezar lo que nos gustaría fuera una serie de tutoriales básicos, que puedan ayudar a conocer un poco mejor las posibilidades de este popular ESP8266.
¿De cuál de ellos? Preguntará más de uno con mucha razón.
Vale, dejemos esto claro de una vez por todas. Todos los ESP8266 comparten un chip único, sin excepción, pero luego como vimos en el capítulo previo, hay fabricantes que los montan en diferentes placas con diferente número de pines y hasta rodeados de diferente hardware de comunicaciones, lo que hace aún más confusa la situación.
Por eso y aunque hasta ahora en todos los ejemplos que hemos usado en Prometec.net hemos empleado un ESP8266-01, el más sencillo y el que dispone menos pines a usar, a partir de ahora utilizaremos un ESP8266-07 y un ES8266-12E.
Los motivos son varios en primer lugar porque tienen más pines, en concreto el ESP-12E tiene 16 pines digitales disponibles y el ESp-07 tiene alguno menos, pero dispone de un conector para antena WIFI y eso para mí es importante, porque mi WIFI llega a duras penas a mi despacho y la antena ayuda (Y mucho) Por lo demás y si no tenéis problema de número de pines disponibles son módulos equivalentes.
Además como toda la familia del ESP es incompatible con el espaciado de las protoboard, por lo que voy a utilizar una placa de montaje para soldar el chip original a una base con patillas compatibles con las protoboard (Pero con sus propias historias como veremos luego)
Y por último vamos a sacar un mensaje en un display LCD de 16×02 I2C, porque todo lo que visto por Internet al respecto me ha parecido un follon de campeonato.
Preparando la placa soporte
Los ESP8266 como el ESP-12E y ESP-07 son imposibles de manejar directamente porque están pensados como chips SMD (Surface Mountig Device) para soldarse directamente a la superficie de una placa de circuito impreso. Por eso necesitamos soldarlos a una base con pines como esta, para manejarlos con comodidad:
Podéis encontrar este soporte junto con los pines necesarios en nuestra tienda, pero no he encontrado ningún proveedor que nos los venda con los chips soldados, así que al final hay que tirar de soldador (Si, ya sé que es algo que aterra a muchos, pero al final en la electrónica hay que hacerlo con cierta frecuencia, y no es para tanto)
Los pines laterales no ofrecen dificultad, pero para mantener alineado el chip ESP8266 requiere un poco más de habilidad.
El resultado es algo así:
Una vez que tengáis el chip soldado a la placa y soldéis los pines laterales, quizás penséis, que el resultado se puede insertar en una protoboard. Pero no. Parecéis nuevos, sería demasiado fácil.
Se puede montar en una protoboard, pero es demasiado ancho y no tenemos posibilidad de pinchar los cables habituales, por lo que necesitamos dos protoboard unidas.
Cableando el soporte
Lo primero aquí tenéis el nombre y la distribución de los pines del soporte (Porque si os pasa como a mí, que esas letrajas no las leo ni con gafas):
Fijaros que los pines no son para nada correlativos, muy al contrario parecen presentar una distribución bastante anárquica y es clave que os aseguréis que las conexiones que vamos a hacer sean las correctas.
Ahora vamos a usar un típico adaptador de USB a UART o puerta serie, para poder comunicarnos con el módulo ESP, que usaremos para comunicarnos entre el modulo y nuestro PC, mediante USB.
El cableado de control será parecido a esto:
Es una variante de la conexión que vimos en anteriores capítulos para conectar el adaptador USB al módulo ESP-01, Pero necesitamos GPIO2 a 3.3V.
Recordad que para flashear el firmware y creo que hasta para cargar programas que nos interesen, el pin GPIO15 tiene que ir a GND.
Como siempre con los ESP8266 recordad que el USB no tiene potencia suficiente para alimentarlo, Tenéis que usar una fuente externa de protoboard o similar y por eso he dejado al aire los pines del adaptador de 3.3 y 5V, pero en cambio es imprescindible conectar el GND
Con esto ya tenemos dispuesta la capacidad de programar y comunicarnos con el módulo ESP8266 y ahora solo falta poner en marcha el circuito que queramos.
Conectando un display I2C
Conectar el display I2C es trivial, a pesar de lo complicado que parece si buscas en Internet. Basta con tener claros cual son los pines de control del I2C:
I2C | ESP8266 |
---|---|
SCL | GPIO5 |
SDA | GPIO4 |
VCC | 5 V |
GND | GND |
No tiene más misterio. Prueba a conectar un típico display I2C de 16×02 y funcionará a la primera.
Podemos conectar el display LCD asi:
Y eso es todo. Con este montaje podemos programar el procesador interno, con un programa Arduino, por ejemplo y modificar el firmware. Y naturalmente aún tenemos unos cuantos pines digitales disponibles y uno analógico (Ya hablaremos)
El programa de control
Pues no tiene mucho mérito. Voy a usar el mismo programa que usamos en su día para mostrar el uso de estos displays I2C con la librería LiquidCrystal_I2C, con la pequeña variante sacar un contador en el display:
#include <Wire.h> #include <LCD.h> #include <LiquidCrystal_I2C.h> #define I2C_ADDR 0x27 LiquidCrystal_I2C lcd(I2C_ADDR,2, 1, 0, 4, 5, 6, 7); void setup() { lcd.begin (16,2); // Inicializar el display con 16 caraceres 2 lineas lcd.setBacklightPin(3,POSITIVE); lcd.setBacklight(HIGH); lcd.home (); // go home lcd.print("Prometec.net"); } void loop() { for (int i = 1 ; i<255 ; i++) { lcd.setCursor ( 0, 1 ); lcd.print(i) ; lcd.print(" "); delay (350); } }
Aquí os dejo un vídeo con el montaje final (No os dejéis asustar por el montón de cablecitos)
Resumen de la sesión
<