¿Cómo Flashear el módulo ESP8266 WiFi?

Teniendo en nuestras manos un módulo nuevo ESP8266 WiFi para  Arduino y tras haber logrado conectarlo físicamente para darle vida, nos hemos puesto a probar los comandos AT desde el Monitor Serie del IDE de Arduino, y en una de esas el módulo ha quedado completamente brickeado o congelado. 

El comando en cuestión se cree que era AT+CIOBAUD=9600. Al ingresar esta instrucción, el módulo entra en un loop en el que no sale y se identifica porque, primero no ejecuta ninguna nueva orden AT, luego la luz azul del módulo queda encendida eternamente y aparecen a una gran velocidad letras y símbolos en la ventana del Monitor Serie.

Tras muchas horas de pruebas (un día entero para ser exacto) y mucha lectura, se ha logrado al fin traer de la tumba al módulo ESP8266.

Existen diversas herramientas para el flasheado de este módulo, una de ellas desde la página oficial del fabricante del módulo en https://www.espressif.com/en/support/download/other-tools, pero por mentira que parezca, es la herramienta que peor resultados o ninguna respuesta se logra tratando de restaurar el firmware del equipo. Otras dos son: NODEMCU Firmware Programer https://nodemcu.readthedocs.io/en/master/en/flash/ y https://github.com/nodemcu/nodemcu-flasher. y el finalmente salvador ESPTOOL vía pip Python (aunque el trabajo final de cargar el nuevo firmware lo hizo Nodemcu).

Antes que nada, hay que preparar el módulo ESP8266 para el flasheo del firmware. Para ello se debe conectar los pines GPIO0 y GPIO2 a Low o a GND del Arduino. En la oportunidad que se logró hacer funcionar el software de flasheo el pin TX del módulo ESP8266 se reconectó directo al pin TX del Arduino (normalmente este va haciendo puente con el divisor de voltaje en la protoboard). 

Un punto IMPORTANTE al momento de intentar flashear el módulo mediante el uso del software mencionado es que el Arduino debe primero desconectarse de toda fuente de poder, luego manteniendo presionado el botón de reset del Arduino proceder a arrancar el software o iniciar la función de "flash", luego con el programa ya corriendo se debe soltar el botón de reset para que este sea reconocido por el software. Es la ÚNICA FORMA que el software reconozca el puerto COM al que está conectado el Arduino. Tanto el puerto COM como el software deben estar configurados a 115200 baudios.

Una vez realizado el anterior proceso (cada vez que se intenta algo) se procede primero a BORRAR el firmware del ESP8266 con el software ESPTOOL vía Python. Una explicación bien clara se muestra en este video https://youtu.be/p4UGKRKYFCs. Previamente es conveniente tener Python instalado y corriendo desde cualquier instancia del CMD (configurando el ajuste PATH en el SISTEMA vía Panel de Control) https://youtu.be/BArhFr06nPM

ESPTOOL en Github https://github.com/espressif/esptool

Borrado del firmware mediante ESPTOOL en Python (cmd).
C:\Users\USUARIO\AppData\Local\Programs\Python\Python36\Scripts>esptool.py --port COM10 --baud 115200 erase_flash
esptool.py v2.3.1
Connecting........_____....._____.....__
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 2.6s
Hard resetting via RTS pin...

Grabado del paquete para firmware mediante el uso de ESPTOOL en Python (lastimosamente no dejó el módulo bien configurado por alguna extraña razón, puesto que de entrada parecía que funcionaba correctamente).
C:\Users\Santos\AppData\Local\Programs\Python\Python36\Scripts>esptool.py --port COM10 --baud 115200 write_flash -fm dio
 -fs 4MB 0xfe000 blank.bin
esptool.py v2.3.1
Connecting........_____....._____.....____
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Compressed 4096 bytes to 26...
Wrote 4096 bytes (26 compressed) at 0x000fe000 in 0.0 seconds (effective 2510.6 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Tras lograr borrar el firmware de nuestro módulo ESP8266 se procede a grabar el nuevo firmware mediante la utilización del software NODEMCU. De igual forma se debe proceder para lo de la reconexión del Arduino antes de cada prueba (retirar puerto USB y energía, mantener el botón de reset presionado, dejar correr la rutina del software y luego soltar el botón de reset).

Hay que grabar 4 archivos para que el módulo vuelva a su estado original, y dependiendo de la versión utilizada (en este caso la versión más actual SDK ESP8266 NONOS SDK V2.2.0 https://www.espressif.com/en/support/download/sdks-demos) los cuales se muestran su uso en el archivo ../bin/at/readme.md  

# BOOT MODE
## download
### Flash size 8Mbit: 512KB+512KB (utilizada 4MByte)
    boot_v1.2+.bin              0x00000
    user1.1024.new.2.bin        0x01000
    esp_init_data_default.bin   0xfc000 (optional)
    blank.bin                   0xfe000


Vuelta el módulo a la vida, se deben conectar los puerto GPIO0 y GPI2 a HIGH o 3.3v. Se pueden probar los comandos AT y el buen funcionamiento del módulo rescatado utilizando la herramienta ESPLORER que nos facilita la tarea de tener que escribir comandos AT desde el Monitor Serie del IDE de Arduino. https://esp8266.ru/esplorer/


!Felices flasheadas!


Lista de comandos AT para el módulo ESP2866
https://www.espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf









Comentarios

Entradas populares de este blog

¿Cómo desempaquetar una aplicación APK para editarla en SO Windows?