bclose

Modificando el firmware ESP8266

Reprogramando el software de base del módulo WIFI

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.

Protoboard Una Protoboard .
conexiones Algunos cables de protoboard, preferiblemente Dupont macho/hembra.
Vista frontal  Un módulo WIFI ESP8266
Vista frontal  Un adaptador FTDI a USB
Fuente para protoboard  Quizas una fuente de alimentación externa de 3.3V si fuera necesario
tienda online prometec

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.

 
  • 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 podeis conseguir versionas 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)  

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á.  

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.  

 

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.

 
 
 

 

 

(71) Comments

  • Hola

    Quisiera flashear el ESP8266-01 y meterle un firmware para que trabajara de forma independiente del arduino, pero no he encontrado ese firmware. ¿Has conseguido utilizarlo sin arduino?

    Gracias.

    • Forumisto

    Hola

    ¿sabes como viene configurado el módulo del enlace?

    http://www.ebay.es/itm/5V-Wifi-Relay-Module-ESP8266-TOI-APP-Controled-For-Smart-Home-Automation-Board/302155052825?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649

    consta de:
    -placa con relé y adaptador para el esp8266-01
    – esp8266-01

    he pedido uno, y mucho me tengo que voy a tener que reprogramarlo

    gracias

    • Siento decirte que no he usado estos modulos

    • David

    Hola
    Dos días y no consigo que funcione. He probado 3 modulos wifi en un arduino mega y nano y llego hasta el comando AT+CWJAP. Siempre me da ERROR en las dos redes a las que me puedo conectar. Visto esto, he intentado actualizar el firmware pero al conectar con el Putty llego a poder escribir AT pero al presionar enter, el cursor vuelve al principio de linea y no hace nada. He probado todas las velocidades y varios módulos y nada, lo mismo. También he probado otra consola (Tera Term) y no he conseguido nada
    Alguna idea?

    • Hola David, si ha sprobado dos modulos y nada tiene que haber algo mas, es poco probable que los dos esten dañados, pero no se que decirte sin probarlo

    • Paco

    Hola, Últimamente me ha dado por hacer proyectos con el ESP-01, anteriormente ya había trabajado con estos módulos y funcionaban perfecto y los deje por algún tiempo, el problema es que ahora funcionan de manera extraña he revisado el conexionado una y otra vez y nada, estoy trabajando con el ide de arduino y un modulo serial-usb los programas se cargan perfectamente desconecto el modo programación pero a la hora de que se ejecutan el modulo no hace lo que debería y la luz roja del indicador del modulo se hace mas tenue y se calienta, he notado que en el puerto serial manda basurilla pero estoy seguro que esa es la velocidad correcta por que ya había trabajado con esos módulos antes, de echo probé con tres módulos y todos hacen lo mismo de echo son nuevos (solo los tenia guardados), tengo la ligera sospecha de que de alguna forma se desprogramaron del firmare original y por eso el interprete de arduino no reconoce los comandos, estoy pensando en reflashearlo, alguna recomendación.

    • Hola PAco, He tenido que reflashear mas de uno de estos modulos debido a comportamientos extraños y en todos los casos se corrigieron los problemas

    • Pablo

    hola, buena información, solo que ya no existe la carpeta que mencionas donde vendría el firmware actualizado, saludos

  • Hola, gracias por el tutorial, está perfectamente explicado…
    Quería hacerte una pregunta porque no se que sucede… he actualizado el firmware del ESP a la versión que proporcionas en el link que incluye el programa para flashearlo. El caso es que todo ok y estoy conectado a trvés de un FTDI al PC 115200 baudios, escribo AT y devuelve OK, pero prácticamente todos los comandos me devuelven ERROR. No puedo cambiar la tasa de baudios ni nada, con AT+CIOBAUD=9600 devuelve ERROR, igual que si pregunto con AT+CIOBAUD?. Es cierto que según el juego de comandos que te facilita el fabricante pone obsoleto, pero aun así, usando AT+UART_DEF = 9600,8,1,0,0 me devuelve ERROR también lo mismo si pregunto.
    En fin, he probado m,ultitud de comandos y solo me acepta: AT, AT+RST, AT+CIFSR, AT+CWMODE? (y cambiar el modo también con AT+CWMODE=1 o 2 o 3) y AT+GMR que me devuelve esta version 00170901.

    He probado a resetearlo de fabrica con AT+RESTORE pero me devuelve ERROR.

    Alguna idea de que puede estar pasando y/o como solucionarlo.

    Gracias.

    • Pues no estoy seguro de que decirte Juan, hace un tiempo que no juego con estos modulos porque me he pasado a los nodemcu por su mayor sencillez pero lo que describimos en los tutos nos ha funcionado sin problemas

    • Alvaro B

    Hola
    Una duda, si yo cargo en el ESP8266 un programa usando el IDE de Arduino (por ejemplo un programa tipo blinking LED), si luego quiero usar ese módulo ESP8266 para dar conexión wifi a un Arduino UNO tendría que cargar el firmware como se explica en esta página, ¿no?

    Es decir, si se carga un programa en el módulo wifi, ¿se borra su firmware o son cosas independientes?
    Saludos y gracias

    • Hola alvaro, Hay dos firm que puedes cargar en el esp8266. Uno que viene de fabrica que te permite comunicarte via el puerto serie mediante comandos AT y otro que carga el emulador de arduino

      Puedes caragar el que prefieras. SI optas por el de arduino, este no se pierde aunque luego le cargues diferentes programas arduino ¿Vale? SOlo se perdera si vuelves aintalar el firm de comandos AT

    • Alvaro

    Hola,
    tengo un problema, cuando estoy flasheando el modulo con el nuevo firmware a eso de la mitad de la carga me sale una alarma de seguridad de pantalla azul que me cierra todo y me reinicia el PC he revisado toda las conexiones y estan bien, el erasing da inicio en el ejecutable pero como digo se reinicia con alarma WDF violación, podrian ayudarme , seguí los pasos de esta pagina https://www.prometec.net/firmware-esp8266/ micropanel y tuve el mismo resultado

    • Hola alvaro, pues no se que decirte. Te aseguro que ha flasheado multiples veces mis esp8266 sin problemas. ¿Que version de windows usas?

    • Carlos

    Hola, siguiendo los pasos, durante el flasheo me marca este error: “Invalid head of packet” probé corriéndolo varias veces y dicho error me puede salir prácticamente en cualquier punto, es decir, nunca sale en 6% 0 99% por decir algo. Que puedo hacer?

    • Hola Carlos, ¿estas seguro de haber elgido correctamente tu modelo de esp8266 en la seleccion de tarjeta?

  • Hola,

    Muchas gracias por tu artículo. Tengo un problema, cuando entro a la consola de Putty no me permite escribir nada, así como también en el ESP8266 Flash Downloader me arroja “connecting ….Failed to connect”. Las conexiones las tengo bien dado que en el programa Termite me arroja “MEM CHECK FAIL!!! Ai-Thinker Technology Co. Ltd. invalid” y cuando lo conecto mal (intencionalmente) no arroja nada. Tendrás algún consejo de ayuda? Gracias de antemano.
    También he probado con una fuente de 3.3v por separado y GND comunes.

    • Hola Miguel. Tiene toda la pinta de una mala conexion o mala velocidad de la puerta serie. Puesto que recibas bien al mensaje de bienvenida parece que estas usando algun cable defectuoso.

      Cambialo y me cuentas a ver que tal

  • Buenos dias, a que se refiere con poner GPIO 0 a LOW Y ch_pd a HIGH, o bueno eso como se debe de hacer?

    • La idea es que conectes el pin GPIO o a GND o masa y el pin CH_PD a tension de 3.3V

    • Josep Lluís

    Buenos días.

    Primero de todo agradecerte todo el trabajo que estas realizando en esta web. Es una referencia siempre que me surge alguna duda.

    Actualmente estoy enredando con diferentes módulos ESP8266 y mirando de empezar a “domotizar” la casa. Aprovechando que tengo un NAS Synology he instalado en él Domoticz y he encontrado ejemplos de como enviar información desde un ESP8266, pero no acaba de funcionar.

    Todo este rollo te lo cuento porqué buscando como solucionar el tema, me he encontrado con un desarrollo que están implementando sobre el ESP8266 y creo que te puede interesar. Se trata de un firmware que substituye al que lleva el ESP8266 y que una vez instalado permite el acceso al módulo mediante un cliente web. Se llama ESPEasy (http://www.letscontrolit.com/wiki/index.php/ESPEasy).

    Estoy impaciente por empezar a trastear con el y seguro que si no lo conocías te va a parecer muy interesante. Creo que simplifica enormemente la programación de cualquier ESP8266.

    Un saludo.

    • Hola Jose Luis,

      Ya conecia el espeasy pero hacia meses que no no lo revisaba y se me habia olvidado, aprovechare para darle otra vuelta. Muchas gracias por el apunte

    • Gabo

    Hola. ¿Existe la forma de configurar este módulo para repetir la señal de mi actual servicio de internet y utilizarlo como un punto de acceso en el cual se puedan conectar varios dispositivos, teniendo éstos acceso a internet? Si la respuestas es afirmativa ¿cuál es el proceso que debo de seguir para realizarlo? El módulo que tengo actualmente es como el que se puede ver en la imagen del siguiente enlace
    https://www.miki.tienda/images/nodemcu.jpg

    Saludos y gracias.

    • Hola Gabo,

      Me imagino que me preguntas que si se puede usar este modulo como repetidor wifi y dado qu en principio el modulo puede conectarse en modo AP acces point deberias poder hacerlo.

      Pero me temo que nunca he intentado esto y no me atrevo a ofrecerte una pista

    • Julian

    Hola:

    Tengo el modulo ESP8266 con una funete de 3 volt e intente hacer el tutorial de la pagina https://www.prometec.net/arduino-wifi/, puede conectarme al wifi de la casa sin embargo al momento de confirmar con la direccion IP en el navegador me decia que superaba el tiempo de espera, trata de hacer un ping a la IP pero tampoco.
    Pense entonces que tenia que actualizar el firmware y siguiendo las instrucciones llego hasta hacer la prueba en el putty identificando el com6, puedo digitar el comando AT pero cuando le doy enter no pasa nada…. he provado con todas las velocidades y no muestra nada. Para que necesitamos saber la velocidad??? en el tutorial no se indica que hacer despues que se conoce esa informacion.
    Finalmente procedi a cargar el archivo .bin (que por cierto el link de descarga que tiene en drive no sirve) y me muestra un error “Failed to connect” la conexiones la he revisado varias veces, he invertido el tx y rx y nada….

    por favor a la espera de su apoyo.

    • Hola Julian,

      No estoy seguro de entender bien tu problema, porque si corres ese primer ejemplo de esp8266 que me indicas en la web, no puedes acceder via web. Para ello tendras que correr el ejemplo de servidor web ¿Vale? no sirve cualquiera, pero supongamos que has cargado el ejemplo de web server.

      Para comunicarte con putty debes asegurarte de que tu esp y putty estan de acuerdo a la misma velocidad, porque sino sera imposible.

      Si no recibes nada, ni siquiera basura en el putty suele ser sintoma de malas conexiiones.

      Espero que esto te ayude

Give a Reply

WordPress Anti-Spam by WP-SpamShield