Esp8266 nodemcu прошивка. делаем wifi розетку

Запись прошивки на ESP8266

Дальнейшие действия зависят от того, с какой ESP8266-платой вы работаете.

Вариант А – загрузка прошивки на ESP-12E

Запись новой прошивки на ESP-12E NodeMCU Kit делается очень просто, т.к. эта плата имеет встроенный программатор. Вам не понадобится никаких дополнительных подключений – вам нужно будет просто подключить плату к компьютеру и все.

Вариант Б – Загрузка прошивки на ESP-01

Загрузка кода на ESP-01 требует настройки последовательной коммуникации между ESP8266 и FTDI-программатором.

Важно: У большинства FTDI-программаторов есть перемычка для переключения между 5 и 3.3 вольтами. Обязательно убедитесь, что она стоит на 3.3 вольтах.. Чтобы настроить последовательную коммуникацию между ESP8266 и FTDI-программатором, подключите их друг к другу как показано на схеме ниже.

Чтобы настроить последовательную коммуникацию между ESP8266 и FTDI-программатором, подключите их друг к другу как показано на схеме ниже.

Вот контакты, которые нужно подключить друг к другу:

  • RX (ESP8266) –> TX (FTDI-программатор)
  • TX –> RX
  • CH_PD –> 3.3V
  • GPIO0 –> GND
  • VCC –> 3.3V
  • GND –> GND

Примечание: На схеме контакт GPIO0 подключен к GND, т.к. мы хотим загрузить на ESP8266 новый код. При нормальном использовании (т.е. когда вы не записываете на ESP8266 новую прошивку) контакт GPIO0 должен быть подключен к VCC.

«Раскирпичивание» FTDI-программатора на Windows-ПК

Если у вас возникли проблемы с установкой FTDI-драйверов на Windows 7/8/8.1/10, то ваш FTDI-программатор, скорее всего, «окирпичился». О том, как это исправить, можно посмотреть здесь.

Что такое NodeMCU?

NodeMCU — открытый бесплатный проект на основе скриптового языка Lua. Прошивка достаточно мощная и позволяет очень быстро реализовывать различные типовые проекты. Например, сегодня, в качестве знакомства, мы сделаем WiFi розетку с управлением с мобильного телефона и с  Web-интерфейсом. Прошивка умеет исполнять Lua-скрипты как из последовательного UART порта (аналогично AT-командам) так и из внутренней flash памяти (выполняя скрипты). Lua скрипты сохраняются во Flash во внутренней файловой системе. Файловая система плоская, упрощенная. Т.е. без подкаталогов. Тем не менее — это круто. Не стоит забывать, что ESP8266 — это всего лишь микроконтроллер. Из скриптов так же можно получить доступ к файлам, читать и сохранять различную информацию. NodeMCU модульная. Что с одной стороны позволяет наращивать функционал, а с другой собрать прошивку только из требуемых модулей, не расходуя понапрасну память.

NodeMCU работает с протоколами обмена данными — HTTP, MQTT, JSON, CoAP.

Поддерживаются различные датчики —
акселерометры ADXL345,
магнитометры  HMC5883L,
гироскопы L3G4200D,
датчики температуры и влажности AM2320, DHT11, DHT21, DHT22, DHT33, DHT44
датчики температуры, влажности, атмосферного давления BME280,
датчики температуры, атмосферного давления BMP085,
множество дисплеев работающих по шинам I2C, SPI. С возможностью работы с разными шрифтами.
TFT дисплеи ILI9163, ILI9341, PCF8833, SEPS225, SSD1331, SSD1351, ST7735,
умные светодиоды и LED контроллеры — WS2812, tm1829, WS2801, WS2812,
поддерживаются интерфейсы — 1-Wire, I2C, SPI, UART,
Также можно задействовать модуль шифрования, планировщик задач, часы реального времени, протокол синхронизации часов через интернет SNTP, таймеры, АЦП канал (один), проигрывать аудио файлы, формировать на выходах ШИМ-сигнал (до 6), использовать сокеты, есть поддержка FatFS, т.е можно подключать SD-карточки и так далее.

Подробная документация NodeMCU здесь: https://nodemcu.readthedocs.io/en/master/

Как быстро подключить ESP8266

В минимальный набор для подключения и прошивки модуля ESP8266 входит:

2. Убедиться два раза, что питающее напряжение для модуля составляет 3,3 вольта.

Внимание! Допустимый диапазон напряжения питания модуля ESP8266 от 3,0 до 3,6 вольт. Подача повышенного напряжения питания на модуль гарантированно приведет к выходу ESP8266 из строя

Питающее напряжение может быть и существенно ниже 3 вольт, заявленных в документации

Внимание! 

Внимание!

ESP8266 — подключение

Красный — питание 3,3в

Черный — GND

Желтый — на стороне ESP8266 — RX, на стороне USB-TTL — TX

Зеленый  — на стороне ESP8266 — TX, на стороне USB-TTL — RX

Оранжевый — CH_PD (CHIP ENABLE) — должен быть всегда подтянут к питанию

Синий — GPIO0 — подключен через выключатель к земле для включения режима перепрошивки модуля. Для обычного старта модуля GPIO0 можно оставить никуда не подключенным.

Розовый на правой схеме — нестабилизированное питание 5-8 вольт

4. Для старта модуля разорвите цепь GPIO0 — GND и можете подавать питание (причем именно в таком порядке: сначала убеждаемся, что GPIO0 «висит в воздухе», затем подаем питание на VCC и CH_PD)

Внимание! В вышеприведенных, реально работающих, примерах подключения ESP8266 используется подключение выводов ESP8266 «напрямую» к земле и питанию, либо «висячее в воздухе», как у нас никуда не подключен RESET, что является абсолютно неправильным и пригодно только для пары первых экспериментов, хотя и вполне работоспособно на подавляющем большинстве модулей. «Напрямую» к питанию подключается только вывод VCC, остальные выводы: CH_PD, RESET, GPIO0, GPIO2, должны быть подтянуты (pullup) к питанию (VCC) через резистор от 4,7 до 50 кОм

«Напрямую», к минусу (общему проводу) питания подключаем только GND, а GPIO0 подтягиваем (pulldown) тоже через резистор до 10k к GND для перевода модуль в режим загрузки прошивки. Если вы планируете и дальше экспериментировать с ESP8266, то сделайте , впрочем так же как и для любых других микроконтроллеров. Детальное описание pullup и pulldown выходит за рамки данной статьи, но вы сможете легко нагуглить описание правильного подключения портов ввода-вывода. «» подключение позволит вам избежать множества «чудес» и проблем и будет неизбежно необходимым при возникновении затруднений с запуском или перепрошивкой модуля ESP8266.

Начальная прошивка ESP8266 с WiFi

Сегодня на базе чипа ESP8266 выпускается большое количество модулей, о них мы писали в отдельной статье, посвященной этому микроконтроллеру. Заводские ESP8266 идут со стандартной прошивкой от компании Espressif. Этот софт позволяет работать с модулем вай-фай как с обычным модемом, то есть посредством AT команд, которые подаются на последовательный порт.  Таким образом, вы можете использовать модули «из коробки» как внешнее WiFi устройство (в зависимости от режима работы это может быть и точка доступа, и ретранслятор).

Но огромным преимуществом ESP8266 является возможность использовать его как микроконтроллер, подключая вешние устройства и программируя логику систему через прошивку. Вот об этом мы и поговорим.

Установка Arduino IDE через Boards Manager

  1. Запустить Arduino IDE, далее Файл — Настройки — в поле Additional Boards Manager URLs вставить ссылку на стабильную версию
    http//arduino.esp8266.com/package_esp8266com_index.jsonили для nightly build
    http//arduino.esp8266.com/staging/package_esp8266com_index.json, нажать OK (В это поле вы можете вводить несколько ссылок, разделенных запятой)
  2. Инструменты — Плата — Boards Manager
  3. В Boards Manager в поле фильтра введите esp8266 или вручную пролистайте список и кликните на ESP8266 by ESP8266 Community Forum
  4. Кликните Install и дождитесь окончания загрузки (около 130 Мегабайт). Если загрузка произошла слишком быстро, возможно, что вы уже устанавливали Arduino IDE для ESP8266 и потребуется почистить кэш Boards Manager, иначе у вас останется установленной старая версия. Нужно сначала деинсталлировать старую версию, а потом необходимо удалить файлы кэша. Для Win7 x64 удалите файлы из папки C:\Users\Пользователь\AppData\Roaming\Arduino15 и повторите все, начиная с п.2
  5. Закройте Boards Manager и в меню Инструменты выберите Плата — Generic ESP8266
  6. Установите частоту вашего модуля 80 или 160Mhz, размер флеш памяти и выберите последовательный порт, к которому подключен ваш USB-TTL адаптер

Как все это еще улучшить?

Улучшать можно бесконечно (в тех пределах, которые позволит оперативка, конечно)

Alertmanager-bot — telegram бот для отправки PUSH уведомлений в Telegram
 

cAdvisor — мониторинг ресурсов занятых каждым контейнером
 
Можно прикрутить на алармы amixr чтобы получать уведомления в виде звонков на телефон и SMS.
 
Добавить в prometheus мониторинг и статистику nginx
 
Добавить в prometheus мониторинг influx

 
Добавить в prometheus мониторинг чего-нибудь еще 🙂
 
Добавить контейнер Loki для просмотра логов в Grafana
 
Добавить контейнер с сервером OpenVPN, чтобы ходить в интернет через облако Oracle
 
Можно сделать стартовые скрипты создания пользователей, брать пароли из защищенного хранилища…
 
и много чего еще — было бы желание 🙂
 
 
 
 
Эта статья написана специально для пользователей мобильного приложения IoT Manager (telegraf ожидает сообщения MQTT в JSON формате)
Обсуждение этой статьи у нас на форуме

Обсуждение этой статьи в telegram канале Дмитрия Борисенко 
 
Спасибо, что дочитали до конца.

Подписка на (бесплатные) облачные сервисы

В конце нам необходимо создать бесплатные учетные записи на двух веб-сайтах облачных сервисов: Adafruit IO и IFTTT.

Adafruit IO — это облачная служба данных, которая позволяет вам настраивать потоки данных, называемые каналами, для сбора информации, поступающей от ваших проектов в области электроники. Вы можете визуализировать и использовать эти каналы в Adafruit IO или расширить его функции, связав его с IFTTT.

IFTTT — это сайт, который объединяет и предоставляет интерфейс для множества приложений и поэтому называется шлюзом API.

Перейдите на io.adafruit.com и нажмите «Войти» (Sign In), затем «Зарегистрироваться» (Sign Up), чтобы создать учетную запись. Вы должны использовать надежные, уникальные пароли. Вас могут попросить подтвердить ваш адрес электронной почты.

На IFTTT.com нажмите кнопку «Зарегистрироваться» (Sign up), чтобы создать учетную запись.

Я настоятельно рекомендую включить двухфакторную аутентификацию в вашей учетной записи IFTTT, так как вы, скорее всего, захотите связать ее с другими вашими личными учетными записями, такими как Twitter, Instagram, Fitbit и т.д.

Защитите свои учетные записи от хакеров и спам-ботов! Вам также нужно будет связать свои аккаунты Adafruit и IFTTT, что вы можете сделать через любой сайт. Пока вы на нем, установите приложение IFTTT, если у вас есть устройство iOS или Android.

Теперь, когда ваше программное обеспечение настроено, мы сможем в следующих материалах углубиться в аппаратное обеспечение.

Статьи

  • 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 и пример работы с ним.

Цели и причины

Это вторая статья автора об интегральной микросхеме ESP8266, содержащей полнофункциональный 32-битный RISC микроконтроллер и встроенную Wi-Fi схему 802.11 b/g/n. Первая статья описывала использование Arduino IDE для программирования ESP8266 и содержит важную информацию, которая здесь повторяться не будет. Если вы не читали её, то рекомендуем сделать это.

В интернете нет недостатка в информации об ESP8266; на самом деле, может быть из неё слишком много… неправильной. Разработчики микросхемы, Espressif, по-видимому, решили не только не заниматься производством на стороне, но и избегать непосредственного участия в разработке линейки модулей ESP, которые используют микросхему ESP8266. Вместо этого, они предлагают информацию и услуги поддержки через форум для тех, кто готов с упорством и терпением ходить по лабиринту. Добавление к путанице – это существование другого форума, который, несмотря на то, что назван esp8266.com, не управляется компанией Espressif. Кроме того, существует множество перепродавцов, видеоблоггеров, и писателей, которые также предлагают информацию от качественной до спутанной настолько, что она может быть полностью неправильной.

ESP модули доступны в различных источниках, а прошивки, содержащиеся в чипах ESP8266 на модулях, почти всегда являются устаревшими и часто вызывают подозрения относительно их происхождения. Также иногда подозрительны «обновления» и инструменты, которые доступны в тех же источниках. Следовательно, целью этой статьи является документирование процедуры загрузки последней доступной прошивки непосредственно от Espressif и её установка с использованием инструмента программирования, предоставляемого Espressif.

Web интерфейс

Есть и другой путь — можно сделать Web интерфейс и управлять светодиодом еще и через браузер.

Тот же скрипт + Web интерфейс:

Небольшое пояснение как работает web-сервер вообще, и наш скрипт в частности. Стандартный порт для web-сервера — 80. Т.е. когда Вы в браузере набираете http://192.168.4.1/, то браузер подключается к серверу (192.168.4.1) на порт 80 и отправляет запрос. Запрос выглядит примерно так:

GET / HTTP / 1.1
Host: 192.168.4.1
User-Agent: Mozilla / 5.0 (Windows NT 5.1; rv: 2.0.1) Gecko / 20100101 Firefox
Accept: text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8
Accept-Language: ru-RU, ru; q = 0.8, en-US; q = 0.5, en; q = 0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1

Для нас представляет интерес первая строка запроса: «GET / HTTP/1.1». В ней указан URL. Если в браузере набрать http://192.168.4.1/on , тогда в первой строке запроса будет «GET /on HTTP/1.1». А если в браузере набрать http://192.168.4.1/off тогда будет «GET /off HTTP/1.1». Именно эту строку и анализирует скрипт и в зависимости от полученного URL включает или отключает светодиод.
Далее скрипт отправляет html страничку. Но после отправки нужно разорвать подключение. Поскольку отправка занимает некоторое время, а ждать окончания отправки технически глупо, на событие «sent» (отправлено) подключим функцию со строкой sck:close(). Это делается в строке: sck:on(«sent», function(sck) sck:close() end). После чего выполняется отправка html страницы sck:send(response). Скрипт продолжает работу. Когда ответ будет полностью отправлен, сработает sck:close().

Страницы большого размера таким образом отправить не получится. Весомое содержимое нужно отправлять кусками. Подробнее об этом будет рассказано в другой статье.

Настройка ESP8266

Итак, ESP8266 модуль к USB порту мы подключили (через USB-TTL или Arduino) теперь нужно убедится, что драйвера к вашим USB-TTL или Arduino встали корректно и в системе появился новый виртуальный последовательный порт. Вам понадобится программа — терминал последовательного порта. Можете использовать любую на ваш вкус, но она должна удовлетворять следующему требованию: каждая команда, которую вы отправляете с компьютера в последовательный порт должна завершаться символами CR+LF.

Ваш покорный слуга является автором open-source программы ESPlorer, получившей международное признание. ESPlorer позволит вам не вводить AT команды вручную и легко работать с lua скриптами под NodeMCU (об этом в другой раз) и вы вполне можете использовать ее и как обычный терминал. Обсуждение ESPlorer на нашем форуме и на esp826.com

С подключением к последовательному порту придется немного поколдовать: в связи с разнообразием прошивок для ESP8266, подключение может осуществляться на разных скоростях. Нужную скорость можно определить путем простого перебора трех вариантов: 9600, 57600 и 115200. Как осуществить перебор? Подключаетесь в терминальной программе к вашему виртуальному последовательному порту выставив следующие параметры: 9600 8N1, затем перезагружаете модуль, отключив CH_PD (chip enable) от питания (USB-TTL при этом остается подключенным к USB) и снова включаете (т.е. просто передергиваете CH_PD, почему не передергиваем питание — читаем , также можно кратковременно замкнуть RESET на землю для перезагрузки модуля) и наблюдаете данные в терминале. Во-первых, светодиоды на ESP8266 должны гореть как описано в начале статьи в разделе . Во-вторых, в терминале вы должны увидеть «мусор» из разных символов, оканчивающийся строкой «ready». Если «ready» мы не видим, то переподключаемся терминалом на другой скорости и снова перезагружаем модуль.

На одном из вариантов скорости «ready» вы все-таки увидите — поздравляем, ваш модуль готов к работе.  Если нет, то добро пожаловать к нам на форум — мы постараемся помочь, но предварительно почитайте эту тему.

Немного подробнее о «мусоре». Дело в том, что при старте прошивки, UART модуля ESP8266 переключается на скорость передачи 74 880 (вот такие забавные эти китайцы) выдает в UART отладочную информацию, затем переключает скорость порта на 115200 (ну или на 9600 или 57600 в зависимости от версии прошивки), так вот эта отладочная информация и видится нам как мусор, т.к. мы подключаемся к модулю на другой скорости. Можете подключится к ESP8266 на скорости 74 880 (ESPlorer поддерживает эту скорость) и вы эту отладочную информацию увидите, будет что-то вроде этого:

wdt reset
load 0x40100000, len 25052, room 16
tail 12
chksum 0x0b
ho 0 tail 12 room 4
load 0x3ffe8000, len 3312, room 12
tail 4
chksum 0x53
load 0x3ffe8cf0, len 6576, room 4
tail 12
chksum 0x0d
csum 0x0d

1
2
3
4
5
6
7
8
9
10
11
12

wdt reset

load0x40100000,len25052,room16

tail12

chksum0x0b

hotail12room4

load0x3ffe8000,len3312,room12

tail4

chksum0x53

load0x3ffe8cf0,len6576,room4

tail12

chksum0x0d

csum0x0d

НО! не увидите «ready» и не сможете управлять модулем, пока не переподключитесь на ту скорость, на которой работает прошивка.

Установка прошивки

Запустите ESP flash download tool и убедитесь, что ни в одном чекбоксе в левом верхнем углу окна GUI не поставлена галка. Введите COM порт, который вы используете, и скорость передачи 115200 в полях ввода в нижней части окна

Обратите внимание, что при вводе данных они записываются в окне журнала

Подайте питание на свою сборку для программирования ESP и подключите её к компьютеру. Нажмите и удерживайте кнопку Reset, а затем нажмите и удерживайте кнопку Flash. Отпустите кнопку Reset, а затем отпустите кнопку Flash. Нажмите кнопку START окне GUI инструмента прошивки ESP. Программа загрузки флэш-памяти должна проверить ESP8266 в вашей сборке и создать отчет, похожий на тот, что приведен ниже. Нажмите и отпустите кнопку Reset на вашем макете, чтобы выйти из режима прошивки ESP8266 и возобновить нормальную работу.

Окно графического интерфейса ESP Flash Download Tool. Вывод информации о микросхеме ESP8266Терминальное окно ESP Flash Download Tool. Вывод информации о микросхеме ESP8266

Обратите внимание, что теперь окно GUI содержит информацию об ESP8266, включая размер флэш-памяти (в примере 8 Мбит), тактовую частоту (в примере 26 МГц) и два MAC-адреса для чипа. Такая же информация содержится в окне журнала

Затем кликните в окне GUI по чекбоксу с надписью «SpiAutoSet«, что заставит инструмент загрузки автоматически выбрать правильные размер флэш-памяти и тактовую частоту.

Теперь нам нужно выбрать файлы для установки в ESP8266 и установить начальный адрес памяти для каждого файла. Чтобы обновить ESP чип, необходимо правильно установить четыре файла. Откройте «Руководство пользователя Espressif IOT SDK» и найдите раздел о записи образов во флэш-память. В версии 1.4 руководства он начинается со страницы 20. Затем найдите подраздел, который описывает версию поддерживаемую Cloud Update (FOTA), и в этом подразделе найдите таблицу о размере флэш-памяти в вашем ESP8266. В этом примере размер флэш-памяти составляет 8 Мбит, что равно 1024 килобайт, следовательно, в таблице 2 на странице 25 руководства содержится информация, необходимая для примера. Посмотрим на рисунок ниже.

Таблица адресов флэш-памяти для загрузки файлов прошивки ESP8266

Необходимы эти четыре файла: 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 должно быть похоже на рисунок ниже. Дважды проверьте адреса по таблице

Теперь кликните на четыре флажка слева от имени каждого из файлов. Окно графического интерфейса программы Flash Download Tool должно быть похоже на рисунок ниже. Дважды проверьте адреса по таблице.

Настройка параметров прошивки ESP8266 в программе Flash Download Tool

На своем макете прошивки ESP нажмите и удерживайте кнопку Reset, а затем нажмите и удерживайте кнопку Flash. Отпустите кнопку Reset, а затем отпустите кнопку Flash. Нажмите кнопку START окне GUI инструмента прошивки ESP. Должна начаться загрузка, и её прогресс должен быть показан в окне графического интерфейса и окне журнала Flash Download Tool, как показано ниже.

Отображение процесса загрузки прошивки ESP8266 в терминальном окне Flash Download Tool

Как показано выше, успешная операция прошивки флэш-памяти приведет к тому, что все файлы будут отправлены в ESP8266, а COM порт будет закрыт.

Как запрограммировать

При установке поставьте галочку в пункте «Add python.exe to PTH»

Далее открываем командную строку Пуск>выполнить>cmd

Проверьте установленную версию Python. Введите в командной строке:

C++

python —version

1 python—version

Установите через менеджер пакетов pip утилиту esptool. Проверьте версию программы.

C++

pip install esptool

1 pip install esptool

C++

esptool.py version

1 esptool.py version

Вы должны получить у себя на компьютере примерно такое же окно. 

Теперь перейдём непосредственно к стиранию памяти. Нам необходимо ввести строку со следующими параметрами:

C++

esptool.py —port COM1 erase_flash

1 esptool.py—port COM1 erase_flash

кратко опишу команды:

 — запуск утилиты;

 — номер COM-порта устройства. Узнайте ваш номер в диспетчере задач;

erase_flash — очищает полностью память ESP

В моём случае преобразователь COM порта был установлен на COM1. Вы у себя измените номер порта если в этом есть необходимость.

Теперь нам нужны файлы для прошивания памяти ESP. 

Скачаем необходимый SDK с официального сайта Espressif. Тут читаем что такое SDK. В случае модуля ESP-01, мы, скорее всего не сможем воспользоваться третьей версией SDK, так как в ней нет прошивки, пригодной для схемы 512+512. Наши методы прошивания подойдут не только для модулей ESP-01, а и для любых других модулей, где установлен контроллер ESP8266, поэтому вполне можно и воспользоваться SDK3. Но в нашем случае мы скачаем последнюю на данный момент SDK 2.2.1 отсюда. Комплект нужен именно NONOS (без использования операционной системы). Попытаюсь дать прямую ссылку на архив ESP8266 NONOS SDK V2.2.1

Распакуем архив. Из него нам нужны будут для прошивания boot_v1.X.bin, версию подбираем, обычно последняя, файл esp_init_data_default_vXX.bin, я прошивал версию 05, файл blank.bin (если прошиваем неочищенную полностью память) из папки bin, а также файл userX.1024.new.2.bin из папки bin\at\512+512.

Ещё раз уточним, что и с какого адреса прошивать, открыв мануал по AT командам. А тут можно ознакомиться с AT командами на русском языке. Только там далеко не полный список.

Обновление прошивки ESP8266

Модуль ESP8266 замечателен тем, что не требует специального программатора — обновление прошивки производится на том же железе, на котором вы подключаете модуль ESP8266 к компьютеру, т.е. тоже через USB-TTL конвертер (ну или Arduino или RPi). Для обновление прошивки на модуле ESP8266 проделайте следующее:

для Win систем подойдет XTCOM UTIL (удобно работать, если прошивка состоит из одного файла), мультиплатформенный esptool (требуется python, нужно указывать параметры в командной строке),  FLASH DOWNLOAD TOOL (много настроек, удобно прошивать прошивки, состоящие из нескольких файлов, позволяет «собрать» прошивку в один файл из нескольких). Также вы найдете и другие программы для прошивки ESP8266 — попробуйте разные и пользуйтесь той, которая вам больше понравится.

3. Отключите от последовательного порта вашу терминальную программу

4. Отключите CH_PD от питания, подключите GPIO0 модуля к GND, подключите обратно CH_PD модуля.

5. Запускайте программу для прошивки модуля и загружайте новую прошивку в модуль ESP8266.

Загрузка прошивки в модуль обычно осуществляется на скорости 115200, но режим прошивки модуля поддерживает автоопределение скорости и прошивка может быть осуществлена на скорости от 9600 и выше. Максимальная скорость зависит от многих факторов (вашего USB-TTL конвертера, длины проводов и прочего) и может быть определена экспериментально на конфигурации именно вашего оборудования.

Все последние версии прошивок загружаются с нулевого адреса (0x00000).

В статье Обновление прошивки ESP8266 подробно описана загрузки прошивки в модуль с помощью программы XTCOM_UTIL.

Использованная литература

Step 5: Flashing Procedure

Extract the Flash Download Tools zip file and open the exe file. Make sure to run it as administrator if you’re using Windows. A DOS window will first open, followed by a pop-up window. Select ESP8266 Download Tool. This will open a window with several configurable options.

At this stage, refer to the screenshot to see exactly what options to select and what to type in the hex code boxes next to each of the selected firmware files.

Note: Select the firmware files in the same order since the flash procedure is done sequentially. The blank.bin file needs to be selected three times as shown in the AT instruction set screenshot.

To find the correct hex codes or addresses, check the official AT instruction set document. I have attached a screenshot of the table which i used for flashing my ESP module.

Then, just press on the START button and watch the magic happen. The button text will show SYNC and the DETECTED INFO section will display the specifications of your ESP module. Then, the text will show DOWNLOAD and the progress bar will activate as the firmware files are uploaded to the ESP flash memory. After the firmware flashing procedure is done, you will see: FINISH.

Close the Flash Download Tools program. This is necessary to free the serial port to allow the Arduino IDE Serial Monitor to take over.

Disconnect the ESP GPIO_0 pin from Ground connection. This will disable programming mode.

Connect RESET to Ground for 1 second and then disconnect. This will reset the module.

Open Arduino IDE. From the top menu, select Tools > Port > select the correct COM port. Open Serial Monitor and choose «Both NL & CR» and select baud rate of 115200 which is the default one.

Type:

AT

If the flashing procedure went correctly, the response will be:

OK

To verify your new firmware, type:

AT+GMR

Here is the Serial Monitor output for my ESP-01:

AT+GMR
AT version:1.6.2.0(Apr 13 2018 11:10:59)
SDK version:2.2.1(6ab97e9)
compile time:Jun  7 2018 19:34:26
Bin version(Wroom 02):1.6.2
OK

Некоторые правила работы с языком Lua на NodeMCU

1. Не пишите длинные скрипты. Размер памяти ESP8266 не бесконечен. Разбивайте программу на функциональные модули и делайте их в виде отдельных скриптов, запуская их с помощью dofile(). Например, код подключения к Wifi:

можно вынести в отдельный скрипт «wifi.lua» и выполнить его из основного скрипта командой dofile(«wifi.lua»).

2. Переменные, которые используются только в текущем скрипте объявляйте как local. В конце скрипта, когда переменная уже не нужна, присваивайте ей значение nil и явно вызывайте сборщик мусора collectgarbage()

Желаю успехов.

Смотри также:

  • ESP8266 NodeMCU Первое знакомство. Делаем WiFi розетку
  • ESP8266 NodeMCU. PWM
  • ESP8266 NodeMCU. ADC
  • ESP8266 NodeMCU. timer, rtc, SNTP, cron
  • ESP8266 NodeMCU. Файловая система + SD карточка
  • ESP8266 NodeMCU. UART
  • GPS-трекер на базе ESP8266
  • GPS-трекер + Дисплей SSD1306
  • ESP8266 NodeMCU. SSD1306. U8G
  • ESP-01 (ESP8266) upgrade flash memory to 4MB
  • ESP8266 NodeMCU. I2C. BME280/
  • Метеостанция на ESP8266