Jak na stałe zmienić szybkość transmisji ESP8266 (12e)?

11

WAŻNE: NIE UŻYWAJ AT+IPR=9600! (patrz aktualizacja)

Mam moduł ESP8266 12E, który komunikuje się z prędkością 115 200 bodów. Ponieważ używam go z Arduino Nano z SoftwareSerial, robi się bałagan. Stwierdziłem więc, że powinienem zmniejszyć szybkość transmisji modułu ESP.

Znalazłem ten link, jak to zrobić.

zastanawiam się

  • Czy to trwała zmiana, czy trzeba to robić za każdym razem po zasileniu modułu?

  • Czy mogę to zrobić, wysyłając polecenie z Arduino przez SoftSerial? Cóż, chyba nie, odkąd próbowałem i zawsze pojawia się błąd na AT+CIOBAUD=9600lub AT+IPR=9600.

  • Czytałem gdzieś, że w nowszych wersjach oprogramowania ESP8266 domyślna prędkość transmisji wynosi 9600. Czy ktoś może to potwierdzić, a jeśli tak, to czy lepiej sflashować to nowsze oprogramowanie?

Dostawca modułu:

Ai-Thinker Technology Co.,Ltd.

Myślę, że obecna wersja oprogramowania to 0.3.0. Jeśli wyślę AT+GMR, otrzymam:

sending AT+GMR

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

Znów trochę śmieci ze względu na zbyt wysoką prędkość transmisji.

Inne informacje o module:

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.

AKTUALIZACJA

(*) Użyłem modułu FTDI232, aby wysłać AT+IPR=9600do mojego modułu ESP8266-12E i go zamurowałem !

NIE UŻYWAJ AT+IPR=9600NA ESP8266 (-12E).

Jak dotąd nie udało mi się go odzyskać! Próbowałem ponownie go sflashować, ale dostaję nieprawidłowe wyjątki od głowy.

Na nowym module wysłałem AT+CIOBAUD=9600polecenie i zadziałało. Na stałe!

Specyfikacja mojego modułu:

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
źródło
Możesz wypróbować sprzętowy serial? Lub pociągnij pin resetowania w dół, a następnie porozmawiaj z ESP bezpośrednio przez USB. Może sprawdzę, czy te działają.
Paul
@Paul: nano ma tylko jeden zestaw sprzętowych portów szeregowych. Więc jeśli ich użyję, nie będę mógł wysyłać danych do Arduino Serial Monitor, co utrudnia zrozumienie, co się dzieje ... Chyba będę musiał przejść na aktualizację oprogramowania układowego.
mvermand
czy możesz skorzystać z portu szeregowego oprogramowania do debugowania? Potrzebny będzie jednak kabel „USB-serial / ttl”.
Paul
1
stackoverflow.com/questions/34248581/... To odpowie na twoje pytanie.
N.Sinha,
1
Wydaje się, że ustawienie szybkości transmisji przy AT + IPR = 9600 również powoduje uszkodzenie ESP01 . Wypróbowałem kilka sugestii w tym wątku, aby go odzyskać. Rozwiązanie w linku dostarczonym przez Marco Andre Silva działało dla mnie.
Steffe

Odpowiedzi:

10

W zależności od tego, jak najnowsza wersja interpretera zestawu instrukcji AT ma Twój układ, dwie wypróbowane instrukcje mogą nie być poprawne; nie są wymienione w dokumencie ESP8266 AT Instruction Set w dokumencie Espressif . Wyszukiwanie „CIOBAUD” lub „IPR” w bieżącym dokumencie (wersja 1.5.3) nie zwraca żadnych wyników.

Komendy prędkości transmisji to teraz „AT + UART_CUR” i „AT + UART_DEF”, które konfigurują odpowiednio cały UART dla bieżącej sesji lub bieżącej i przyszłych sesji. Prototyp instrukcji dla tego polecenia to:

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

Użyłem ich i mogę potwierdzić, że działają.

Za pomocą oprogramowania szeregowego znalazłem to, że może on przesuwać 115200 bodów wystarczająco dobrze, aby wysyłać polecenia do urządzenia (chociaż nie zbudowałbym aplikacji, która od niego zależy), ale może on wiarygodnie odczytać do 9600 bodów. Byłem w stanie zmienić szybkość transmisji moich urządzeń z 115200 bodów na 9600 w porównaniu z oprogramowaniem szeregowym; musisz tylko oczekiwać powrotu śmieci i zignorować je:

// 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
źródło
3

Podłączyłem moduł FTDI232 przy 115200 bodów i mogłem teraz odczytać specyfikację modułu ESP8266:

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 

Potem wysłałem AT+IPR=9600komendę, która początkowo wydawała się załatwić sprawę. Ale po ponownym uruchomieniu modułu wszystko, co otrzymałem, to reakcja na śmieci, przy dowolnej szybkości transmisji.

NIE WYSYŁAJ AT + IPR = 9600 DO SWOJEGO MODUŁU ESP8266 (12e)

Może AT+UART_DEFpolecenie - jak wspomniał JRobert - działa, ale użyłem AT+CIOBAUD=9600polecenia i zadziałało. Na stałe!

Mam nadzieję, że to może pomóc innym.

mvermand
źródło
3

Zamurowałem też mojego Espa tym samym poleceniem. Po wielu godzinach poszukiwań znalazłem sposób na zresetowanie zamurowanego esp. https://developer.mbed.org/users/sschocke/code/WiFiLamp/wiki/Updating-ESP8266-Firmware Musiałem ustawić szybkość transmisji na 115200 zamiast 9600, a między przesyłaniem plików musiałem odłączyć esp od zasilania . Mam nadzieję, że to pomoże Tobie i wszystkim, którzy zrobili to samo i znaleźli Twój post w Google.

Dirk Pitt
źródło
Kluczowe było dla mnie również przełączanie ESP między poszczególnymi plikami - inne strony łączą wszystkie pliki w jedno esptool.pypolecenie, ale to nie działało dla mnie. Dopiero po rozbiciu go na poszczególne polecenia, po jednym na plik i przełączaniu się między nimi, w końcu mogłem przywrócić oprogramowanie AT. Dzięki za podpowiedź!
davidA,
Ponadto próbowałem użyć tego, esptool.pyktóry jest dostarczany z ESP32 IDF (v2.1-beta1) i ten działa z powodzeniem za pomocą jednego polecenia, aby flashować wszystkie pliki na moim ESP8266 (który również obsługuje) - więc tylko jeden cykl zasilania + GPIO0- Wymagany GND.
davidA,
0

Wygląda na to, że masz problem z zasilaniem. Jaka jest twoja ocena zasilacza? i spróbuj dodać mały kondensator między vcc a ziemią. Również dobrym pomysłem jest zaktualizowanie oprogramowania do wersji 0.9, która ma problem z szybkością transmisji.

Nowe oprogramowanie można znaleźć na stronie https://github.com/espressif/esp8266_at

NccWarp9
źródło
Nie sądzę, że jest to problem z zasilaniem. Mam zewnętrzny zasilacz, który jest więcej niż zdolny. Próbowałem wcześniej, a potem Arduino ciągle się restartował ... Znalazłem na forum, że było to spowodowane problemami z zasilaniem. Więc teraz mam się dobrze. Naprawdę myślę, że problem polega na tym, że SoftSerial nie radzi sobie z szybkością transmisji 115k.
mvermand
1
esp jest naprawdę wybredny, dodaj mały kondensator między vcc a ziemią. Zasilam także kopalnię z zewnętrznego źródła zasilania i doświadczam restartów.
NccWarp9