NodeMCU Lua на ESP8266: возможности платы и первые шаги

Плата NodeMCU на модуле ESP8266 для устройств интернета вещей: характеристики, скрипты на Lua и работа в Arduino IDE.
Что такое NodeMCU
NodeMCU Lua — отладочная плата на базе модуля ESP8266. Она рассчитана на устройства интернета вещей, которым нужно отправлять данные в сеть или получать их по Wi-Fi.
От «голого» ESP8266 плату отличают три вещи. На ней есть преобразователь UART-USB с разъёмом micro USB, поэтому к компьютеру она подключается без переходников. На гребёнки выведены все доступные контакты ESP8266 — 11 портов ввода-вывода общего назначения, часть из них с дополнительными функциями. И наконец, в плату зашита прошивка с интерпретатором скриптового языка Lua.

| Процессор | 32-битный |
| Wi-Fi | 802.11 b/g/n |
| Напряжение питания | 3,3 В |
| Внешнее питание | 3,6–20 В |
| Ток при передаче данных | 200 мА |
| Ток при приёме данных | 60 мА |
| Подключение к компьютеру | microUSB |
| Flash-память | 4 Мб |
| Обновление прошивки | возможно по Wi-Fi |
| Датчик температуры | встроенный |
Что доступно из Lua
Lua — компактный и быстрый встраиваемый язык сценариев. Команды можно вводить прямо в терминале, а можно сохранять скрипты файлами во flash-памяти и запускать оттуда. Набор команд NodeMCU покрывает основные задачи:
- работа в режиме точки доступа Wi-Fi и подключение к существующей сети, в том числе автоматическое;
- переход в режим пониженного энергопотребления (сон);
- операции с файлами во flash-памяти;
- пользовательский таймер и сторожевой таймер WatchDog;
- управление выводами GPIO и чтение входа АЦП;
- обмен с устройствами по I2C;
- создание веб-сервера.
Пример на Lua: простой веб-сервер
Для работы со скриптами используют программу ESPlorer.

В примере создаётся файл server1.lua. Скрипт открывает TCP-сервер на порту 80 (net.createServer(net.TCP)) и на каждое обращение по HTTP отдаёт небольшую HTML-страницу с идентификатором чипа, MAC-адресом, объёмом свободной памяти и значением таймера; страница настроена на обновление каждые 10 секунд, после отправки соединение закрывается. Файл сохраняют в модуле и запускают. Для проверки нужно подключиться к точке доступа платы и открыть в браузере адрес 192.168.4.1. Чтобы сервер стартовал при включении, в конец файла автозапуска init.lua добавляют строку dofile(server1.lua).

Работа в Arduino IDE
Плату можно программировать и привычными скетчами. Для этого в Arduino IDE версии не ниже 1.6.5 устанавливают поддержку ESP8266.

В качестве примера рассмотрена отправка показаний аналогового датчика освещённости (фоторезистора) по протоколу MQTT на сервер mqtt-dashboard.com. Для связи с брокером нужна библиотека pubsubclient. В скетче перед загрузкой задают параметры своей сети — константы ssid и password. После запуска ход подключения виден в мониторе последовательного порта: плата соединяется с Wi-Fi и брокером, после чего публикует значения освещённости в теме OsoyooData. Подписавшись на эту тему в любом MQTT-клиенте на компьютере или планшете, показания можно получать в реальном времени.