В предыдущей статье я привел текст основной программы

и байт-коды вспомогательных программ

Повторю основную программу main.lua:

T0=0;
TD={2,0,0}; pam=4;
lg,pw=’XXXX’,’YYYYY’;
dofile(‘start.lc’);
function cb()
collectgarbage()
if cu==nil then
dofile(‘wifi.lc’)
end
T0=T0+1; m=2;
dofile(‘cb2302.lc’);
local s=T0..’;’..table.concat(TD,’;’)
if cu then cu:connect(9992,’192.168.0.108′);
cu:send(s);
else
print(s);
end
end
tmr.alarm(1,2000,1,cb)
————————

нетрудно заметить, что программа универсальная

и позволяет быстро создавать WIFI модули

для любых датчиков

путем замены одного модуля cb2302.lc на модуль нового датчика.

 

 

В данной заметке я расскажу об устройстве измерителя температуры и влажности, который вполне подойдет , например, для бани.

Это устройство можно сделать на любом модуле на основе чипа ESP8266.

Я расскажу, как сделать на самом простейшем ESP-01.

Кроме этого, необходим источник питания на 3.3 v.

Я использовал блок питания для зарядки телефона  напряжением 5.5 v

и регулируемый преобразователь DC-DC, который установил на выходное напряжение 3.3v. Можно применить любой источник с напряжением в диапазоне 3.0-3.6 v и максимальным током до 300 ma.

Кроме этого, нужен датчик температуры и влажности AM2302

Резистор на 1..2 к и конденсатор на 100..300 пф.

кнопка -1 шт

тумблер -1 шт

3-х жильный кабель для подключения датчика.

———————————

кроме этого, необходимо иметь возможность подключить данный модуль к компьютеру, чтобы его запрограммировать.

———————————

Программа модуля написана на LUA.

Для того, чтобы модуль мог ее исполнитель в него надо залить прошивку NODEMCU.

основная программа main.lua:

T0=0; TD={2,0,0}; pam=4;
 lg,pw=’XXXX’,’YYYYY';
 dofile(‘start.lc’);
 function cb()
 collectgarbage()
 if cu==nil then
 dofile(‘wifi.lc’)
 end
 T0=T0+1;
 m=2; dofile(‘cb2302.lc’);
 — a udp client
 local s=T0..';’..table.concat(TD,';’)
 if cu then 
 cu:connect(9992,’192.168.0.108′); cu:send(s);
 else  print(s);
 end
 end
 tmr.alarm(1,2000,1,cb)

—————————-

где XXXX,YYYYY — имя и пароль Вашей точки доступа.

9992 -номер порта вашего UDP сервера

192.168.0.108 — ip адрес вашего UDP сервера

Кроме основной программы есть три дополнительных модуля:

start.lc,wifi.lc,cb2302.lc.

Эти модули в формате байт-кода можно взять здесь  nk_ESP:

В последнем операторе число 2000 задает интервал опроса датчика в mc.

Установлено 2 секунды, меньше 1 секунды не рекомендую ставить.

В результате , модуль отправляет на UDP сервер (Вам его надо сделать на вашем компе или смартфоне) строку в виде:

номер отсчета;температура;влажность

файл init.lua:

dofile(‘main.lc’)

получаем, например, такую картинку:

esp_01_

 

 

 

 

 

 

В настоящее время я пишу приложения на луа в nodeMCU и не имею никаких ограничений в памяти.
Попробую и Вас научить этому.
—————
Сначала пару слов без протокола.
———————
1) почему LUA?
потому,
что ничего не надо,
кроме редактора текста, платы devkit и кабеля USB-microUSB
—————————
потому, что самый короткий код программы.
————————-
потому, что когда все отладите и очень захочется ускорить работу, то перепишите готовый алгоритм с помощью API C в маленькую функцию на СИ.
————————-
2) почему devkit ?
потому что имеем 4Мбайт памяти , готовую плату с 10 пинов на ввод и вывод и кабель для подключения к любому компу.
Паяльник не треба.
———————

Теперь перейдем к правилам.
—————————
ПРАВИЛО 1:
любой проект состоит из главной программы,
которую называем main и модулей,
которые называем по вкусу(т е как нравится)
———————————
ПРАВИЛО 2:
(есть исключение, но о нем позже)
программа main.lc (или main.lua) имеет следующий вид:
—————————-
dofile(«start.lc»)
———————
function cb()
collectgarbage()
dofile(‘modul_1.lc’);
dofile(‘modul_2.lc’);

dofile(‘modul_n.lc’);
end
————————-
tmr.alarm(1,2000,1,cb)
————————-
где:
start.lc, modul_1.lc,
modul_2.lc,

modul_n.lc
— модули ( у меня они автоматом грузятся в ESP в бинарном коде, поэтому у них расширение lc)
если Вы грузите текстовые то будет расширение .lua и ПОТЕРЯ примерно половины свободной памяти.

наглядный пример:

esp_01_

 

 

 

 

 

 

Это беспроводной измеритель температуры и влажности для бани на ESp-01
передача информации по UDP
как видно из таблицы свободного heap осталось 16 k из 20k
т е истратили всего 4k.