Прошивка NodeMCU: как залить скетч в ESP8266 через Arduino IDE
Прошивка — это запись готовой программы в память платы. С Arduino Uno вы уже делали это кнопкой Загрузить, и на ESP8266 снаружи всё выглядит так же, но внутри механика своя: утилита esptool сбрасывает чип в режим прошивки и записывает образ во внешнюю флеш-микросхему, откуда ESP8266 читает программу при каждом старте. Хорошая в том, что USB-UART переходник покупать не нужно: мост CH340 или CP2102 уже стоит на плате NodeMCU и превращает USB-кабель в линию связи с чипом. Плохая — мосты бывают разные, кабели попадаются зарядные, а меню настроек длиннее, чем у Uno: эти три обстоятельства и съедают вечер новичку.
Пока плата едет с маркетплейса, принципы можно прогнать в симуляторе платы — скетчи там исполняются прямо в браузере. Приехала посылка — начните с карты выводов из распиновки ESP8266: после прошивки захочется подключить датчик, и знание strap-пинов сэкономит ещё один вечер. Ниже — маршрут от чистой среды до первой живой прошивки за три шага.
Что понадобится
Если среда ещё не установлена — от скачанного инсталлятора до первого порта всё разобрано в лендинге про установку Arduino IDE. Единственное, что на Windows иногда ставится руками, — драйвер моста: путь наименьшего сопротивления с файлами и диспетчером устройств собран в шпаргалке про CH340 (CP2102 ставится из того же набора).
Шаг 1. Установка платы ESP8266 в Arduino IDE
- Файл → Настройки → поле «Дополнительные ссылки для Менеджера плат»: вставьте http://arduino.esp8266.com/stable/package_esp8266com_index.json и нажмите ОК.
- Инструменты → Плата → Менеджер плат: в поиске наберите esp8266, выберите пакет «esp8266» от ESP8266 Community и нажмите Установить — тянется несколько сотен мегабайт.
- Дождитесь конца загрузки: полоса идёт внизу окна, на медленном канале это пять-десять минут, и прерывать процесс нельзя — прерванный пакет ляжет в систему криво, и скетч потом не соберётся.
- После установки раскройте Инструменты → Плата → ESP8266 Boards: в списке объявится полтора десятка плат, среди них и нужная NodeMCU.
Шаг 2. Настройки платы и порта
Пакет добавил полтора десятка плат — берите правильный пункт: Инструменты → Плата → ESP8266 Boards → NodeMCU 1.0 (ESP-12E Module). Это классический выбор для NodeMCU V3 и большинства клонов; у свежих пакетов есть и отдельный пункт LOLIN (WEMOS) D1 R2 & mini для D1 mini. Дальше пройдитесь по меню Инструменты ещё раз — там раскладка настроек:
| Пункт меню | Значение | Пояснение |
|---|---|---|
| Плата | NodeMCU 1.0 (ESP-12E Module) | Стандартный пункт для NodeMCU V3 и клонов; для Wemos D1 mini — LOLIN (WEMOS) D1 R2 & mini |
| Upload Speed | 115200 | Надёжная скорость прошивки; повышенные значения срываются на дешёвых кабелях |
| CPU Frequency | 80 MHz | Штатная частота чипа; 160 MHz оставьте на случай тяжёлых скетчей |
| Flash Size | 4MB (FS:2MB OTA:~1019KB) | На NodeMCU V3 стоит флеш 4 МБ; вариант с OTA резервирует сектор под обновления по воздуху |
| Порт | COMx (USB-SERIAL CH340 / CP2102) | Название зависит от моста и системы; на macOS пункт вида /dev/cu.usbserial-XXXX |
Шаг 3. Первая прошивка: WiFi-сканер
Первым скетчем разумнее проверить не светодиод, а главное достоинство чипа — радиомодуль: сканер эфира покажет, что плата живая, антенна работает, а монитор порта читается. Скетч проще некуда:
#include <ESP8266WiFi.h> void setup() { Serial.begin(115200); // монитор порта открываем на этой же скорости WiFi.mode(WIFI_STA); // режим клиента: чип слушает эфир, сеть не раздаёт WiFi.disconnect(); // забыть сохранённую сеть, чтобы скан шёл чисто delay(100);} void loop() { Serial.println(); Serial.println("Сканирую эфир..."); int found = WiFi.scanNetworks(); // поиск занимает две-три секунды Serial.print("Найдено сетей: "); Serial.println(found); for (int i = 0; i < found; i++) { Serial.print(i + 1); Serial.print(") "); Serial.print(WiFi.SSID(i)); // имя сети Serial.print(" | "); Serial.print(WiFi.RSSI(i)); // уровень сигнала, отрицательный Serial.println(" dBm"); } delay(5000);}Нажмите Загрузить и следите за низом окна. IDE сначала собирает скетч, затем запускает esptool: тот сбрасывает плату служебными линиями USB-моста, чип входит в режим прошивки (светодиод на борту коротко мигает), на строке Connecting… идут точки — и образ записывается во флеш. В конце плата перезапускается сама, и в мониторе порта на 115200 сыплются соседские сети. Уровень сигнала в списке всегда отрицательный: RSSI измеряется в децибел-милливаттах, где −40 — уверенный приём у роутера, −70 — сигнал через стену, а −85 — на грани слышимости. Разбор WiFi-функций с кодом — в уроке про первый WiFi-скетч ESP32: библиотека там родственная, почти весь текст переносится на ESP8266.
Всё — плата прошита как обычная Uno: дальше пишутся свои setup() и loop(), а механика кнопок Проверить и Загрузить та же. Как устроена дорога скетча от клика до флеша для любой платы — в уроке про загрузку скетча.
Если прошивка не заливается
- Плата молчит, светодиодов ноль, в списке портов пусто — кабель: зарядные шнуры без линий обмена остаются виновником номер один. Возьмите гарантированно четырёхжильный и повторите.
- Загрузка висит на Connecting........____ — чип не входит в режим прошивки: зажмите кнопку FLASH на плате, нажмите Загрузить и отпустите, когда пойдут точки. Кнопка замыкает GPIO0 на землю — так чип принудительно ставится в flash-режим.
- Запись срывается на середине с текстом Timed out waiting for packet header — снизьте Upload Speed до 57600 и воткните кабель в порт на материнской плате, без хаба и удлинителей.
- Порт есть, а загрузка мгновенно отваливается или пункт Порт серый — порт занят чужой программой: закройте монитор порта и любой сторонний терминал, потом жмите Загрузить заново.
- Прошивка прошла, но скетч не стартует, а в монитор на 74880 бод сыплется лог загрузчика со строкой boot mode:(1,6) — что-то тянет strap-пины GPIO0, GPIO2 или GPIO15 (D3, D4, D8) не туда: отключите периферию с этих пинов и перепрошейте.
- Каша символов в мониторе вместо сетей — скорость монитора не совпала со скоростью Serial.begin: выставьте 115200 в выпадающем списке панели монитора.
Плата ожила, скетч крутится — дальше короткая дорога: берите модули из справочника датчиков, сверяйте выводы с распиновкой ESP8266 и собирайте первый IoT-проект по урокам раздела ESP32 и ESP8266 — код между чипами переносится почти без правок.