ESP8266 прошивка, программирование в Arduino IDE
И снова привет geektimes. Этот материал является продолжением моей предыдущей статьи — ESP8266 и Arduino, подключение, распиновка, и, должен сказать, что они взаимосвязаны. Я не буду затрагивать темы, которые уже раскрыты.
А сегодня, я поведаю, как же программировать ESP8266 при помощи Arduino IDE, так же прошивать другие прошивки, например NodeMcu… Вообщем, этот материал не ограничивается только одной темой Ардуино.
Тема ESP8266 — довольно таки непростая. Но, если работать с этими Wi-Fi модулями в среде разработки Arduino IDE — порог вхождения опускается до приемлемого для обычного ардуинщика уровня. Да и не только ардуинщика, а любого человека, у которого есть желание сварганить что-то по теме IoT(интернет вещей), причём не затрачивая много времени читая документацию для микросхемы и изучение API для этих модулей.
Данное видео, полностью дублирует материал, представленный в статье ниже.
Ну что же, мы уже умеем подключать ESP8266 и переводить его в режим программирования, теперь давайте перейдём к чему-то более полезному.
Скажу сразу — один раз запрограммировав модуль в среде разработки ардуино, мы сносим родную прошивку, и у нас пропадёт возможность работать с модулем при помощи AT-команд. Лично мне, от этого, не холодно/не жарко, но если кому-то это будет нужно — ближе к концу статьи я покажу, как обратно прошить в модуль родную прошивку, ну или какой-то загручик типа NodeMcu.
Для начала, на офф.сайте качаем последнюю версию Arduino IDE, на данный момент это 1.6.7. Более старые версии типа 1.0.5. не подойдут, потому что банально не имеют нужного функционала, а танцы с бубном нас не интересуют, не так ли?
Запускаем среду разработки и тут же идём в Файл/Настройки:
Вставляем ссылку в поле «Дополнительные ссылки для Менеджера плат:» и жмём «OK».
Данную ссылку я взял на странице проекта Arduino core for ESP8266 WiFi chip.
Потом идём Инструменты/Плата:/Менеджер плат.
Перед нами появится окно менеджера плат, листаем его до самого низа, и если всё сделано правильно мы увидим что-то подобно этому:
Кликаем курсором по надписи «esp8266 by ESP8266 Community» после этого, у нас появилась кнопка «Установка», выбираете нужную версию, я беру последнюю, на сегодняшний день это 2.1.0. и устанавливаю её. Среда разработки закачает нужные ей файлы(около 150 мегабайт) и напротив надписи «esp8266 by ESP8266 Community» появится «INSTALLED» то есть установлено:
Листаем список плат вниз и видим, что в списке у нас появилось много разных ESP, берём «Generic ESP8266 Module»:
Идём в «Инструменты» и выбираем нужный COM порт(у меня это COM32) Arduino или USB UART конвертора, потом ставим Upload Speed:«115200»:
Далее открываем консоль в Arduino IDE, подаём питание на модуль, если всё было сделано правильно, то мы увидим что-то в этом роде:
Выставляем скорость 74880 и «NL & CR» и опять же отключаем и подаём питание и он ответит кое какой отладочной информацией:
Заметьте, 74880 — не основная скорость ESP8266, просто он всего лишь на ней отправляет отладочную информацию. Если модуль ничего не отправляет в консоль, тогда возможно что-то подключили не так как надо.
По умолчанию скорость должна быть 115200, но в отдельных случаях может быть и 9600 и другие… Так что попробуйте подобрать.
После подбора нужной скорости отправляем модулю «AT» и он должен ответить что всё «ОК». Команда «AT+GMR» выводит информацию о прошивке.
Прежде чем начать прошивать ESP8266 в Arduino IDE я советую дочитать статью до конца.
Теперь давайте попробуем прошить ESP8266 через Arduino IDE. Переводим модуль в режим программирования(как это сделать я писал в предыдущей статье).
Давайте зашьём мигалку штатным светодиодом:
Замигал? Значит всё сделано правильно. Откуда я взял что светодиод подключен на первый пин? В предыдущей статье есть картинка с распиновкой разных модулей, и там есть разметка портов, при использовании загрузчика Arduino(пины отмечены розовым цветом).
Мигание светодиодом это конечно хорошо, но надо бы какой-то веб-сервер заделать или начать управлять светодиодом хотя бы при помощи кнопок в браузере, не так ли? Но об этом я расскажу уже как-нибудь в другой раз.
А теперь как прошить назад родную прошивку, да и как вообще прошивать модуль сторонними загрузчиками. Для ESP8266 есть такая программа как NodeMCU Flasher, которая изначально предназначена для прошивки загрузчика NodeMCU. Но как оказалось, она отлично прошивает и другие прошивки.
Я прикреплю к статье архив с данной программой и прошивкой для удобства, но тут всегда можно скачать новую версию NodeMCU Flasher.
В папке «nodemcu-flasher-master» есть 2 папки Win64 и Win32 и в зависимости от того какая разрядность у вашей ОС выбираем нужную. Дальше в папке Release запускаем «ESP8266Flasher.exe» и видим интерфейс программы:
Выбираем нужный COM порт и идём во вкладку «Config», убираем хрестик около «INTERNAL://NODEMCU» и ставим его на один пункт ниже, как на скрине:
(Если захотите прошить загрузчик NodeMCU — убираете хрестик там где его не было, и ставите — где он был, то есть около «INTERNAL://NODEMCU»).
Потом жмём по шестеренке и выбираем где лежит наша прошивка, прошивка как правило в формате *.bin(в прикреплённом архиве это «v0.9.5.2 AT Firmware.bin» которая лежит в основной папке), и так же выбираем «0x00000» как и выше.
Дальше идём во вкладку «Advanced» и меняем там скорость на 115200, именно эта скорость будет основная и модуль будет отзываться по ней на AT-команды в случае соответствующей прошивки.
Возвращаемся опять на вкладку «Operation» переводим модуль в режим программирования и жмём «Flash»:
Всё, модуль начал прошиваться, после перепрошивки не забываем перезагрузить модуль и вуаля, он прошит нужной нам прошивкой.
Проверяем AT-командой «AT+GMR» сделали ли мы всё верно:
Как видите всё нормально прошилось.
By Сергей ПоделкинЦ ака MrПоделкинЦ.
Уже на подходе плата на базе esp32:
http://www.pighixxx.com/test/2015/12/esp32-pinout/
Которая значительно круче чем esp8266, так что нас скоро ждёт бум, как мне кажется, темы IoT(интернет вещей).
Источник статьи: http://habr.com/ru/post/371853/
Программирование микроконтроллеров ESP8266/ESP32 написанием YAML конфиг файлов
Будучи поклонником системы управления «умным домом» Home Assistant я недавно открыл для себя интересный инструмент, тесно с HA интегрированный и ранее на Хабре не освещенный — ESP Home (ранее ESPhomeYAML).
ESP Home представляет собой набор библиотек и инструментов, генерирующих прошивку для микроконтроллеров ESP8266 и ESP32 из созданного пользователем конфиг файла в формате YAML. Это значительно упрощает написание прошивок малого и среднего уровня сложности в особенности для тех, кто не силен в программировании под Arduino и сильно сокращает количество строк кода/конфигурации для тех, кто силен.
Для удобства настройки поддерживается обновление прошивки по воздуху.
ESP Home поддерживает устройства на базе ESP8266 и ESP32, очень популярных среди любителей домашней автоматизации и прочих самоделкиных, а также несколько десятков сенсоров и различную периферию — дисплеи, сетевые карты и т.д. Для обмена данными с запрограммированным устройством поддерживаются MQTT, UART, I2C, SPI и API, интегрированное с Home Assistant.
Ниже короткий пример установки ESP Home и простой настройки устройства на примере выключателя Sonoff T1, который представляет из себя ESP8266 с одним реле, одной кнопкой и одним управляемым светодиодом. В примере будут шаги установки одновременно для чистого Python и Docker.
Установка
Python 2.7 (из-за зависимостей Platformio)
Docker из готового образа
Создание конфигурационного файла
ESP Home включает в себя визард, который помогает создать начальный конфигурационный файл.
Эти же шаги можно проделать в WEB интерфейсе ESP Home, про который написано в конце статьи.
- Название устройства (назовем его switch)
- ESP8266 (в примере) или ESP32
- Тип платы (у нас esp01_1m)
- Назване точки доступа WiFi
- Пароль от WiFi
- Пароль от API Home Assistant, он же будет по умолчанию использоваться для обновления прошивки по воздуху.
Результатом работы визарда будет файл switch.yaml в текущей папке примерно такого вида:
Этого достаточно, чтобы скомпилировать прошивку и дальнейшие изменения производить по воздуху.
Первая прошивка
Теперь, если подключить контроллер к компьютеру по USB (NodeMCU) или через программатор можно заливать прошивку.
ESP Home проверит, что в файле конфигурации нет ошибок, скомпилирует и загрузит прошивку. Кроме того в текущей папке появится новая папка с именем вашего устройства и проектом platformio внутри.
Если программатор/устройство не подключены к компьютеру можно выполнить команду:
и скомпилированный файл прошивки появится в папке switch/.pioenvs/switch/firmware.bin
Docker
На Linux или MacOS можно добавить в —device=/dev/ttyUSB0 Docker-команду — адрес устройства программатора или серийного порта.
Аналогично команде esphome в результате запуска контейнера появится папка switch/.pioenvs/switch/firmware.bin
Бинарный файл прошивки можно загрузить на контроллер через Arduino IDE.
После этого устройство можно отключить от USB и дальнейшие обновления прошивки будут проходить автоматически по воздуху.
Настройка выключателя
Дальше можно добавлять необходимые компоненты:
Источник статьи: http://m.habr.com/ru/post/441984/
ESP8266 Урок 4. Прошиваем ESP-01
Продолжаем работу с микроконтроллером ESP8266, а вернее с FLASH-памятью, подключенной к ней для хранения ПО и настроек.
Сегодня мы попробуем в эту память что-нибудь записать, или, как говорят, прошить её, тем самым обновить программное обеспечение до другой более новой версии.
Также, при необходимости, мы теперь можем вернуть прошивку прошлой версии, которая была в модуле, так как в прошлом уроке мы её смогли считать и сохранить, причём в удобном виде.
Попробуем мы это сделать тремя способами. Первые два – с использованием программ с графическим интерфейсов Flash Download Tools и nodemcu-flasher, а третий – с командной строки при помощи утилиты esptool, с помощью которой мы считывали прошивку.
Для начала нам нужны, конечно же, файлы для прошивания памяти.
Скачаем необходимый SDK с официального сайта Espressif. В случае модуля ESP-01, мы, скорее всего не сможем воспользоваться третьей версией SDK, так как в ней нет прошивки, пригодной для схемы 512+512. Наши методы прошивания подойдут не только для модулей ESP-01, а и для любых других модулей, где установлен контроллер ESP8266, поэтому вполне можно и воспользоваться SDK3. Но в нашем случае мы скачаем последнюю на данный момент SDK 2.2.1 отсюда. Комплект нужен именно NONOS (без использования операционной системы).
Распакуем архив. Из него нам нужны будут для прошивания boot_v1.X.bin, версию подбираем, обычно последняя, файл esp_init_data_default_vXX.bin, я прошивал версию 05, файл blank.bin (если прошиваем неочищенную полностью память) из папки bin, а также файл userX.1024.new.2.bin из папки bin\at\512+512.
Для начала давайте очистим полностью FLASH-память нашего модуля.
Сначала подключим нашу схему, которая с прошлых занятий не изменилась.
Запускаем командную строку, находясь сразу в каталоге с файлами прошивок, которые мы создали, когда считывали прошивку из модуля, переведём модуль в режим прошивки и отправим следующую команду
После удачного стирания памяти мы получим вот такое сообщение
Ещё раз уточним, что и с какого адреса прошивать, открыв мануал по AT
Теперь запустим Flash Download Tools и подключим файлы новой прошивки, прописав соответствующие адреса, заодно также подключим и файл blank.bin, который прошивается по трём адресам, но отмечать для прошивания мы его не будем, так как у нас память уже полностью очищена. Также выберем настройки внизу под наши параметры
Переводим модуль в режим прошивки и жмём кнопку START.
При удачном завершении операции мы получим вот такую картину
Вообще, признаться, когда я писал данный пост, у меня впервые прошилось нормально с помощью данной программы, обычно всегда процесс приводил к ошибке.
Запустим ESPlorer, настроим порт и перезагрузим наш контроллер. Если у нас всё прошилось удачно, мы увидим приблизительно вот это
Мы видим, что загрузчик у нас новой версии, SDK тоже.
Теперь попытаемся прошить наш модуль с помощью nodemcu-flasher.
Сначала не забываем отключиться от порта в ESPlorer, затем снова очистим нашу память с помощью утилиты esptool.
Запустим nodemcu-flasher, сначала перейдём там в раздел Config и аналогично подключим файлы прошивки и отметим только нужные файлы (если бы мы не стирали полностью FLASH, то blank.bin тоже отмечаем)
Переводим модуль в режим прошивки, переходим в программе nodemcu-flasher в раздел Operation и жмём кнопку Flash( F ). Начнётся процесс заливки прошивки в FLASH-память модуля
При удачном исходе операции мы получим зелёную галку внизу
Как ни странно, у меня сейчас тоже всё прошилось. Обычно сразу три файла у меня никогда удачно не прошивались, только по очереди, и то не с первого раза. Посмотрим как пойдёт процесс при съёмке видеоверсии. Проверим наличие прошивки в программе ESPlorer. Если всё нормально, то у нас остался ещё третий метод прошивания FLASH-памяти модуля, а это утилита esptool.
Для удобства работы с ней мы скопируем из папки с новой прошивкой файлы boot_v1.7.bin, версию подбираем, обычно последняя, файл esp_init_data_default_v05.bin, я прошивал версию 05, файл blank.bin (если прошиваем неочищенную полностью память) из папки bin, а также файл user1.1024.new.2.bin в папку, которую мы сохраняли прошивку с модуля и в которой мы в данный момент находимся в режиме командной строки. Прошивать будем каждый файл по отдельности, хотя можно прошить и вместе.
Перейдём в командную строку и, соответственно, сначала очистим FLASH-память нашего модуля перед прошивкой.
Затем переведём модуль в режим прошивки и попытаемся прошить сначала самый маленький файл
Насчёт параметров, надеюсь тут всё понятно. Первый – это порт, к которому подключен модуль, второй – скорость порта, третий – метод прошивания (без сжатия), четвертый – частота шины SPI, пятый – её тип (обычный двухпроводной, а не QSPI), шестой – объём памяти FLASH в мегабитах, седьмой – адрес, с которого заливается файл прошивки, восьмой – имя файла прошивки, которую мы заливаем в FLASH.
При удачном исходе мы получим следующее сообщение
Подобным образом прошьём и остальные файлы, не забывая перед каждой командой переводить модуль в режим прошивания, хотя можно это делать и после, но, руководствуясь моим опытом, лучше ДО
Проверим на всякий случай наличие прошивки в ESPlorer.
Таким же образом мы можем прошить наши файлы, которые мы считали в прошлом занятии, например, в том случае, если нам по каким-то причинам не понравится новое ПО, которое мы только что прошили.
Итак, на данном уроке мы научились прошивать модуль ESP-01, хотя вполне можно тем же образом прошивать и другие модули, основанные на микроконтроллере ESP8266. Для процесса прошивания мы использовали три метода. Какой метод лучше подходит – выбирать вам!
Различные модули ЕSP8266 можно приобрести здесь Модули ЕSP8266
Переходник USB to TTL можно приобрести здесь ftdi ft232rl
Многофункциональный переходник CJMCU FT232H USB к JTAG UART FIFO SPI I2C можно приобрести здесь CJMCU FT232H USB
Смотреть ВИДЕОУРОК (нажмите на картинку)
Источник статьи: http://narodstream.ru/esp8266-urok-4-proshivaem-esp-01/