ESP8266 con display I2C

Objetivos

 

  • Presentar las placas adaptadores de protoboard para ESP8266.
  • Usar un ESP-07 o ESP-12E por primera vez.
  • Mostrar el modo de cablear un display I2C a un ESP8266.
  • Presentar un programa mínimo funcionando
  •  

    Material requerido.

    Protoboard 2 x Protoboard .
    conexiones Algunos cables de protoboard,
    ESP-12E ESP-07 Un módulo WIFI ESP8266  modelo ESP-12E o ESP-07.
    soldering plate Un placa soporte para ESP8266
    Vista frontal  Un adaptador FTDI a USB
    Fuente para protoboard  Una fuente de alimentación externa de 3.3V
    Display LCD 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:

    soldering plate

    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.

  • O un poco de imaginación. Os recomiendo una pinza de las de colgar la ropa, que son estrechas y os ayudara a mantener el chip en posición mientras lo soldáis con cuidadito.
  • Os prometo que soldar no es para tanto. Basta con tener un par de ideas claras:
  • Dejar que el soldador esté caliente con tranquilidad.
  • Usa el soldador para calentar el pin, no el estaño. Por increíble que te parezca, el soldador no es para fundir el estaño y pegar este al pin (Esto es una chapuza problemática)
  • No mantener más allá de 5 segundos el soldador tocando el pin. Piensa que puedes quemar el chip y hacerlo inservible.
  • Si no lo has hecho nunca es mejor que busques a un colega mañoso y ya está.
  •  

     

    El resultado es algo así:

    Adaptador para ESP

    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.

  • Por si nos habíais dado cuenta las muescas en los laterales de la protoboard son para colocar varias unidad en cascada. 
  •  

     

    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):

    Detalle de pines

    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.

    Detalle de conexionesEl cableado de control será parecido a esto:

    Esquema de cableado

    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.

  • Podéis probar las conexiones mediante Putty si queréis comprobar la comunicación. 
  •  

     

    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.

  • Cuidado con una cosa. El display de LCD es de 5V y tenéis que tener cuidado porque si le metes 3.3V funcionará pero se verá muy tenue. 
  •  

    Podemos conectar el display LCD asi:

    Detalle de cableado

    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:

     

    Prog_124_1

    #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

  • Presentamos los ESP8266 adapter plate, para maejar los ESPs desde protoboard
  • Vimos como cablear el adaptador para programar el chip interno mediante el IDE Arduino.
  • Mostramos como conectar un display I2C funcional a un modulo ESP-12E.
  •  

    Deja una respuesta