Как навсегда изменить скорость передачи ESP8266 (12e)?

11

ВАЖНО: НЕ ИСПОЛЬЗУЙТЕ AT+IPR=9600! (см. обновление)

У меня есть модуль ESP8266 12E, который обменивается данными со скоростью 115 200 бод. Так как я использую это с Arduino Nano с SoftwareSerial, вещи становятся грязными. Итак, я обнаружил, что должен уменьшить скорость передачи ESP-модуля.

Я нашел эту ссылку о том, как это сделать.

мне интересно

  • Это постоянное изменение или вам нужно делать это каждый раз после включения модуля?

  • Могу ли я добиться того же, отправив команду из Arduino через SoftSerial? Ну, думаю, нет, так как я пытался, и я всегда получаю сообщение об ошибке AT+CIOBAUD=9600или AT+IPR=9600.

  • Я где-то читал, что в более новых версиях прошивки ESP8266 скорость передачи данных по умолчанию равна 9600. Кто-нибудь может это подтвердить и если да, то лучше ли прошивать эту более новую прошивку?

Производитель модуля:

Ai-Thinker Technology Co.,Ltd.

Я думаю, что текущая версия прошивки 0.3.0. Если я отправлю, AT+GMRя получу:

sending AT+GMR

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

Опять мусор из-за слишком высокой скорости передачи.

Другая информация о модуле:

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.

ОБНОВИТЬ

(*) Я использовал модуль FTDI232 для отправки AT+IPR=9600на мой модуль ESP8266-12E и уложил его в кирпич !

НЕ ИСПОЛЬЗУЙТЕ AT+IPR=9600НА ESP8266 (-12E).

Мне пока не удалось его восстановить! Я попытался перепрошить это, но я получаю Недопустимые исключения головы.

На новом модуле я отправил AT+CIOBAUD=9600команду, и она сработала. Постоянно!

Мои технические характеристики модуля:

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
источник
Вы могли бы попробовать серийный аппаратный? Или нажмите кнопку сброса на низкий уровень, а затем говорите с ESP напрямую через USB. Можете проверить, работают ли они.
Пол
@Paul: у nano есть только один набор аппаратных последовательных портов. Поэтому, если я использую их, я больше не могу отправлять данные на Arduino Serial Monitor, что затрудняет понимание того, что происходит ... Думаю, мне нужно перейти на обновление прошивки.
mvermand
хорошо, вы могли бы использовать программный последовательный порт для отладки? Вам понадобится кабель "usb-serial / ttl".
Пол
1
stackoverflow.com/questions/34248581/… Это ответит на ваш вопрос.
N.Sinha
1
Кажется, что установка скорости передачи данных с AT + IPR = 9600 также блокирует ESP01 . Я попытался несколько предложений в этой теме, чтобы восстановить его. Решение в ссылке, предоставленной Марко Андре Силвой, сработало для меня.
Steffe

Ответы:

10

В зависимости от того, какая последняя версия интерпретатора AT Instruction Set у вашего чипа, две пробные инструкции могут быть недействительными; они не указаны в документе Espressif ESP8266 AT Instruction Set . Поиск "CIOBAUD" или "IPR" в текущем документе (версия 1.5.3) не возвращает результатов.

Команды скорости передачи теперь «AT + UART_CUR» и «AT + UART_DEF», которые настраивают весь UART для текущего сеанса или текущего и будущих сеансов соответственно. Прототип руководства для команды:

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

Я использовал их и могу подтвердить, что они работают.

Я обнаружил, что при использовании последовательного программного обеспечения он может достаточно хорошо передавать 115200 бод для отправки команд на устройство (хотя я не буду создавать приложение, которое зависит от него), но оно может надежно считывать только до 9600 бод. Я смог изменить скорость передачи данных моих устройств с 115200 бод до 9600 бод по сравнению с последовательным программным обеспечением; Вы просто должны ожидать возвращения мусора и игнорировать его:

// 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
источник
3

Я подключил модуль FTDI232 со скоростью 115200 бод и теперь могу прочитать спецификации модуля 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 

После этого я послал AT+IPR=9600команду, которая сначала, казалось, сделала свое дело. Но после перезагрузки модуля все, что я получил, было ответом мусора при любой скорости передачи данных.

НЕ ОТПРАВЛЯЙТЕ AT + IPR = 9600 В МОДУЛЬ ESP8266 (12e)

Может быть, AT+UART_DEFкоманда - как упоминал JRobert - работает, но я использовал AT+CIOBAUD=9600команду, и она сработала. Постоянно!

Я надеюсь, что это может помочь другим.

mvermand
источник
3

Я замутил свой Esp той же командой. После нескольких часов поисков я нашел способ сбросить кирпичи esp. https://developer.mbed.org/users/sschocke/code/WiFiLamp/wiki/Updating-ESP8266-Firmware Мне пришлось установить скорость передачи данных 115200 вместо 9600, и между загрузкой файлов мне пришлось отключить esp от питания , Я надеюсь, что это поможет вам и всем, кто сделал то же самое и нашел ваш пост через Google.

Дирк Питт
источник
Включение ESP между каждым файлом также было для меня ключевым моментом - другие сайты объединяли все файлы в одну esptool.pyкоманду, но у меня это не получалось. Только после разбиения его на отдельные команды, по одной на файл, и циклически переключаясь между ними, я наконец смог восстановить прошивку AT. Спасибо за подсказку!
Давида,
Кроме того, я попытался использовать esptool.pyфункцию, поставляемую с IDF ESP32 (v2.1-beta1), и она успешно работает с одной командой, чтобы прошить все файлы на моем ESP8266 (который он также поддерживает) - так что только один цикл питания + GPIO0- GND требуется.
Дэвид
0

Похоже, у вас возникли проблемы с питанием. Какой у вас рейтинг блока питания? и попробуйте добавить небольшой конденсатор между VCC и землей. Также рекомендуется обновить прошивку до 0.9, в которой исправлена ​​проблема скорости передачи данных.

Вы можете найти новую прошивку на https://github.com/espressif/esp8266_at

NccWarp9
источник
Я не думаю, что это проблема с питанием. У меня есть внешний источник питания, который более чем способен. Я пытался без до этого, а потом Arduino продолжал перезагружаться ... Я обнаружил на форуме, что это было связано с проблемами питания. Так что теперь я в порядке там. Я действительно думаю, что проблема в том, что SoftSerial не может справиться со скоростью 115k.
mvermand
1
esp очень требователен, добавьте небольшой конденсатор между vcc и землей. Я также питаюсь от внешнего источника питания и испытываю перезапуски.
NccWarp9