Modificando el firmware ESP8266

Objetivos

 

  • Conectar el ESP8266 a nuestro PC mediante un adaptador FTDI a USB.
  • Mostrar el diagrama de conexiones para controlar el ESP8266 y para Actualizarlo.
  • Probar los comandos AT directamente con PUTTY.
  • Actualizar el módulo WIFI ESP8266 con un nuevo Firmware.
  •  

    Material requerido.

     

    Vista frontal  Un ESP8266 01
    Vista frontal Un adaptador USB a FTDI
    Cables Dupont Macho-Hembra Cables Dupont Macho-Hembra

     

    Mas sobre WIFI y ESP8266

     

    No cabe duda de que el módulo ESP8266 WIFI, es uno de los que más interés despiertan en nuestros amables lectores. No solo es barato y nos permite conectar nuestros Arduinos (Entre otros micro controladores) a la red WIFI, sino que además es razonablemente sencillo.

    Buena parte de las consultas que recibimos en Prometec.net se refieren a este magnífico módulo, y por eso vamos a tratar de ampliar un poco la información que presentamos en tutoriales previos, cubriendo algunos temas que inicialmente no nos atrevimos, pero en vista del interés que el ESP8266 despierta, vamos a entrar en algunas cuestiones más técnicas, con las que esperamos no abusar de la paciencia de nuestros sufridos seguidores.

    En sesiones anteriores vimos la forma de conectar el ESP8266 a nuestros Arduinos y también, ejemplos de cómo programar le modulo mediante comandos AT, para realizar toda una colección de procedimientos relacionados con la conexión a nuestras WIFIs.

    Pero es importante que sepáis, que este módulo nos es simplemente un dispositivo WIFI, sino que es un completo SOC (Sistem On Chip) o lo que es lo mismo que incluye un procesador completo además del stack TCPIP y el interface WIFI, cuya potencia es algo inferior al de un Arduino UNO, pero que tiene la enorme virtud de estar incluido en un todo en uno, en este chip. [one-fourth]  [/one-fourth][three-fourth last][margin value=»5″ /][fancy-ul style=»rounded-tick»] [three-fourth last][margin value=»5″ /][fancy-ul style=»rounded-tick»]

  • De hecho, tenemos previsto montar una sesión específica, para ver como programar directamente el SOC del ESP8266 para ahórranos el Arduino en ciertos casos (Que nos perdone san Máximo Banzi). 
  •  

    Por eso no debería sorprendernos el hecho de que podemos reprogramar el Firmware básico de este módulo, bien para corregir errores, añadir nuevas prestaciones, porque como iremos viendo hay bastantes modelos de ESP8266 y no solo el que estamos acostumbrados, e iremos hablando un poco de todo ello en futuras sesiones.

    Pero para empezar conviene que veamos el procedimiento general de actualizar el firmware y las conexiones precisas porque nos va a servir  para más de una cosa en el futuro.

     

    Consideraciones previas a la actualización

     

    Ya hemos comentado que hay varias razones por las que puede interesarnos reinstalar el firmware del módulo WIFI ESP8266.

  • Instalar una versión más reciente del mismo.
  • Corregir diferentes errores.
  • Asegurarnos de que el modulo funciona correctamente
  •  

    Esto no quiere decir que debas flashear el Firmware porque no consigues comunicarte con el modulo las primeras veces que lo usas. Lo más probable es que no sea necesario y tengas un problema de cualquier otro tipo.Tened en cuenta que actualizar el firmware de un sistema electrónico es siempre una operación de riesgo, y es imprescindible que tengas claro lo que estáis haciendo y porque.

    No quisiera ser el responsable de la muerte prematura de varias docenas de módulos ESP8266, por incluir aquí un tutorial de como instalar un nuevo firmware. Así que antes de empezar, vamos a hacer unas cuantas consideraciones previas:

  • Si tienes dudas no lo hagas. Puedes dañar irreparablemente tu módulo WIFI.
  • Si a pesar de todo quieres seguir, no instales nuevo Firmware si no tienes claro lo que esperas conseguir.
  • Si pones en marcha la instalación de un nuevo firmware, ten en cuenta que el proceso no se puede interrumpir hasta que termine él solito.
  • Si lo interrumpes por cualquier motivo o se te va la luz en el proceso, casi seguro que te puedes despedir del módulo ESP8266. Son baratos, pero tampoco es cuestión de quemarlos a lo tonto.
  • Si aún no he conseguido meterte miedo en el cuerpo, ya estás listo para seguir leyendo 
  •  

    Para efectuar la actualización del Firmware vamos a necesitar varias cosas, que tenemos que conseguir previamente. En primer lugar un programa para gestionar el envió del Firmware al módulo.

    Yo voy a usar (Por diferentes razones) el aparentemente, programa oficial, llamado ESP8266_flasher que podéis descargar de aquí, Aunque hay más programadores que podéis usar como por ejemplo el XTCOM_UTIL (Pero que a mí no me sirve por el FTDI que uso usa el COM15 y este XTCOM solo acepta hasta el COM6).

    También necesitaremos el binario del firmware que queremos volcar a nuestro ESP8266, La descarga de mas arriba incluye la version 0.9.2.2 pero podéis conseguir versiones mas actualizadas aquí. Y por último vamos a necesitar usar un adaptador FTDI a USB para conectar nuestro modulo al PC y lanzar la actualización. Empecemos con las conexiones

     

    Conexión del ESP8266 al FTDI

     

    Para programa el modulo tenemos que conectarlo a un PC desde el que volcarle el Firmware, y la manera más sencilla es usar un adaptador FTDI a USB, que podéis conseguir por muy poco dinero en la red. Vista frontal El que yo he usado no es este exactamente, pero tanto da, porque lo de menos es el modelo exacto. Lo que necesitamos es simplemente un modo de convertir USB a puerta serie que podamos inyectar en el ESP8266. Podéis utilizar cualquiera que tengáis disponible y adaptar los pines, porque el nombre será el mismo aunque la distribución de pines sea diferente. Para poder Flashear el módulo necesitáis hacer dos cosas:

  • Poner GPIO0 a LOW (Selecciona el modo FLASH)
  • Poner CH_PD a HIGH (Es el module select) [/fancy-ul] [/three-fourth]
  •  

    Y con eso el módulo está listo. El resto consiste en conectar RXD y TXD cruzados entre el ESP8266 y el adaptador FTDI, y conectar GND y VCC, que recordad es de 3,3V Por eso, para reprogramar la memoria Flash del módulo, vamos a hacer las conexiones así: Conetando modulo wifi a USB Y si simplemente queremos usarlo desde el PC, las conexiones son las mismas con excepción de que dejamos al aire la patilla GPIO0. Volveremos a conectarlo mas adelante. Como hay que conectar a GND y VCC mas de un cable, vais a necesitar una protoboard para hacer los empalmes, no se puede hacer tan bonito como veis arriba (La vida es dura)

    Cuando conectéis el USB FTDI a vuestro PC os levantara una puerta serie. Necesitamos saber cuál es para indicárselo al programa de volcado. Para ello si estáis en Windows podéis hacer: INICIO\Equipo\Botón derecho\Administrar Boton de inicio Y podréis ver en administrador de dispositivos / Puertos (COM y LPT) el número de puerto asignado, en mi caso COM15:  

    Administrador de dispositivos

    Probando el módulo ESP8266

     

    Una de las cosas que más dolores de cabeza parece producir con este módulo WIFI, es acertar con la velocidad de comunicación adecuada. Con mucha frecuencia recibimos consultas acerca de que solo pueden ver basura cuando te conectas a él y nos preguntan que hacer.

    Tenéis que entender que a priori no sabemos cuál es la velocidad a la que el modulo viene programado. Según el manual es de fábrica a 9.600 baud, pero me consta que esto varía bastante. Por ejemplo sé que algunos módulos vienen a 115.200 baud y alguno me he encontrado a 38.400.

    Así que es mejor no fiarte y probar todas la posible velocidades antes de dar por supuesto nada y este montaje que os planteamos aquí es ideal para ir probando las velocidades de transmisión con otro viejo conocido nuestro: PUTTY. Confugracion FDTI serie

  • IMPORTANTE Antes de nada, para probar la comunicación serie tenéis que aseguraros de que vuestro módulo ESP8266 está en condiciones de escuchar la puerta serie, y para eso aseguraros de que habéis desconectado el GND del pin GPIO0, si lo dejáis conectado, no os escuchará. [/fancy-ul] [/three-fourth]
  •  

    Poned vuestra puerta COM e ir variando la velocidad, desde 115200, 57600, 38400, 19200,9600, 4800, 2400, 1200, e intentad la comunicación. Seguro de que con una lo lograréis y basta con que escribáis AT por ejemplo para que veáis que hay contacto:

    Comunicacion con FTDI y ESP8266 Si lo que leéis es basurilla o chinitos variados, probad con la siguiente velocidad tranquilamente, (No vais a estropear el módulo así, tranquilos) Después podéis ir probando los comandos que consideréis, pero de esto modo tan sencillo podéis comprobar el módulo WIFI sin arrancar Arduino siquiera, solo necesitáis el adaptador FTDI a USB.

    Podéis probar todos los comandos que vimos en las sesiones anteriores, pero recordad también que los cambios de firmware pueden afectar a la sintaxis de los comandos.

     

    Actualizando el Firmware

     

    Ya vimos antes que el flasher incluye el firmware 0.9.2.2, que podemos instalar en nuestros módulos o podemos haber descargado las nuevas versiones. En ambos caso disponemos de un fichero con extensión bin que podemos volcar a nuestro módulo ESP8266 En el momento actual la nueva versión es la 9.5.0 AT, pero de todos modos con el ESP8266_flasher viene incluido la versión 0.9.2 del firmware por si no encontráis otra, y con esto ya podemos pasar a ejecutar el Flasher.

    Cuando arrancáis el programa os aparece esta pantalla, que deberéis rellenar con vuestra información. Configuracion basica Con el botón BIN, elegís el firmware que queréis volcar (El fichero que habéis descargado)y en mi caso le indico que tengo el Adaptador en la puerta COM15. Pulsad el botón de Download y recibireis una serie de mensajes que indican que está volcando el firmware al módulo:

    Volcando el nuevo firmware Si no hay errores mayores, cuando finalice, vuestro ESP8266 tendrá instalada la nueva versión de firmwareque le habéis volcado.

  • A mí siempre me da un error final que dice que no puede salir del modo FLASH, pero me funciona correctamente y por lo qué he leído por Internet parece normal.
  • Parece que el error significa que no puede salir del modo FLASH porque tenemos conectado a LOW el pin GPIO0 y eso le fuerza a estar en el modo de programación. 
  •  

    Si por la razón que sea, no os permite actualizar el firmware o si a pesar de que os lo permite vuestro ESP8266 sigue comportándose raro, hay una segunda dirección de seguridad para instalar el firm, en la dirección 0x40000080 en lugar de la 0x00000, pero no me preguntéis que significa esto.

  • Aunque en mi caso ha conseguido recuperar un módulo ESP8266 que ya daba por perdido, porque no se avenía a razones de ningún modo. Así que si la situación es lo suficientemente desesperado puedes probarlo. [/fancy-ul] [/three-fourth]
  •  

     

    Resumen de la sesión

     

  • Hemos visto como conectar el ESP8266 a nuestro PC mediante un adaptador FTDI a USB, para probar los comandos AT el módulo directamente.
  • Usamos Putty para probar esos comandos sin necesidad de Arduino.
  • También vimos como conectar el adaptador para permitirnos actualizar el firmware del módulo WIFI.
  •  
     

    Deja una respuesta