Nodemcu Lua Wi-Fi на Esp8266

Содержание:

  • Обзор
  • Технические характеристики модуля
  • Подключение
  • Примеры использования (скриптовый язык Lua)
  • Примеры использования (скетч в среде программирования Arduino IDE)

NodeMCU Lua – плата на основе популярного модуля ESP8266 (рисунок 1) предназначена для создания IoT устройств (устройств Интернета вещей), которым необходима передача или получение данных в интернет с помощью технологии Wi-Fi.

Модуль Nodemcu Lua Wi-Fi на Esp8266

Рисунок 1. Модуль NodeMcu Lua


Технические характеристики модуля

  • Процессор 32-битный;
  • WiFi – 802.11 b/g/n;
  • Напряжение питания 3,3 В;
  • Внешнее питание 3.6–20 В;
  • Ток потребления: режим передачи данных– 200 мА, режим приёма данных – 60 мА;
  • Подсоединение к компьютер – вход microUSB;
  • Имеет встроенную flash память 4 Mбайт;
  • Поддержка в базовой прошивке интерпретатора Lua;
  • Возможность обновления прошивки по Wi-Fi;
  • Наличие встроенного датчика температуры.

В чем же преимущества данной платы на основе модуля ESP8266?

Во-первых, на плате присутствует интерфейс UART-USB с разъемом micro USB, что позволяет подключать его к компьютеру без переходников.

Во вторых, она имеет выводы для всех доступных контактов ESP8266. А это 11 портов ввода-вывода общего назначения, некоторые из которых имеют дополнительные функции (см. рисунок 2).

Назначение выводов NodeMcu

Рисунок 2. Назначение выводов NodeMcu

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

С помощью команд Lua для NodeMCU можно выполнять следующие действия:

  • использование платы в качестве WiFi точки доступа;
  • подключаться (в том числе и автоматическое) к точке доступа WiFi;
  • режим пониженного энергопотребления (уход в сон_;
  • перенаправлять вывод;
  • выполнять операции со списком файлов в flash-памяти;
  • управление пользовательским таймером и таймером WatchDog;
  • управление GPIO1 выводами;
  • создание веб-сервера;
  • обмениваться даннымиI2C — устройствами;
  • считывать данные на выводе АЦП.

Можно не только выполнять команды Lua в терминале, но и cоздавать файлы в flash-памяти ESP8266 и вызывать их на иcполнение.

Рассмотрим примеры напиcания программ для модуля на языке Lua, а также в среде программирования Arduino IDE.


Примеры использования (скриптовый язык Lua)

Рассмотрим пример написания скрипта на языке Lua для платы NodeMCU.

Будем использовать программу ESPlorer (рисунок 3), которую вместе с можно скачать со страницы тут.

Okno programmy ESPlorer

Рисунок 3. Окно программы ESPlorer.

Напишем скрипт создания простейшего веб-сервера, чтобы при обращении к модулю по HTTP с него выдавалась информация. Создадим для этого файл server1.lua и запишем в него код, представленный в листинге 1.

Листинг 1

serverport = 80

server=net.createServer(net.TCP)

server:listen(serverport,

function(connection)

connection:send("HTTP/1.1 200 OK\nContent-Type: text/html\nRefresh: 10\n\n" ..

"<!DOCTYPE HTML>" ..

"<html><body>" ..

"<b>Server </b></br>" ..

" ChipID : " .. node.chipid() .. "<br>" ..

" MAC : " .. wifi.sta.getmac() .. "<br>" ..

" Heap : " .. node.heap() .. "<br>" ..

" Timer Ticks : " .. tmr.now() .. "<br>" ..

"</html></body>")

connection:on("sent",function(connection) connection:close() end)

end

)

Сохраним файл server1.lua в модуле и запустим.  Для проверки работы севера подключимся к точке доступа модуля и наберем в браузере ее адрес: http://192.168.4.1 (рисунок 4). Для запуска сервера при загрузке модуля необходимо в конце нашего autorun-файла init.lua добавить строку:

dofile(server1.lua)

Обращение к серверу на NodeMCU

Рисунок 4. Обращение к серверу на NodeMCU.


Примеры использования (скетч в среде программирования Arduino IDE)

Рассмотрим создание программ дя платы NodeMCU в среде программирования Arduino IDE. Для этого необходимо установить Arduino IDE для ESP8266.

На компьютере уже должно быть установлено программное обеспеченние Arduino IDE версии не ниже 1.6.5.

На рисунках 5-9 представлены скриншоты процесса установки Arduino IDE для ESP8266.  

05

Рисунок 5.

 

06

Рисунок 6.

 

 

Рисунок 7.

 

08

Рисунок 8.

Рассмотрим пример подключения аналогового датчика освещенности (фоторезистора) к плате NodeMCU ESP8266 и отправку данных по протоколу MQTT в интернет на сервер http://www.mqtt-dashboard.com/.

Схема соединений представлена на рис. 9.

Схема подключения Nodemcu Lua Wi-Fi

Рисунок 9. Схема подключения.

Для написания скетча необходима библиотека pubsubclient  для общения с брокером MQTT . Разархивируйте скачанный файл в папку библиотеки IDE Arduino. Откройте в Arduino IDE скетч _2.ino. Вам необходимо внести в скетч изменения параметров SSID и пароля для точки подключения платы NodeMCU к вашей WiFi сети.

const char* ssid = «your_wifi_hotspot»;

const char* password = «your_wifi_password»;

Загружаем скетч на нашу плату NodeMCU, открываем монитор последовательного порта и если соединения указаны правильно, увидим следующий результат (рисунок 10).

Соединение с брокером по сети

Рисунок 10. Соединение с брокером по сети.

После того, как NodeMCU подключился к wifi и брокеру MQTT, он публикует данные о освещенности для брокера MQTT по теме OsoyooData (рисунок 11).

otpravka-dannyh-datchika-osveshchennosti

Рисунок 11. Отправка данных датчика освещенности.

Мы будем использовать на любом устройстве (например планшете или компьютере) MQTT-клиент, чтобы подписаться на тему OsoyooData от того же брокера MQTT и получать значения освещенности в реальном времени.