ESP8266: NodeMCU или Lua на борту народного «Wi-Fi Arduino»

 
+
-
edit
 

Balancer

администратор
★★★★★
Хотя ESP8266 можно прошивать напрямую программой из Си, хоть с того же Arduino IDE, у NodeMCU есть бонусы:

— При отладке можно легко и быстро подключить заранее загруженную программу, не заморачиваясь циклом компиляции/загрузки.
— Можно загрузить программу по воздуху (пока не дошёл)
— Всё же, Lua — язык высокого уровня
— Есть файловая система и ряд полезных библиотек

Сперва я отказался её рассматривать из-за смешного размера памяти под работающие файлы, ~30кбайт. Но потом выяснилось, что это максимальный объём одного работающего скрипта. А их может быть много, на весь размер флеша (0.5-4Мбайт в зависимости от модели). И функция dofile("file.lua") грузит из флеша файл в память и исполняет:

Особенности создания программ в NODEMCU ESP8266 для «интернета вещей»

К изучению возможностей микросхемы ESP8266 я приступил пару месяцев назад. Первоначально приобрел, как и большинство, модуль ESP-01, но почти сразу нашел новое... // habrahabr.ru
 

В общем, разбираюсь теперь с NodeMCU. Хочу научиться загружать скрипты по воздуху, чтобы не передёргивать каждый раз кабель для большой платы и, тем паче, не собирать конфигурацию для программирования мелких :)
Прикреплённые файлы:
20160116_123437.jpg (скачать) [4160x3120, 3,1 МБ]
 
 
 33
+
-
edit
 

Balancer

администратор
★★★★★
Ссылки.

How to Make an Interactive TCP Server with NodeMCU on the ESP8266

Learn how to connect your device with Linux Screen using the built-in Lua interpreter to set up the file system and connect to the network. Then, learn how to automate the scripting process with Luatool and put it all together with a basic TCP server that can interact with a pulse-width modulated LED, a potentiometer, and a switch. // www.allaboutcircuits.com
 

Использование WiFi модуля ESP8266 в качестве датчика с выходом в Интернет

Модуль ESP8266 можно использовать автономно без Arduino // digitrode.ru
 

ESP8266 - подключение и обновление прошивки – esp8266

ESP8266 - подключение и обновление прошивки – esp8266 // esp8266.ru
 

ESP8266 firmware update

ESP8266 firmware flashing tutorial. // iot-playground.com
 
 33
+
-
edit
 

Balancer

администратор
★★★★★
Собственно, API NodeMCU:

nodemcu/nodemcu-firmware

nodemcu-firmware - lua based interactive firmware for mcu like esp8266 // github.com
 
 33
+
-
edit
 

Balancer

администратор
★★★★★
Осилил загрузку Lua-скриптов по Wi-Fi. Пока неудобно, буду допиливать, но работает.

В API NodeMCU есть готовая функция для работы со светодиодными лентами.

code lua
  1. data = string.char(255,0,0,   0,255,0,   0,0,255)  -> тут просто тройки значений RGB, по три на каждый светодиод в ленте.
  2. ws2812.writergb(4, data) -> пишем их в ленту через 4-й пин (GPIO2)


и готово — первые три светодиода горят красным, зелёным и синим.

Сейчас попробую по воздуху залить скрипт с анимацией :)
Прикреплённые файлы:
20160116_153706.jpg (скачать) [4160x3120, 4,7 МБ]
 
 
 33
+
-
edit
 

Balancer

администратор
★★★★★
Ну, вот, забегали у меня огоньки по кругу с простыми эффектами.

Оценка производительности Lua на NodeMCU на ESP8266: Сформировать 3*60 байт значений в виде строки и скормить их ленте занимает 14мс. Т.е. максимальная частота обновления метровой ленты с 60 светодиодами — чуть больше 70 раз в секунду. 

Приходится заодно осваивать Lua. Не самый привычный для современного программистского мира язык, но ничего особенного. Удивительно, что у него столько фанатиков.
 33
LT AleksejLt #17.01.2016 19:13  @Balancer#16.01.2016 20:13
+
-
edit
 

AleksejLt

опытный

Balancer> Т.е. максимальная частота обновления метровой ленты с 60 светодиодами — чуть больше 70 раз в секунду.

Не густо, но хватает для домашнего украшательства.

Balancer> Приходится заодно осваивать Lua. Не самый привычный для современного программистского мира язык, но ничего особенного.

Какой редактор пользуешь? Стоит ли вообще его изучать если можно писать на С?
 43.043.0
RU Balancer #17.01.2016 20:38  @AleksejLt#17.01.2016 19:13
+
-
edit
 

Balancer

администратор
★★★★★
AleksejLt> Какой редактор пользуешь?

Встроенный в Far :)

AleksejLt> Стоит ли вообще его изучать если можно писать на С?

Ну, он с Си не сравним. Разные ниши. Я на NodeMCU его использую потому что можно по воздуху в контроллер загружать скрипты. С Си такого не выйдет. И, наоборот, с Lua ничего не получится, там, где нужна большая и быстрая программа.
 33
LT AleksejLt #17.01.2016 22:29  @Balancer#17.01.2016 20:38
+
-
edit
 

AleksejLt

опытный

Balancer> Встроенный в Far :)

О боже мой © :) Открыл, ради интереса, скрипт .луа через фар... Хорошо хоть скобки подсветил. Сразу ТурбоСи вспомнился :)
А плагин для Джетбрайновский Идеи не пробовал? Я их платформы ценю, с ними можно даже питон пользовать.

Balancer> Ну, он с Си не сравним. Разные ниши. Я на NodeMCU его использую потому что можно по воздуху в контроллер загружать скрипты.

Звучит вкусно, но пока тёмный лес. Надо будет заказать, но дома валяется куча железок, до которых лень не пускает :)
Но на всякий пожарный - что лучше брать? Голый или плату разработчика?

New Remote ESP8266 Wireless Module Stable WIFI to UART Module Remote Serial Port WIFI Wireless Module Through Walls For Arduino-in Other Electronic Components from Electronic Components & Supplies on Aliexpress.com | Alibaba Group

Cheap module rack, Buy Quality module ci directly from China module lcd Suppliers: New 3.3V to 5V Gamepad Joystick Shield Module Game Rocker Button Controller Expansion Board For Arduino Simulated Key // www.aliexpress.com
 

NodeMcu Lua CH340G ESP8266 WIFI Internet Development Board Module-in Other Electronic Components from Electronic Components & Supplies on Aliexpress.com | Alibaba Group

Online Shopping at a cheapest price for Automotive, Phones & Accessories, Computers & Electronics, Fashion, Beauty & Health, Home & Garden, Toys & Sports, Weddings & Events and more; just about anything else // www.aliexpress.com
 

З.Ы. Спасибо за наводку про новую модель с бОльшим объёмом памяти
 43.043.0
RU Balancer #17.01.2016 22:48  @AleksejLt#17.01.2016 22:29
+
-
edit
 

Balancer

администратор
★★★★★
AleksejLt> А плагин для Джетбрайновский Идеи не пробовал?

Пока он запустится, я уже успею в Far'е файл отредактировать и сохранить :D

На PHP у меня ещё более запущено — есть даже лицензионный PhpStorm, который считается чуть ли не эталоном. Так я его только для редкого рефакторинга использую. Или, там, проект весь проверить на ошибки. А 99.9% редактирования делаю в mcedit :D Так тупо быстрее (а часто и единственно возможно, основная работа идёт на удалённых серверах в терминалке).

AleksejLt> Но на всякий пожарный - что лучше брать? Голый или плату разработчика?

И то, и другое, учитывая их цены :) «Голый» — это ESP-01, там всего два штатных цифровых GPIO. И памяти 1Мбайт максимум. И нужно UART ручками цеплять при заливке прошивки (соответственно, NodeMCU с Lua по воздуху имеет лишний бонус), питание 3.3В обеспечивать (UART-модули часто имеют на борту, но не всегда хватает). Так что для мелких узлов только. «Плата разработчика» (х.з. как она полностью зовётся) полностью автономный девайс с UART и питанием от USB, 10-ю цифровыми GPIO и 1-м аналоговым. И памяти до 4Мбайт (хотя часто идут на 1Мбайт, как и 512кбайт для ESP-01). Программируется на раз — воткнул в USB и шей. Но жирнее и дороже.
 33
RU Balancer #17.01.2016 22:51  @Balancer#17.01.2016 22:48
+
-
edit
 

Balancer

администратор
★★★★★
А, да, ещё «отладочную» плату удобнее в макетную плату втыкать. Т.е. просто воткнул и работай. А в ESP-01 2x4 ножек в штатные макетки конструктивно не воткнуть — два ряда слишком близко, чтобы в соседние линии втыкать. Приходится на проводках вешать. Даже на Ali продаются переходники, которые стоят дороже, чем девелоперская плата ESP8266 :D

Free Shipping ! Breadboard adapter for ESP8266 Serial to WiFi transceiver diy kit electronics-in Other Electronic Components from Electronic Components & Supplies on Aliexpress.com | Alibaba Group

Cheap adapter coupling, Buy Quality adapter mic directly from China adapter dsl Suppliers: Description This is a breadboard adapter for the popular ESP-01 model of the ESP8266 serial-to-WiFi transceiver mod // www.aliexpress.com
 

Оправдано, видимо, для тех, кто с какими-то целями массово ESP8266 программирует на макетных платах :)
 33
LT AleksejLt #18.01.2016 15:14  @Balancer#17.01.2016 22:48
+
-
edit
 

AleksejLt

опытный

Balancer> Пока он запустится, я уже успею в Far'е файл отредактировать и сохранить :D

Это да, тут не поспоришь. А я обленился - в последнее время использую Фар только для просмотра логов. Хотя раньше тоже было пара плагинов для всего - фтп, НЕХ-редакторы... Теперь всё вытеснило Студия, ВебСторм и Ноутпад++ :)

Balancer> На PHP у меня ещё более запущено — есть даже лицензионный PhpStorm, который считается чуть ли не эталоном. Так я его только для редкого рефакторинга использую. Или, там, проект весь проверить на ошибки. А 99.9% редактирования делаю в mcedit :D Так тупо быстрее (а часто и единственно возможно, основная работа идёт на удалённых серверах в терминалке).

Я всё жду когда они выпустят для .Нета :) А почему не пользуешь PhpStorm для работы с удаленными файлами? Он отлично связывает локальные файлы с сервером, держит локальные версии изменений, сравнивает их. Есть и SSH консоль.

Balancer> И то, и другое, учитывая их цены :) «Голый» — это ESP-01, там всего два штатных цифровых GPIO. И памяти 1Мбайт максимум. И нужно UART ручками цеплять при заливке прошивки

Надо будет заказать полную плату. А потом уже смотреть в сторону уменьшения. И ещё вопрос - какие коробочки используешь для поделок?
 43.043.0
RU Balancer #18.01.2016 17:59  @AleksejLt#18.01.2016 15:14
+
-
edit
 

Balancer

администратор
★★★★★
AleksejLt> А почему не пользуешь PhpStorm для работы с удаленными файлами?

Цикл отладки получается очень громоздкий. Через консоль и mcedit тупо намного быстрее :)
 4747
LT AleksejLt #19.01.2016 17:14  @Balancer#18.01.2016 17:59
+
-
edit
 

AleksejLt

опытный

Balancer> Цикл отладки получается очень громоздкий. Через консоль и mcedit тупо намного быстрее :)

Возможно. Хотя я привык к автокомплиту :) И пропадает контроль версий.
 43.043.0
RU Balancer #19.01.2016 17:16  @AleksejLt#19.01.2016 17:14
+
-
edit
 

Balancer

администратор
★★★★★
AleksejLt> Возможно. Хотя я привык к автокомплиту :)

Тут сильно помогает продуманность имён методов. Чтобы были не длинные и понятные :)

AleksejLt> И пропадает контроль версий.

А он никак с редактором не связан. Это дело VCS. Всё равно без неё в нормальном проекте код дальше редактора не уйдёт :)
 33

+
-
edit
 

salavat

новичок
Balancer> Осилил загрузку Lua-скриптов по Wi-Fi. Пока неудобно, буду допиливать, но работает.

Привет
только начал изучать данную тему очень интересует как вы реализовали данный функционал? пример можно глянуть.
 47.047.0
+
-
edit
 

Balancer

администратор
★★★★★
Balancer>> Осилил загрузку Lua-скриптов по Wi-Fi. Пока неудобно
salavat> только начал изучать данную тему очень интересует как вы реализовали данный функционал? пример можно глянуть.

Я воспользовался этим решением:

breagan/ESP8266_WiFi_File_Manager

ESP8266_WiFi_File_Manager - These files allow ESP8266 remote file management and control over WiFi // github.com
 

Тут инструкция на английском:

ESP8266 WiFi OTA Remote File Management

I have been working with ESP8266 micro controllers long enough now to have a number of them deployed in my environment. I have a couple setup testing my MQTT broker(s). I have a couple sending temperature, humidity and barometric pressure readings to the cloud. I have some running for debugging and testing on my bench. I even have one running my irrigation system. In order to make any changes to the software on any of these controllers, I have to physically attach a FTDI and USB cable to a computer and connect via COM port. This can become very problematic for ESPs deployed in hard to get to or just inconvenient locations. Its also time consuming. In my minds eye, I can see the possibility of deploying dozens or even hundreds of these inexpensive devices to control/monitor a myriad of situations. Making changes to the software of many of these ... // www.instructables.com
 

Если коротко, то на ESP8266 ставится набор простеньких скриптов, которые позволяют залить по http скрипты или выдать обратно какую-нибудь информацию. А на внешнем нормальном компе ставится PHP-сервер со скриптами, позволяющими работать с ESP8266 через браузер.

Но реально неудобно оказалось. И памяти жрёт достаточно много, и при запуске залитых скриптов никакой диагностики ошибок нет, и в некоторых случаях загрузка обламывается по непонятным причинам. То есть, в принципе, оно работает, но с чем-то типа ESPlorer по удобству работы и близко не лежит. Сильно руки чешутся допилить этот комплект до более удобного вида, но пока времени не хватает этим заняться.
 33
+
-
edit
 

salavat

новичок
я думаю есть реализация фтп сервера на lua потянет ли вопрос
 47.047.0
+
-
edit
 

Balancer

администратор
★★★★★
salavat> я думаю есть реализация фтп сервера на lua потянет ли вопрос

На lua, думаю, не потянет. Вот встроить в саму NodeMCU на низком уровне, в принципе, можно. Но толку мало, через http проще.
 33
+
-
edit
 

Balancer

администратор
★★★★★
Вчера дошли подключить руки под NodeMCU ЖК-дисплеи (I²C и SPI). Проблем с тестами не было.

Для SPI — 1.8" TFT 128x160 на чипе ST7735

Схема подключения и как включить в прошивку библиотеку ucg (правда, я ручками, локально делал):

Using an ST7735 LCD screen with NodeMCU

On a previous post Somchai asked how to hook up an ST7735 LCD screen to his WeMos D1 Mini and use it with the NodeMCU firmware. The Nod... // blog.unixbigot.id.au
 

Примеры кода:

nodemcu/nodemcu-firmware

nodemcu-firmware - lua based interactive firmware for mcu like esp8266 // github.com
 

Подсветку, благо она отдельная, запитал от +5В, всё остальное — от 3.3В. Использовал dev. board:
Прикреплённые файлы:
20170317_094649.jpg (скачать) [2048x1152, 845 кБ]
 
 
 44
+
-
edit
 

Balancer

администратор
★★★★★
Давно не обновлялся, а там временем вышло несколько новых версий:

nodemcu/nodemcu-firmware

nodemcu-firmware - lua based interactive firmware for mcu like esp8266 //  github.com
 

NodeMCU теперь стала заметно компактнее. То, что раньше не влезало в 512кбайт модуль, теперь влезает с запасом :) Выкинули старый код, оптимизировали новый...

- Появилась поддержка датчиков влажности/температуры Si7021. Всё руки не доходили сделать его поддержку прямо на Lua, а тут — в систему встроили. Как и несколько других модулей.
- Появился Cron (периодический запуск по расписанию — в отличие от простого таймера рассчитано на длительные регулярные интервалы, типа «раз в сутки», «каждые 15 минут», «каждое первое воскресенье месяца»).
 44
LT AleksejLt #07.09.2017 22:00  @Balancer#05.09.2017 05:13
+
-
edit
 

AleksejLt

опытный

Balancer> - Появился Cron

Это классная вещь. Только я не понял - там крутится демон крона или он должжен быть встроен в твою програмку?
 56.056.0
RU Balancer #08.09.2017 08:46  @AleksejLt#07.09.2017 22:00
+
-
edit
 

Balancer

администратор
★★★★★
AleksejLt> Это классная вещь. Только я не понял - там крутится демон крона или он должжен быть встроен в твою програмку?

Судя по API, там в ОС крутится cron («демон» — это громко, там же монолитная система) и вызывает когда надо всё зарегистрированное в нём.
 44
LT AleksejLt #09.09.2017 10:21  @Balancer#08.09.2017 08:46
+
-
edit
 

AleksejLt

опытный

Balancer> Судя по API, там в ОС крутится cron («демон» — это громко, там же монолитная система) и вызывает когда надо всё зарегистрированное в нём.

Не разбирался, что за большой полосатый мух там крутится :)

Кстати, вчера был на технохакерской тусовке. У парниши был прикольный концепт (правда не сработал во время показа) - шляпа, со встроенным wemos d1 mini, которая должна была светиться разными цветами после получения комнанды через вай-фай.
 56.056.0
RU Balancer #09.09.2017 11:49  @AleksejLt#09.09.2017 10:21
+
-
edit
 

Balancer

администратор
★★★★★
AleksejLt> шляпа, со встроенным wemos d1 mini

D1 mini тут оверкил :) Хватит и ESP-01, а она намного компактнее.

...

Кстати, вчера пытался RGB светодиодную ленту прицепить в Orange Pi. В зале информационную подсветку сделать. А там как раз Orange Pi уже стоит. Так за полчаса возни так и не смог прицепить и заставить работать. Проще, наверное, уже проверенным способом через ESP-01 подключить и просто по воздуху управлять :)
 44
LT AleksejLt #09.09.2017 16:25  @Balancer#09.09.2017 11:49
+
-
edit
 

AleksejLt

опытный

Balancer> D1 mini тут оверкил :) Хватит и ESP-01, а она намного компактнее.

При цене в 3-5 евро уже не важно :) Он, вроде как и ты, пытался использовать MQTT, но ему не хватило быстродействия. Оставил простую команду на запуск сценария.

Balancer> Кстати, вчера пытался RGB светодиодную ленту прицепить в Orange Pi. В зале информационную подсветку сделать. А там как раз Orange Pi уже стоит. Так за полчаса возни так и не смог прицепить и заставить работать. Проще, наверное, уже проверенным способом через ESP-01 подключить и просто по воздуху управлять :)

Я с ним не игрался, но не первый раз слышу жалобы на железные проблемы. Поэтому массово ставять ардуинку для управления всякими железками. Ну или сразу 8266 :)
 56.056.0

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru