¿Cómo cambiar la velocidad de transmisión de ESP8266 (12e) permanentemente?

11

IMPORTANTE: NO UTILIZAR AT+IPR=9600! (ver actualización)

Tengo un módulo ESP8266 12E que se comunica a 115.200 baudios. Como lo uso con un Arduino Nano con software, las cosas en serie se vuelven desordenadas. Entonces descubrí que debería reducir la velocidad en baudios del módulo ESP.

Encontré este enlace sobre cómo hacerlo.

me pregunto

  • ¿Es este un cambio permanente o debe hacerlo cada vez que se enciende el módulo?

  • ¿Puedo lograr lo mismo enviando el comando desde Arduino a través de SoftSerial? Bueno, supongo que no desde que lo intenté y siempre recibo un error en AT+CIOBAUD=9600o AT+IPR=9600.

  • Leí en alguna parte que en las versiones de firmware más recientes del ESP8266, la velocidad de transmisión predeterminada es de 9.600. ¿Alguien puede confirmar esto y si es así, es mejor actualizar este firmware más nuevo?

El proveedor del módulo:

Ai-Thinker Technology Co.,Ltd.

Creo que la versión actual del firmware es 0.3.0. Si envío AT+GMRrecibo:

sending AT+GMR

response: ?AT¥TJÕ¨H(Q�²•ÉÍ¥½¹é‚r¢‚r‚r‚BÕ��Â’‚ŠªŠ¢Ò¢ªÒªÂJm
 SDK versioo:0.3.0
 Ai�½½
 ‚Šj

Nuevamente algo de basura debido a la velocidad en baudios que es demasiado alta.

Otra información sobre el módulo:

sending AT+RST
response: ?AT+RST
OK
WRT
"%M
<99CT
 ets Jan  8 2013,rst catse:2, boot lode:(3,7)
load 0x40100000ntail 4
chksum 0x89
ld tail 4
chm3 tail 8 r 0 aM
 ón't use rtc mem dat`
sl��oÌÿ
Ai-Thinker Technology Co.,Ltd.

ACTUALIZAR

(*) ¡Utilicé un módulo FTDI232 para enviarlo AT+IPR=9600a mi módulo ESP8266-12E y lo bloqueé !

NO UTILICE AT+IPR=9600EN UN ESP8266 (-12E).

¡Hasta ahora no pude recuperarlo! Intenté volver a flashearlo pero recibo excepciones de cabeza inválidas.

En un nuevo módulo envié el AT+CIOBAUD=9600comando y funcionó. ¡Permanentemente!

Mi módulo de especificaciones:

AT+GMR 
AT version:0.40.0.0(Aug  8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK 
mvermand
fuente
¿Podrías probar la serie de hardware? O baje el pin de reinicio y luego hable con el ESP directamente a través de USB. Podría comprobar si eso funciona.
Paul
@Paul: el nano tiene solo un conjunto de puertos seriales de hardware. Entonces, si uso esos, ya no puedo enviar datos al Arduino Serial Monitor, lo que dificulta la comprensión de lo que está sucediendo ... Supongo que tendré que ir a actualizar el firmware.
mvermand
bueno, ¿podrías utilizar el puerto serial del software para la depuración? Sin embargo, necesitará un cable "usb-serial / ttl".
Paul
1
stackoverflow.com/questions/34248581/… Esto responderá a su pregunta.
N.Sinha
1
Parece que establecer la velocidad en baudios con AT + IPR = 9600 también mejora un ESP01 . Intenté varias sugerencias en este hilo para recuperarlo. La solución en el enlace que Marco Andre Silva suministró funcionó para mí.
Steffe

Respuestas:

10

Dependiendo de cuán reciente sea la versión del intérprete AT Instruction Set que tenga su chip, las dos instrucciones que probó pueden no ser válidas; no están incluidos en el documento del conjunto de instrucciones ESP8266 AT de Espressif . Las búsquedas de "CIOBAUD" o "IPR" en el documento actual (versión 1.5.3) no arrojan resultados.

Los comandos de velocidad de transmisión ahora son "AT + UART_CUR" y "AT + UART_DEF" que configuran el UART completo para la sesión actual o las sesiones actuales y futuras, respectivamente. El prototipo del manual para el comando es:

AT+UART_DEF=<baudrate>, <databits>, <stopbits>, <parity>, <flow control>
Example:
AT+UART_DEF=115200, 8, 1, 0, 3

Los he usado y puedo confirmar que funcionan.

Lo que he encontrado usando el software en serie es que puede impulsar 115200 baudios lo suficientemente bien como para enviar comandos al dispositivo (aunque no crearía una aplicación que dependa de él), pero solo puede leer de manera confiable hasta 9600 baudios. He podido cambiar las velocidades en baudios de mis dispositivos de 115200 baudios a 9600 en serie de software; solo tienes que esperar que vuelva la basura e ignorarla:

// Set ESP8266 baud rate to 9600. You only need to do this once per device
set software serial baud to 115200;
send "AT+UART_DEF=9600,8,1,0,0";
set software serial baud to 9600;
// From now on, communicate with your device at 9600 baud.
JRobert
fuente
3

Conecté un módulo FTDI232 a 115200 baudios y pude leer las especificaciones del módulo ESP8266 ahora:

AT+GMR 
AT version:0.40.0.0(Aug  8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK 

Después de eso envié el AT+IPR=9600comando, que primero pareció hacer el truco. Pero después de reiniciar el módulo, todo lo que obtuve fue una respuesta basura, a cualquier velocidad de transmisión.

NO ENVÍE A + IPR = 9600 A SU MÓDULO ESP8266 (12e)

Tal vez el AT+UART_DEFcomando, como mencionó JRobert, funciona, pero usé el AT+CIOBAUD=9600comando y funcionó. ¡Permanentemente!

Espero que esto pueda ayudar a otros.

mvermand
fuente
3

También bloqueé mi Esp con el mismo comando. Después de horas de búsqueda, encontré una manera de restablecer el esp. https://developer.mbed.org/users/sschocke/code/WiFiLamp/wiki/Updating-ESP8266-Firmware Tuve que establecer la velocidad en baudios a 115200 en lugar de 9600, y entre los archivos de carga tuve que desconectar el esp de la alimentación . Espero que eso te ayude a ti y a todos los que hicieron lo mismo y encontraron tu publicación en Google.

Dirk Pitt
fuente
También fue clave para el ciclo de energía ESP entre cada archivo: otros sitios combinan todos los archivos en un solo esptool.pycomando, pero eso no funcionó para mí. Solo después de dividirlo en comandos individuales, uno por archivo y alternar entre cada uno, finalmente pude restaurar el firmware AT. ¡Gracias por la pista!
davidA
Además, intenté usar el esptool.pyque viene con ESP32 IDF (v2.1-beta1) y que funciona correctamente con un solo comando para actualizar todos los archivos en mi ESP8266 (que también es compatible), por lo que solo un ciclo de encendido + GPIO0- GND requerido.
davidA
0

Parece que estás teniendo un problema con la fuente de alimentación. ¿Cuál es su clasificación de fuente de alimentación? e intente agregar un pequeño condensador entre vcc y tierra. También es una buena idea actualizar el firmware a 0.9, que tiene un problema de velocidad de transmisión corregido.

Puede encontrar nuevo firmware en https://github.com/espressif/esp8266_at

NccWarp9
fuente
No creo que este sea un problema de suministro de energía. Tengo una fuente de alimentación externa que es más que capaz. Lo intenté sin antes y luego el Arduino siguió reiniciando ... En un foro encontré que se debía a problemas de suministro de energía. Entonces ahora estoy bien allí. Realmente creo que el problema es que SoftSerial no puede hacer frente a la velocidad de transmisión de 115k.
mvermand
1
esp es realmente exigente, agregue un pequeño condensador entre vcc y tierra. También energizo el mío desde una fuente de alimentación externa y estaba experimentando reinicios.
NccWarp9