La pasada semana, intentando realizar diversas pruebas con mi Wemos D1 Mini PRO, me llevé un buen susto… Tras cargar diversas versiones de sketches que prometían cargar y leer datos en la EEPROM, me apareció un mensaje de error del tipo:
warning: espcomm_send_command: didn't receive command response warning: espcomm_send_command(FLASH_DOWNLOAD_BEGIN) failed closing bootloader flush start setting serial port timeouts to 1 ms setting serial port timeouts to 1000 ms flush complete error: espcomm_upload_mem failed
Tras esto, por mucho que intentase cargar cualquier skecth, por sencillo que fuera (incluso el básico blink), me fue imposible, siempre aparece el mismo error… Por lo tanto, llegué a la conclusión de que lo había brickeado…
Por suerte no fue así… pero me llevé un buen susto. Todo apuntaba a un problema de memoria o conexión serie…
Si habéis sufrido este error (el indicado mas arriba), intentad hacer lo que yo hice (ojo, sirve para cualquier ESP8266):
- Conectar con usb al pc (Linux o Windows)
- Arrancad el Arduino IDE (no uséis el Code Online!) y verificad que podéis conectaros a la placa, seleccionando modelo y puerto (el sistema debería haberlo reconocido en cuanto lo conectasteis)
- Abrid el monitor serie, y conectaros a 115200 bps
- En la pantalla del monitor debería aparecer “algo de basura” (ya sabéis, código raros)
- Realizad varios reset en el Wemos, y observad qué sucede en la pantalla del monitor serie, debería ir saliendo “basura”, a demás de que el led integrado irá parpadeando en cada uno de ellos…
- Ahora intentad bajar la velocidad de la conexión, y comprobad que todo sigue siendo igual (es probable que en algún momento veáis por pantalla algún mensaje de versión del chipset y último flasheado, por ejemplo, cosa que es normal…)
Si habéis llegado al punto 5 / 6 sin problemas, podemos decir que, al menos, la comunicación con nuestro chip con el serial del pc es correcto, y esto ya es mucho. Nuestro ESP8266 parece que no está brickeado…
Ahora, para hacer un reset de la memoria flash, que es la que se ha “degenerado”, hay que proceder de este modo.
Validar la comunicación con el sistema:
- Validar que la velocidad del puerto configurada en nuestro IDE (normalmente 115200) es la misma que la que el sistema suministra en el puerto al que estamos conectados
- Una vez validada, si había discordancia entre ambas partes, desconectad el Wemos del PC y volvedlo a conectar
- Probad a cargar de nuevo el scketch
Si esto no funciona, deberemos hacer un “reset” de la memoria en tiempo de carga… para esto, procederemos del siguiente modo:
- Desconectar la placa de la alimentación o cable USB
- Conectar GPIO0 (D3) a GND
- Conectar SS (D8) a GND
- Conectar el cable USB
- Lanzar de nuevo la carga del scketch
De este modo lo que hemos hecho ha sido hacer un reset de la EEPROM de flasheo, y renovar su contenido por la “fuerza bruta”…
Con esto, espero que os haya cargado, esta vez si, el scketch de manera satisfatoria y por fin hayáis podido “revivir” vuestro Wemos…
Un saludo, y suerte!
Jordi