Wie kann man die Baudrate von ESP8266 (12e) dauerhaft ändern?


11

WICHTIG: NICHT VERWENDEN AT+IPR=9600! (siehe Update)

Ich habe ein ESP8266 12E-Modul, das mit 115.200 Baud kommuniziert. Da ich es mit einem Arduino Nano mit SoftwareSerial benutze, werden die Dinge chaotisch. Also fand ich, dass ich die Baudrate des ESP-Moduls reduzieren sollte.

Ich habe diesen Link gefunden, wie es geht.

ich frage mich

  • Ist dies eine dauerhafte Änderung oder müssen Sie dies jedes Mal tun, nachdem das Modul mit Strom versorgt wurde?

  • Kann ich dasselbe erreichen, indem ich den Befehl vom Arduino über SoftSerial sende? Nun, ich denke nicht, seit ich es versucht habe und ich bekomme immer einen Fehler auf AT+CIOBAUD=9600oder AT+IPR=9600.

  • Ich habe irgendwo gelesen, dass in neueren Firmware-Versionen des ESP8266 die Baudrate standardmäßig 9.600 beträgt. Kann jemand dies bestätigen und wenn ja, ist es besser, diese neuere Firmware zu flashen?

Der Hersteller des Moduls:

Ai-Thinker Technology Co.,Ltd.

Ich denke, die aktuelle Version der Firmware ist 0.3.0. Wenn ich sende, AT+GMRbekomme ich:

sending AT+GMR

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

Wieder etwas Müll wegen der zu hohen Baudrate.

Weitere Informationen zum Modul:

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.

AKTUALISIEREN

(*) Ich habe ein FTDI232-Modul zum Senden AT+IPR=9600an mein ESP8266-12E-Modul verwendet und es gemauert !

NICHT AT+IPR=9600AUF EINEM ESP8266 (-12E) VERWENDEN.

Ich habe es bisher nicht geschafft, es wiederherzustellen! Ich habe versucht, es erneut zu flashen, aber ich erhalte ungültige Kopfausnahmen.

Auf einem neuen Modul habe ich den AT+CIOBAUD=9600Befehl gesendet und es hat funktioniert. Permanent!

Meine Modulspezifikationen:

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 

Sie könnten die Hardware-Serie versuchen? Oder ziehen Sie den Reset-Pin nach unten und sprechen Sie dann direkt über USB mit dem ESP. Könnte überprüfen, ob diese funktionieren.
Paul

@Paul: Der Nano verfügt nur über einen Satz serieller Hardware-Ports. Wenn ich diese verwende, kann ich keine Daten mehr an den Arduino Serial Monitor senden, was es schwierig macht zu verstehen, was passiert ... Ich schätze, ich muss ein Firmware-Upgrade durchführen.
Mvermand

Nun, Sie könnten die Software-Serialport für das Debuggen verwenden? Sie benötigen jedoch ein "usb-serial / ttl" -Kabel.
Paul

1
stackoverflow.com/questions/34248581/… Dies beantwortet Ihre Frage.
N. Sinha

1
Scheint, dass das Einstellen der Baudrate mit AT + IPR = 9600 auch einen ESP01 blockiert . Ich habe mehrere Vorschläge in diesem Thread versucht, um es wiederherzustellen. Die Lösung in dem von Marco Andre Silva gelieferten Link hat bei mir funktioniert.
Steffe

Antworten:


10

Je nachdem, wie aktuell eine Version des AT-Befehlssatz-Interpreters auf Ihrem Chip ist, sind die beiden von Ihnen ausprobierten Anweisungen möglicherweise nicht gültig. Sie sind nicht im ESP8266 AT-Befehlssatzdokument von Espressif aufgeführt . Suchen im aktuellen Dokument (Version 1.5.3) nach "CIOBAUD" oder "IPR" geben keine Ergebnisse zurück.

Die Baudratenbefehle sind jetzt "AT + UART_CUR" und "AT + UART_DEF", die den gesamten UART für die aktuelle Sitzung bzw. die aktuelle und zukünftige Sitzung konfigurieren. Der Prototyp des Handbuchs für den Befehl lautet:

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

Ich habe diese verwendet und kann bestätigen, dass sie funktionieren.

Bei der Verwendung von Software Serial habe ich festgestellt, dass 115200 Baud gut genug übertragen werden können, um Befehle an das Gerät zu senden (obwohl ich keine davon abhängige Anwendung erstellen würde), aber nur bis zu 9600 Baud zuverlässig lesen können. Ich konnte die Baudraten meiner Geräte von 115200 Baud auf 9600 über serielle Software ändern. Sie müssen nur damit rechnen, dass der Müll zurückkommt, und ihn ignorieren:

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

3

Ich habe ein FTDI232-Modul mit 115200 Baud angeschlossen und konnte jetzt die technischen Daten des ESP8266-Moduls lesen:

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 

Danach schickte ich den AT+IPR=9600Befehl, der zuerst den Trick zu tun schien. Aber nach dem Neustart des Moduls bekam ich nur eine Müllantwort bei jeder Baudrate.

SENDEN SIE NICHT AT + IPR = 9600 AN IHR ESP8266 (12e) MODUL

Vielleicht AT+UART_DEFfunktioniert der Befehl - wie von JRobert erwähnt -, aber ich habe den AT+CIOBAUD=9600Befehl verwendet und er hat funktioniert. Permanent!

Ich hoffe das kann anderen helfen.


3

Mit dem gleichen Befehl habe ich auch meinen Esp gemauert. Nach stundenlangem Suchen fand ich einen Weg, den gemauerten esp zurückzusetzen. https://developer.mbed.org/users/sschocke/code/WiFiLamp/wiki/Updating-ESP8266-Firmware Ich musste die Baudrate auf 115200 anstatt auf 9600 einstellen und zwischen den hochladenden Dateien die esp vom Stromnetz trennen . Ich hoffe, das hilft Ihnen und allen, die das Gleiche getan und Ihren Beitrag über Google gefunden haben.


Das Aus- und Wiedereinschalten des ESP zwischen den einzelnen Dateien war auch für mich der Schlüssel - andere Websites kombinieren alle Dateien zu einem einzigen esptool.pyBefehl, aber das hat bei mir nicht funktioniert. Erst nachdem ich es in einzelne Befehle aufgeteilt hatte, einen pro Datei, und zwischen den einzelnen gewechselt hatte, konnte ich endlich die AT-Firmware wiederherstellen. Danke für den Tipp!
DavidA

Außerdem habe ich versucht, das esptool.pymit dem ESP32 IDF (v2.1-beta1) gelieferte zu verwenden, und dass man erfolgreich mit einem einzigen Befehl arbeitet, um alle Dateien auf meinem ESP8266 (das es auch unterstützt) zu flashen - also nur ein Aus- und Wiedereinschalten + GPIO0- GND erforderlich.
DavidA


0

Sieht so aus, als hätten Sie ein Problem mit der Stromversorgung. Wie ist Ihre Netzteilleistung? und versuchen Sie, einen kleinen Kondensator zwischen vcc und Masse hinzuzufügen. Es ist auch eine gute Idee, die Firmware auf 0.9 zu aktualisieren, wodurch das Baudratenproblem behoben wurde.

Eine neue Firmware finden Sie unter https://github.com/espressif/esp8266_at


Ich denke nicht, dass dies ein Problem mit der Stromversorgung ist. Ich habe ein externes Netzteil, das mehr als fähig ist. Ich habe es vorher ohne versucht und dann wurde der Arduino immer wieder neu gestartet ... Ich fand in einem Forum, dass dies auf Probleme mit der Stromversorgung zurückzuführen war. Jetzt geht es mir gut. Ich denke wirklich, das Problem ist, dass das SoftSerial die 115k-Baudrate nicht bewältigen kann.
Mvermand

1
esp ist wirklich wählerisch, füge einen kleinen Kondensator zwischen vcc und Masse hinzu. Ich versorge meine auch von einer externen Stromquelle und hatte einen Neustart.
NccWarp9
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.