• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

FAR Manager как IDE для Lua.

semper-7

New member
Являясь давним поклонником Far и с недавних пор ESP8266 в виде модулей ESP-12E от китайских товарищей, занялся созданием комфортной для себя среды для программирования последних. Для начала подключил модули через USB-UART адаптер, прошил в ESP8266Flasher прошивкой NodeMCU, предварительно собранной на http://frightanic.com/nodemcu-custom-build/.
Теперь я захотел видеть UART сообщения интерпретатора в Far (при отключенных панелях), не запуская что-то вроде Putty, Teraterm и т.п. Не найдя ничего подходящего, сделал в MASM32 простейший мини-терминал для COM-портов lineterm.exe. Запустил lineterm COM4 115200 - вот и Lua готов исполнять команды, также пишется лог в lineterm.log.
Теперь я захотел прошить в модуль lua-скрипт. Для этого я сделал cmd-скрипт lua_wr.cmd. Запустил lua_wr.cmd init.lua - все получилось. Только как-то построчно и небыстро, но и ESPlorer также загружает.
Теперь я захотел по сети все это делать. Во первых я написал init.lua с поддержкой автозагрузки скриптов, имя которых заканчивается на "~", типа telnet~.lua. Написал на lua telnet сервер с поддержкой простейших UNIX команд: ls, cat, rm, mem, reboot, также написал простой tftp сервер.
Еще написал на MASM32 простейший TCP-терминал nettetm.exe - стандартный WINDOWS telnet клиент не так работал, как мне хотелось, nc в busybox.exe работал нормально, но я все же сделал свой.
Таким образом после прошивки закидываю три небольших файла на каждый модуль: init.lua, telnet~.lua, tftp~.lua. Далее файлы можно гонять по tftp, например, tftp -i 192.168.1.20 PUT main.lua.
Все файлы и исходники на https://github.com/semper-7/esp-12. Здесь также скрипт сетевого термометра с одним датчиком netb20~.lua
 

semper-7

New member
Дополнительно по сетевому термометру. Это простейшая конструкция из зарядки телефона, в корпус которого вставлен модуль ESP-12E и стабилизатор напряжения 3,3В 1117. DS18B20 подключен к GPIO0. В модуль записаны файлы. init.lua, telnet~.lua, tftp~.lua, netb20~.lua. Обращение к термометру по IP, TCP порт 99. Для получения температуры, например, надо набрать из WIN: netterm 192.168.1.21 99 (или из Linux: nc 192.168.1.21 99). Он выдаст: "Temperature NodeMCU is: 23.68". Значение температуры с учетом знака и точки всегда 5 символов.
 

semper-7

New member
Еще у меня модули подключаются по Wi-Fi к роутеру в режиме станции (STA). имя сети (ssid) и пароль (pwd) надо отредактировать в init.lua. В роутере желательно настроить DHCP получение всегда одного и того же IP для определенного модуля.
 

semper-7

New member
По DS18B20 В процессе работы столкнулся с тем фактом, что некоторые партии DS18B20 с паразитным питанием (по двум проводам) не работают. Это не неисправность, а конструктивная особенность, внесенная китайскими товарищами для удешевления производства (скорее всего встроенный в чип конденсатор очень малой емкости). Для подключения по паре проводов надо использовать внешний диод и конденсатор.
 
Сверху Снизу