Как навсегда изменить скорость передачи данных ESP8266 (12e)?
ВАЖНО: НЕ ИСПОЛЬЗУЙТЕ 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, 👍15
Обсуждение5 ответов
Лучший ответ:
Я подключил модуль 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
, и она сработала. Постоянно!
Надеюсь, это поможет другим.
Похоже, у вас проблема с блоком питания. Каков номинал вашего блока питания? и попробуйте добавить небольшой конденсатор между vcc и землей. Также хорошей идеей будет обновить прошивку до версии 0.9, в которой исправлена проблема со скоростью передачи данных.
Вы можете найти новую прошивку на сайте https://github.com/espressif/esp8266_at
Я не думаю, что это проблема с питанием. У меня есть внешний источник питания, который более чем способен. Я пробовал без него раньше, но затем Arduino продолжала перезапускаться... Я нашел на форуме, что это было из-за проблем с питанием. Так что теперь у меня все в порядке. Я действительно думаю, что проблема в том, что SoftSerial не может справиться со скоростью 115k baudrate., @mvermand
esp очень придирчив, добавьте небольшой конденсатор между vcc и землей. Я также питаю свой от внешнего источника питания и сталкивался с перезапусками., @NccWarp9
В зависимости от того, насколько свежая версия интерпретатора набора инструкций AT у вашего чипа, две инструкции, которые вы пробовали, могут быть недействительными; они не перечислены в документе ESP8266 AT Instruction Set от Espressif. Поиски "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 через программный последовательный порт; вам просто нужно ожидать появления мусора и игнорировать его:
// Установите скорость передачи данных ESP8266 на 9600. Это нужно сделать только один раз для каждого устройства.
set software serial baud to 115200;
send "AT+UART_DEF=9600,8,1,0,0";
set software serial baud to 9600;
// С этого момента общайтесь с вашим устройством на скорости 9600 бод.
Я тоже заблокировал свой ESP той же командой. После нескольких часов поисков я нашел способ сбросить заблокированный ESP. https://developer.mbed.org/users/sschocke/code/WiFiLamp/wiki/Updating-ESP8266-Firmware Мне пришлось установить скорость передачи данных 115200 вместо 9600, и между загрузкой файлов мне пришлось отключить ESP от питания. Надеюсь, это поможет вам и всем, кто сделал то же самое и нашел ваш пост через Google.
Для меня ключевым моментом было также включение и выключение ESP между каждым файлом - другие сайты объединяют все файлы в одну команду esptool.py
, но у меня это не сработало. Только после разбиения на отдельные команды, по одной на файл, и включения и выключения между ними, я, наконец, смог восстановить прошивку AT. Спасибо за подсказку!, @davidA
Кроме того, я попробовал использовать esptool.py
, который идет в комплекте с ESP32 IDF (v2.1-beta1), и он успешно сработал с _одной_ командой для прошивки всех файлов на моем ESP8266 (который он также поддерживает) - так что требуется только один цикл включения-выключения + GPIO0-GND., @davidA
Использование этой прошивки: https://developer.mbed.org/users/sschocke/code/WiFiLamp/wiki/Обновление-ESP8266-Firmware
и этот флэшер: http://yaab-arduino.blogspot.com.br/2015/12/flashing-esp8266-firmware-arduino.html мне удалось восстановить мой esp 8266 12f
- Обновление прошивки ESP-01 на macOS
- Можно ли отключить WiFi на ESP8266?
- ESP8266 12e Arduino IDE выводит мусорные значения на serial monitor
- Arduino Nano, ESP8266-01 связь
- Использовать NodeMCU 12E (ESP8266) в качестве экрана Wi-Fi для Arduino Nano
- Отправить AT-команды на ESP8266 с последовательного монитора Arduino Nano.
- Питание модуля ESP8266 от arduino nano
- ESP8266-01 неправильные настройки управления потоком
Не могли бы вы попробовать аппаратный серийник? Или потяните контакт сброса на низкий уровень, а затем обратитесь к ESP напрямую через USB. Могу проверить, работают ли они., @Paul
@Пол: у nano есть только один набор аппаратных последовательных портов. Поэтому, если я использую их, я больше не могу отправлять данные на последовательный монитор Arduino, из-за чего становится трудно понять, что происходит... Думаю, мне нужно будет обновить прошивку., @mvermand
ну, вы могли бы использовать последовательный порт программного обеспечения для отладки? Однако вам понадобится кабель USB-serial/TTL., @Paul
http://stackoverflow.com/questions/34248581/set-baud-rate-to-esp8266-at-9600 Это ответит на ваш вопрос., @N.Sinha
Похоже, что установка скорости передачи данных с помощью **AT+IPR=9600 также приводит к блокировке ESP01**. Я попробовал несколько предложений в этой теме, чтобы восстановить его. Решение по ссылке, которую предоставил Марко Андре Сильва, сработало для меня., @Steffe
Итак, вы могли бы «разблокировать» свой модуль?, @mvermand
Это видео [1. Как прошить ESP01 последней прошивкой AT-команды](https://www.youtube.com/watch?v=QVhWVu8NnZc), помогло мне перепрошить прошивку на мой ESP01., @Joe Rytting
Кто-нибудь выяснил, *почему* эта команда блокирует ESP? Это кажется очень странным, @thomasrutter