NodeMCU - Что такое NodeMCU
NodeMCU - это платформа с открытым исходным кодом для IoT (интернет вещей) на базе языка eLua. Она включает в себя прошивку и плата разработчика, которая основана на модуле ESP-12. Термин «NodeMCU» по умолчанию относится к программной части, но в сети все больше вижу, что термин NodeMCU ассоциируется именно как аппаратная платформа, особенно в среде ардуинщиков.

Прошивка NodeMCU основана на официальном SDK от Espressif, использует файловую систему "SPIFFS" и имеет встроенный интерпретатор языка LUA. NodeMCU умеет выполнять скрипты как из последовательного порта "UART" так и загружать из файловой системы. Удобство NodeMCU заключается в его встроенном интерпретаторе языка LUA, для изменения или добавления новой функции, достаточно изменить скрипт с кодом, который хранится на файловой системе, без необходимости компилировать весь проект заново. Это значительно упрощает разработку и сокращает отладку проектов, так как загрузка скрипта в NodeMCU занимает значительно меньше времени, чем компиляция и прошивка всего проекта, как например при использовании arduino ide.
Плюсы:
- Простота программирования, схожа с Node.js
- Основана на Lua 5.1.4
- Асинхронное программирование
- Более 55 встроенных модулей
- Подробная документация https://nodemcu.readthedocs.io
- Работа с протоколами обмена данными: HTTP, MQTT, JSON, CoAP.
- Поддержка датчиков, дисплеев, "умных" светодиодов.
- Поддержка различных интерфейсов: 1-Wire, I2C, SPI, UART
- Поддержка шифрования, планировщик задач, таймеры и т.д.
Есть и свои недостатки, так как сама вирт. машина LUA съедает достаточно много памяти, нам остается ~ 45 KB. Для небольшой задачи этого вполне достаточно, но при разработки проекта с web - интерфейсом, и одновременной работы разных модулей, накладывает свои трудности. Но при грамотном подходе к написанию кода и использовании некоторых особенностей языка lua (разбитие проекта на отдельные файлы и загрузки их из файловой системы, использования потоков), заставляет искать решения оптимизируя код и делая проект только лучше, а так же саморазвиваться в программировании.)))
