Como actualizar el firmware del ESP8266

En esta entrada vamos a ver como se puede actualizar el firmware del módulo ESP8266 ESP-01, aunque sirve el procedimiento sirve para cualquier otro que tenga el pin GPIO0 accesible (el ESP05 hay que hackearlo para actualizarlo, por ejemplo). Para ello necesitamos el software para hacer el upload del firmware y el firmware que queramos instalarle al módulo. Para Linux tenemos la herramienta esptool, que podemos descargar desde el siguiente repositorio git:

 

Tenemos también varios firmwares que le podemos instalar al módulo en función de lo que queremos hacer: el de nodeMCU, el de comandos AT, programas propios que podemos desarrollar con el SDK, etc.

El último firmware disponible de nodeMCU se puede descargar desde aquí, y en el momento de escribir estas lineas son este (con soporte punto flotante) y este (sin soporte punto flotante).

El firmware AT es algo más complicado de encontrar en un solo archivo bin. En el SDK del módulo se pueden encontrar varios archivos bin que hay que grabar en varias zonas de la flash, en lugar de un solo archivo como ocurre con el firmware nodeMCU. No es complicado hacerlo (cuando ya te has peleado bastante con él, pero para eso estoy yo aquí 🙂 ). El último SDK disponible lo podéis bajar desde la web de Espressif, aquí (en el epígrafe Announcements/Latest Release). Dentro del enlace podéis ver que se puede descargar un paquete con los binarios del firmware AT solo, o todo el SDK:

latest

Entrada en el foro de Espressif

Conexiones del módulo para actualizar el firmware

El esquema del conexiones del módulo ESP-01 es el siguiente:

ESP-01

Esquema del ESP-01

  • VCC: fuente de alimentación externa de 3.3v
  • GND: 0V de la fuente de alimentación externa, unida con GND del modulo USB serie.
  • CH_PD: Conectado a VCC para activar el módulo.
  • RST: Sin conectar (al aire)
  • GPIO0: Sin conectar o al aire para arranque en modo normal, a GND para grabar firmware.
  • GPIO2: Sin conectar (al aire)
  • UTXD: al pin RX del módulo USB-Serie
  • URXD: al pin TX del módulo USB-Serie, a través de un divisor de tensión para que al módulo ESP no le entren mas de 3.3v por este pin. El divisor de tensión que uso es el siguiente:
    divisor

    Divisor de tensión

     

Para entrar en modo upload de firmware, tenemos que desconectar el módulo de la alimentación, conectar el pin GPIO0 a GND, y volver a conectar la corriente. En ese momento ejecutamos el comando esptool.py y se actualiza el firmware. Después desconectamos el modulo de la alimentación, desconectamos el pin GPIO0 (lo dejamos al aire) y volvemos a conectar la alimentación para que arranque el firmware recién grabado.

Grabando el firmware nodeMCU

Para grabar el firmware en la flash del módulo, usamos el siguiente comando:

Donde:

  • –port /dev/ttyUSB0 indica el dispositivo USB en el que tenemos conectado el conversor USB-serie y el modulo ESP8266-01
  • write_flash es el comando para indicar que vamos a grabar un firmware en la memoria del dispositivo
  • 0x00000 nodemcu_float_0.9.6-dev_20150704.bin es la dirección base en la que vamos a grabar el fichero bin indicado. Puede haber una lista de parejas <direccion_base> <fichero_bin>, como ocurre para el firmware AT.

Grabando el firmware AT

En el caso del firmware AT, al descomprimir el fichero zip nos encontramos con la siguiente estructura de archivos:

atf

En el archivo readme.txt, nos indica las direcciones base, y los archivos bin que tenemos que grabar para instalar el firmware dependiendo del tamaño de la memoria flash que tenga el módulo, en mi caso, para el módulo ESP01 con flash de 4Mbit nos indica lo siguiente:

readme

Por lo que nos quedaría el siguiente comando:

Para probar este firmware podemos usar picocom, conectando a 115200 baudios:

Y con esto ¡ya tenemos nuestro módulo actualizado con el último firmware disponible!

 

Sin repuestas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *