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

, 👍15

Обсуждение

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


5 ответов


Лучший ответ:

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

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

,

0

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

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

,

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

esp очень придирчив, добавьте небольшой конденсатор между vcc и землей. Я также питаю свой от внешнего источника питания и сталкивался с перезапусками., @NccWarp9


14

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

4

Я тоже заблокировал свой 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


2

Использование этой прошивки: 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

,