ESP-8266 — интересный Wi-Fi чип для разработки устройств IoT. При приобретении его на Aliexpress прошивка на нем, нередко, достаточно старая. Прошивка устройства много где описана, но нередко упускаются из виду очень критичные моменты. Постараюсь воссоздать всю цепочку.
Для начала рекомендую распаять чип на белую платку-адаптер для ESP-07, ESP-12. На ней уже распаяны необходимые подтягивающие резисторы, кроме того, минимизируется риск повреждения контактов модуля ESP-8266.
Обычно в комплекте с платой не идет XC-6206A на 3,3 V. В принципе, он не нужен для работы при подаче напряжения 3,3 V.
Схема белой платы-адаптера (ESP-12 white mounting breakout board scematics) для ESP-07, ESP-12 следующая:
Приницпиальная схема платы-адаптера для ESP-07, ESP-12 (ESP-8266)
Емкости на плате отсутствуют. Вход EN обозначен как CH_PD.
Для программирования использовал аксессуары:
- Arduino UNO R3 запитанный от блока питания, а не от USB порта. Мощности USB порта может оказаться недостаточно для питания Arduino UNO и ESP-8266. Arduino использовал только как блок питания на 3,3 V. Естественно, лучше использовать блок питания на 3,3 V.
- RS-232 to UART конвертер. Можно использовать недорогой бескорпусный вариант. Я использовал корпусный вариант.
- ESP-12 модуль (ESP-8266).
- Белая плата-адаптер для ESP-8266 модулей.
- Набор Dupont проводов.
Замечательно если есть беспаячная монтажная плата. У меня не было под руками, поэтому коммутацию выполнял напрямую проводами обжатыми Dupont разъемами.
Далее по тексту ESP-8266 — это модуль распаянный на белую плату-адаптер.
Коммутация:
ESP-8266 | RS-232 converter | Arduino UNO или БП 3,3 V | Комментарий |
TXD | RXD | Теоретически, можно использовать Arduino TX/RD с небольшим скетчем. Однако, по-умолчанию, для ESP-8266 задана скорость порта 115200. Arduino UNO/Nano работают нестабильно на этой скорости, поэтому сначала придется подключится напрямую, чтобы установить скорость 9600. | |
RXD | TXD | ||
GND | GND | GND | |
VCC | 3,3 V | Arduino запитываем не от USB порта ПК!!! | |
GPIO0 | GND | Для переключения в режим обновления. |
Проверка собранной схемы
Перед тем как переводить ESP-8266 в режим отновления прошивки, проверим работу собранной схемы:
- Убедимся, что GIO0 отключена от GND. Иначе AT команды отправить в модуль нельзя.
- Включим питание модуля.
- Подключим USB-to-RS232 конвертер к ПК.
- Зайдем в Control Panel -> System -> Device manager -> Ports (COM & LPT).
- Если устройство Prolific USB-to-Serial Comm Port работает с ошибкой — нужно установить fix.
- Если USB конвертер работает без ошибок — смоттри на каком COM порту он работает.
- Запускаем ESPlorer и выставляем в настройках правильный COM порт и скорость. Жмем «Open».
- Переходим на закладку «AT-based» и жмем кнопку «AT». Отправится команда AT, в ответ должна прийти «ОК». Хначит устрйоство работает нормально. То-же самое можно сделать любой терминальной программой работающей с последовательным портом, вроде PuTTY.
- Далее жмем кнопку»RST». Отправится команда AT+RST для рестарта модуля.
AT+RST
AT+RST
OK
WIFI DISCONNECT
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x40100000, len 1396, room 16
tail 4
chksum 0x89
load 0x3ffe8000, len 776, room 4
tail 4
chksum 0xe8
load 0x3ffe8308, len 540, room 4
tail 8
chksum 0xc0
csum 0xc0
2nd boot version : 1.4(b1)
SPI Speed : 40MHz
SPI Mode : DIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000
тn't use rtc mem data
rlЋ‚rlМя
Ai-Thinker Technology Co.,Ltd.
ready
WIFI CONNECTED
WIFI GOT IP
- Сохраним полученные параметры чипа. Они могут пригодится в дальнейшем.
- Отправим AT+GMR для получения информации о текущей версии прошивки ESP-8266.
Получили следующую информацию о чипе:
- SPI Speed : 40MHz
- SPI Mode : DIO
- SPI Flash Size & Map: 8Mbit(512KB+512KB)
- AT version:0.40.0.0(Aug 8 2015 14:45:58)
- SDK version:1.3.0
- Build:1.3.0.2 Sep 11 2015 11:48:04
Софт для прошивки ESP-8266
Для прошивки нужно скачать следующее ПО от разработчика чипа, компании Espressif:
- Flash Downloads Tool.
- Прошивка ESP8266 AT. Если нужны исходники, то ESP8266 NONOS SDK.
- Документация по ESP8266.
Перевод ESP-8266 в режим загрузки обновления
Для перевода ESP-8266 в режим загрузки прошивки нужно:
- Отключить питание модуля и извлечь из USB порта USB-to-RS-232 конвертер.
- Замкнуть PIN GPIO0 на GND. Я использовал Dupont кабель. Кнопку нет смысла использовать. Вот здесь есть тонкий момент. На некоторых схемах используют две кнопки Flash и Reset и нажимают их попеременно для ввода в режим заливки обновления. В официальной документации дан вариант, который я описал. Но при этом я брикнул ESP8266 и пока не нашел способа восстановить.
- Включить питание модуля.
- Немного подождать и подключить USB-to-RS-232 конвертер.
Если нарушить последовательность, то программатор не найдет ESP-8266 модуль!
- Запускаем ESP8266 Flash Download Tool.
- Выбираем ESP8266 и задаем правильный порт и скорость.
- Ничего не вводим и нажимаем Start
- Если ESP 8266 корректно переведен в режиме скачивания прошивки, то практически мгновенно будет выдан статус Finish. И в «detected info» отобразится информация:
- flash vendor: E0h : N/A
- flash devID: 4016h
- QUAD;
- 32Mbit crystal;
- 26 Mhz
Прошивка
В некоторых случаях брикнутые ESP 8266 удается восстановить с использованием инстурмента XTCOM_UTIL. Статья на эту тему.
Но здесь есть такой момент. Прошивки подходящие под эту утилиту неофициальные (специально сделанные) и очень древние. Хотя, можно «лить» и официальные, указав правильные адреса. Я не пробовал, но в статье пример.
У меня была ситуация, когда не мог залить официальную прошивку на купленный на Aliexpress ESP 8266 модуль. Но после того как залил древнюю прошивку через XTCOM_UTIL, залилась и прошивка через официальный ESP8266 Download Tool.
Но это довольно рискованный подход. Один чип я брикнул, причем на каждом из этапов заливки все было успешно. Возможно, просто неаккуратно извлек модуль после завершения прошивки, забыв отключить питание.
Если конвертер USB — RS-232 плохого качества, либо плохое качество соединений, то ESP8266 Download Tool может выдавать ошибку синхронизации. В Интернет рекомедуют снижать скорость до 9600, но это нельзя сделать с помощью этой утилиты. У неё минимальная скорость 115200. В этом случае можно воспользоваться консольной утилитой ESPTool от официального разработчика чипа компании Espressif. Я пробовал прошивать с помощью этой утилиты брикнутый чип, но безуспешно.
Таблицу адресов для заливки лучше брать в официальной документации, поскольку адреса завсят от чипа. Этот вопрос нужно смотреть тщательно, поскольку в Интернет адреса заданы для того чипа, который шил автор статьи. Адреса и схема распайки для программирования есть в ESP8266_SDK_Getting_Started_Guide, и адреса есть также в ESP8266_AT_Instructions_Set.
Сразу отмечу, что у меня нет достоверной информации, что если в ESP8266 Download Tool выставить флаг SpiAutoSet, то действительно производится проверка параметров чипа. Адреса точно никак не проверяются.
Например, у меня брикнулся чип после заливки бинарников, хотя утилита после прошивки написала, что всё прошло успешно. Нет никаких гарантий. Можно ошибится с адресом или выбрать не тот бинарник. Поэтому если вы планируете использовать ESP8266 в реальных проектах, лучше заказывать их с запасом, стоят недорого.
В Интернете не раз проскакивала информация, что ESP-8266 невозможно вывести из строя кривой прошивкой. Мне удавалось. 🙂 После этого чип даже при повторном переводе в режим заливки образа не откликается на запросы. Пробовал скорость и 9600 и 115200 использовать и разные другие шаманства со всеми возможными утилитами.
Troubleshooting
Если после прошивки ESP-8266 не получается подключиться к модулю на скорости 115200, нужно попробовать скорость 9600. В некоторых прошивках эта скорость выставлена по-умолчанию.
В некоторых случаях из-за качества соединений могут возникать проблемы с синхронизацией. Одно из решений — уменьшить скорость с 115200 до 9600:
- AT+UART_DEF=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>
- AT+UART_DEF=9600,8,1,0,0
- AT+UART_DEF=115200,8,1,0,3
В некоторых случаях при переходе на другую скорость отклики от модуля в терминальной программе становятся очень медленными. Пока не разобрался с чем это связано. Помогает сброс к заводским настройкам командой AT+RESTORE.
Статьи
- https://www.espressif.com/en/products/hardware/esp8266ex/resources — ресурсы компании-разработчика ESP-8266
- https://bbs.espressif.com/ — официальный форум компании-разработчика ESP-8266.
- https://www.allaboutcircuits.com/projects/flashing-the-ESP-01-firmware-to-SDK-v2.0.0-is-easier-now/ — самая свежая статья на тему.
- https://www.allaboutcircuits.com/projects/update-the-firmware-in-your-esp8266-wi-fi-module/ — предыдущая версия статьи того-же автора.
- https://radioprog.ru/post/212 — статья на русском во многом перепечатка предыдущих статей. 🙂
- https://www.electronicshub.org/update-flash-esp8266-firmware/ — свежая статья по теме.
- https://www.esp8266.com/viewtopic.php?t=12440 — видео со ссылками.
- https://github.com/espressif/ESP8266_NONOS_SDK/blob/master/documents/EN/%20Partition%20Table.md — Partition table — адреса размещения бинарей.
- https://os.mbed.com/users/sschocke/code/WiFiLamp/wiki/Updating-ESP8266-Firmware — использование неофициального прошивальщика XTCOM_UTIL.
- Прошивальщик от NodeMCU.
- Прошивальщик от NodeMCU и пример работы с ним.