Как навсегда изменить скорость передачи 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 

Вы могли бы попробовать серийный аппаратный? Или нажмите кнопку сброса на низкий уровень, а затем говорите с 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.

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команду, и она сработала. Постоянно!

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


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


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

1
esp очень требователен, добавьте небольшой конденсатор между vcc и землей. Я также питаюсь от внешнего источника питания и испытываю перезапуски.
— NccWarp9
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.