Обновление прошивки Wi-Fi модуля ESP8266
Цели и причины
Это вторая статья автора об интегральной микросхеме ESP8266, содержащей полнофункциональный 32-битный RISC микроконтроллер и встроенную Wi-Fi схему 802.11 b/g/n. Первая статья описывала использование Arduino IDE для программирования ESP8266 и содержит важную информацию, которая здесь повторяться не будет. Если вы не читали её, то рекомендуем сделать это.
В интернете нет недостатка в информации об ESP8266; на самом деле, может быть из неё слишком много... неправильной. Разработчики микросхемы, Espressif, по-видимому, решили не только не заниматься производством на стороне, но и избегать непосредственного участия в разработке линейки модулей ESP, которые используют микросхему ESP8266. Вместо этого, они предлагают информацию и услуги поддержки через форум для тех, кто готов с упорством и терпением ходить по лабиринту. Добавление к путанице – это существование другого форума, который, несмотря на то, что назван esp8266.com, не управляется компанией Espressif. Кроме того, существует множество перепродавцов, видеоблоггеров, и писателей, которые также предлагают информацию от качественной до спутанной настолько, что она может быть полностью неправильной.
ESP модули доступны в различных источниках, а прошивки, содержащиеся в чипах ESP8266 на модулях, почти всегда являются устаревшими и часто вызывают подозрения относительно их происхождения. Также иногда подозрительны "обновления" и инструменты, которые доступны в тех же источниках. Следовательно, целью этой статьи является документирование процедуры загрузки последней доступной прошивки непосредственно от Espressif и её установка с использованием инструмента программирования, предоставляемого Espressif.
Подключение оборудования
Чтобы обновить прошивку на любом ESP8266, необходимо правильно подать на него питание и подключить его к компьютеру. Кроме того, необходимо добавить средства сброса микросхемы и перевода её в режим загрузки. На приведенной ниже схеме и фотографии показано рекомендуемое подключение; обратите внимание, что цвета проводов на схеме соответствуют цветам на фотографии. Как вы видите, я буду обновлять прошивку на модуле ESP-01, но ти же самые соединения будут работать и с другими модулями, если используются те же входы/выходы ESP8266, как показано на схеме. Дополнительные сведения смотрите в этой статье.
Более надежная схема прошивки приведена в этой статье.
Программа терминала PuTTY
Когда подключение оборудования завершено, следующий шаг – включить ESP8266 и попытаться связаться с ним. Для этого требуется простая терминальная программа; мы будем использовать PuTTY, бесплатную программу, доступную здесь. Вы можете использовать другую терминальную программу, но вам придется учесть различия между ней и PuTTY.
Откройте PuTTY и нажмите на переключатель Serial. Введите номер COM порта (который должен быть меньше 10) и скорость передачи (скорее всего, это будет 115200 или 9600).
В маленьком окне Saved Sessions (Сохраненные сеансы) введите ESP8266 и нажмите кнопку Save (Сохранить). Окно PuTTY должно быть похоже на изображение ниже.
Нажмите кнопку Open (Открыть), после чего должно открыться окно сеанса терминала PuTTY.
Включите Caps Lock у себя на компьютере и введите AT
, но не нажимайте Enter. Вы должны увидеть AT
в окне терминала PuTTY. Если этого не произошло, вы, возможно, выбрали не тот COM порт или неправильную скорость передачи. Закройте PuTTY и начните этот подраздел статье с самого начала. Допустимые скорости передачи: 9600, 19200, 38400, 74880, 115200, 230400, 460800 и 921600; попробуйте по очереди каждую из них, пока не найдете ту, с которой всё заработает.
Когда вы увидите AT
в окне терминала PuTTY, удерживая клавишу Ctrl, нажмите клавишу M, а затем J. Отпустите клавишу Ctrl. Вы должны увидеть OK в окне терминала PuTTY, как показано на рисунке ниже.
Обратите внимание, что если вы делаете ошибку при вводе в окне сеанса терминала, возможно, исправить эту ошибку не удастся. Вместо того, чтобы пытаться отредактировать и исправить ошибку, часто лучше просто удерживать клавишу Ctrl и нажимать сначала клавишу M, а затем J, что сгенерирует сообщение об ошибке. Затем вы можете начать снова и ввести правильный текст.
Когда вы увидите первое сообщение OK, это значит, что вы преодолели большое препятствие. Теперь вы знаете, что оборудование подключено правильно, модуль ESP работает, и вы правильно выбрали COM порт и скорость передачи. Закройте окно сеанса терминала PuTTY и нажмите OK, когда PuTTY спросит, уверены ли вы.
Теперь снова запустите PuTTY, выберите сохраненный сеанс ESP8266 и нажмите кнопку Load (Загрузить). Это должно поместить ранее выбранные вами настройки COM порта и скорости передачи в соответствующие окна. Нажмите Open (Открыть), и откроется новое окно сеанса терминала PuTTY.
Включите Caps Lock у себя на компьютере и введите AT, но не нажимайте Enter. Вы должны увидеть AT
в окне терминала PuTTY. Введите символ +
, а затем GMR. Когда вы увидите AT+GMR
в окне терминала PuTTY, удерживая клавишу Ctrl, нажимите сначала клавишу M, а затем J. Отпустите клавишу Ctrl. В окне терминала PuTTY вы должны увидеть информацию о прошивке ESP8266, аналогичную показанной ниже.
В первой строке выше вы видите команду AT+GMR
, которую вы набрали. Как вы, возможно, знаете или догадались, схема команд, которую мы используем для связи с ESP8266, называется «набор AT команд», потому что все команды начинаются с букв «AT
».
К сожалению, существует множество версий наборов AT команд; все они содержат некоторое количество одинаковых команд, но есть много AT команд, которые не являются стандартными для всех наборов AT команд. Даже в сообществе ESP8266 существует несколько версий. Вторая строка указывает, что это конкретное устройство 8266 запрограммировано прошивкой, которая использует версию 0.25.0.0 AT команд. Где-то есть документ, который определяет команды, которые включены в версию 0.25.0.0, но и без этого документа вы можете использовать метод проб и ошибок для определения поддерживаемых AT команд. В лучшем случае это будет очень утомительный процесс, но, к счастью, есть решение, которое будет объяснено в чуть позже.
Третья строка определяет версию программного обеспечения (SDK), которая использовалась для данного конкретного ESP8266, как версия 1.1.1. Каждый SDK также включает в себя набор AT команд, который является частью прошивки, и подходит для управления этой прошивкой. Очевидно, версия 0.25.0.0 AT команд работает с версией 1.1.1 SDK. Но всё же нужен документ, который описывает AT версию 0.25.0.0, чтобы узнать, какие команды включены. Существует лучший способ, описанный в следующем разделе этой статьи, но перед тем, как перейти к нему, попробуем еще одну AT команду и посмотрим, что произойдет.
Включите Caps Lock у себя на компьютере и введите AT+CWLAP
. Когда вы увидите AT+CWLAP
в окне терминала PuTTY, удерживая клавишу Ctrl, нажмите сначала клавишу M, а затем J. Отпустите клавишу Ctrl. Через несколько секунд окно терминала должно выглядеть так, как показано на скриншоте ниже.
AT+CWLAP
заставляет ESP8266 перечислить все доступные Wi-Fi точки доступа. В приведенном выше случае были найдены две точки доступа: одна называется "ATT936", а вторая – "tracecom 2.4". Разумеется, ваши результаты будут отличаться и должны включать вашу собственную Wi-Fi сеть, а также сети ваших соседей.
Закройте окно сеанса терминала PuTTY и нажмите OK, когда PuTTY спросит, уверены ли вы.
ESP Flash Download Tool
Хотя это редко упоминается в интернете, Espressif, разработчики микросхемы ESP8266, создали некоторую часть программного обеспечения для обновления прошивки в своих чипах. Это ESP Flash Download Tool, и этот инструмент доступен здесь. Скачайте, разархивируйте и установите последнюю версию на вашем компьютере; на момент написания статьи это FLASH_DOWNLOAD_TOOLS_v2.4_150924.rar.
Запустите инструмент, и вы должны будете увидеть два открывшихся окна: окно графического интерфейса (GUI) с полями ввода информации и терминальное окно, в котором ведется лог выполненных действий.
Стоит отметить несколько вещей, но нет поводов для беспокойства:
- окно (GUI) идентифицируется как V2.3, в то время как окно журнала идентифицируется как V2.4. По-видимому, окно GUI отмечено неправильно;
- поля выбора COM порта и скорости передачи в окне GUI могут уже содержать данные;
- поля ввода адресов в окне GUI могут уже содержать данные;
- окно лога уже может содержать данные.
Получение последней прошивки
У Espressif есть страница, на которой размещается последняя версия прошивки. Перейдите на страницу bbs.espressif.com, нажмите на запись SDKs в списке Downloads, а затем кликните на «latest release» в разделе Announcements. На момент написания статьи на этой странице можно было увидеть следующее:
Последняя версия Non-OS SDK (Software Development Kit) – это то, что нам нужно, и, похоже, что, если вы кликните на "Latest Version: 1.4.0", то получите последнюю версию. Но это не совсем так; обратите внимание, что имеется доступный патч, указанный как esp_iot_sdk_v1.4.1_15_10_22. Это не патч; это исправленная версия прошивки версии 1.4.0. Нам нужен он и bin файлы AT_v0.50. Кликните по очереди на каждом из них и загрузите файлы.
Конечно, к тому времени, когда вы это прочитаете, могут появиться более свежие версии SDK, и их местоположения могут быть изменены, но, по крайней мере, вы знаете, где искать. Просто убедитесь, что внимательно прочитали, чтобы быть уверенным, что скачиваете последнюю версию. Как мы увидели ранее, это не всегда бывает очевидно.
Возможно, вы заметили, что есть раздел для скачивания документов. Все они содержат качественную информацию, но иногда существенная её часть теряется при переводе с китайского на английский. На данный момен не забудьте получить последние версии ESP8266 AT Instruction Set и Espressif IOT SDK User Manual.
Установка прошивки
Запустите ESP flash download tool и убедитесь, что ни в одном чекбоксе в левом верхнем углу окна GUI не поставлена галка. Введите COM порт, который вы используете, и скорость передачи 115200 в полях ввода в нижней части окна. Обратите внимание, что при вводе данных они записываются в окне журнала.
Подайте питание на свою сборку для программирования ESP и подключите её к компьютеру. Нажмите и удерживайте кнопку Reset, а затем нажмите и удерживайте кнопку Flash. Отпустите кнопку Reset, а затем отпустите кнопку Flash. Нажмите кнопку START окне GUI инструмента прошивки ESP. Программа загрузки флэш-памяти должна проверить ESP8266 в вашей сборке и создать отчет, похожий на тот, что приведен ниже. Нажмите и отпустите кнопку Reset на вашем макете, чтобы выйти из режима прошивки ESP8266 и возобновить нормальную работу.
Обратите внимание, что теперь окно GUI содержит информацию об ESP8266, включая размер флэш-памяти (в примере 8 Мбит), тактовую частоту (в примере 26 МГц) и два MAC-адреса для чипа. Такая же информация содержится в окне журнала.
Затем кликните в окне GUI по чекбоксу с надписью "SpiAutoSet", что заставит инструмент загрузки автоматически выбрать правильные размер флэш-памяти и тактовую частоту.
Теперь нам нужно выбрать файлы для установки в ESP8266 и установить начальный адрес памяти для каждого файла. Чтобы обновить ESP чип, необходимо правильно установить четыре файла. Откройте «Руководство пользователя Espressif IOT SDK» и найдите раздел о записи образов во флэш-память. В версии 1.4 руководства он начинается со страницы 20. Затем найдите подраздел, который описывает версию поддерживаемую Cloud Update (FOTA), и в этом подразделе найдите таблицу о размере флэш-памяти в вашем ESP8266. В этом примере размер флэш-памяти составляет 8 Мбит, что равно 1024 килобайт, следовательно, в таблице 2 на странице 25 руководства содержится информация, необходимая для примера. Посмотрим на рисунок ниже.
Необходимы эти четыре файла: esp_init_data_default.bin, blank.bin, boot.bin и user1.bin. Адрес, по которому должен быть установлен каждый из файлов, отображается рядом с именем файла. Первые три из необходимых файлов находятся в каталоге esp_iot_sdk_v1.4.1_15_10_22, ранее скачанном с bbs.espressif.com, а четвертый расположен в AT_v0.50 bin files. Перейдите туда, где находятся эти загруженные файлы, и скопируйте пути к ним в поля ввода в верхней части окна GUI программы Flash Download Tool; введите правильный адрес для каждого файла в поле рядом с именем файла. Выполните следующие шаги для каждого файла:
- кликните внутри поля ввода "set firmware path";
- кликните по кнопке ... справа от поля ввода;
- перейдите к месту хранения файла и кликните по файлу. GUI автоматически введет путь к файлу в поле ввода;
- введите правильный адрес (из таблицы) для каждого файла.
Обратите внимание, что файлы, которые должны быть загружены, могут быть не такими, как те, что указаны в таблице в этом примере, но будут близки к ним.
Теперь кликните на четыре флажка слева от имени каждого из файлов. Окно графического интерфейса программы Flash Download Tool должно быть похоже на рисунок ниже. Дважды проверьте адреса по таблице.
На своем макете прошивки ESP нажмите и удерживайте кнопку Reset, а затем нажмите и удерживайте кнопку Flash. Отпустите кнопку Reset, а затем отпустите кнопку Flash. Нажмите кнопку START окне GUI инструмента прошивки ESP. Должна начаться загрузка, и её прогресс должен быть показан в окне графического интерфейса и окне журнала Flash Download Tool, как показано ниже.
Как показано выше, успешная операция прошивки флэш-памяти приведет к тому, что все файлы будут отправлены в ESP8266, а COM порт будет закрыт.
Проверка успешности прошивки
Когда операция прошивки будет завершена, закройте программу Flash Download Tool. Снимите питание с макета программирования ESP, а затем снова подключите питание.
Снова запустите PuTTY, выберите сохраненный сеанс ESP8266 и нажмите кнопку Load (Загрузить). Это должно поместить ранее выбранные вами настройки COM порта и скорости передачи в соответствующие окна. Нажмите Open (Открыть), и откроется новое окно сеанса терминала PuTTY.
Включите Caps Lock у себя на компьютере и введите AT, но не нажимайте Enter. Вы должны увидеть AT
в окне терминала PuTTY. Введите символ +
, а затем GMR. Когда вы увидите AT+GMR
в окне терминала PuTTY, удерживая клавишу Ctrl, нажимите сначала клавишу M, а затем J. Отпустите клавишу Ctrl. В окне терминала PuTTY вы должны увидеть информацию о прошивке ESP8266, аналогичную показанной ниже.
Как вы можете видеть, в ESP8266 очевидно установлена новая прошивка. Она была обновлена с SDK версии 1.1.1 на SDK версии 1.4.0. Кроме того, также была установлена соответствующая версия 0.50.0.0 набора AT команд.
Закройте окно сеанса терминала PuTTY и нажмите OK, когда PuTTY спросит, уверены ли вы.
И напоследок
Пара тренировок, и весь процесс обновления прошивки займет гораздо меньшее время, чем требуется для прочтения данной статьи. Как только вы сделаете это, то будете уверены в том, что находится внутри вашего ESP8266 и сможете сосредоточиться на своем Wi-Fi проекте, вместо угадывания прошивки ESP и надежды на поддержку необходимого набора AT команд.