ESPLogo – программируемый логический контроллер. Предназначен для автоматизации несложных технологических процессов, таких как: управление обогревом помещения/теплицы/инкубатора, экструдером, управление поливом, освещением и пр.
Рисунок 1 Общий вид логического контроллера ESPLogo
Рисунок 2 Схема подключения внешнего оборудования к контроллеру ESPLogo
Описание аппаратной части
Контроллер ESPLogo выполнен на печатной плате с размерами 100х100мм и позволяет закрепить его на DIN-рейку
- Модуль ESP-12 управляющий контроллер с Wi-Fi интерфейсом
- 4 дискретных канала с выходом 5В, 500мА для управления электромагнитными или твердотельными реле;
- 2 канала для подключения внешних датчиков температуры и влажности (АМ2302, DHT22) и температуры DS18B20 (до 10 шт. на одном шлейфе);
- 4 дискретных входа разовых команд (сухой контакт, корпус)
- 1 канал для подключения датчика углекислого газа MH-Z19b
- 4 канала управления сервоприводами;
- 4 аналоговых входа для подключения датчиков света, влажности почвы, газоанализаторов, тока и пр.
- BMP180 датчик атмосферного давления;
- DS3231 модуль часов реального времени (RTC);
Описание программной части
ESPLogo имеет встроенный web-интерфейс. Для создания логики управления дискретными выходами, сервоусилителями, каналами ШИМ используется простой скриптовый язык. Редактор скриптов находится непосредственно в web-интерфейсе контроллера.
Ниже представлен набор базовых функций:
gpioset(x,y*) — установка дискретного выхода. Например gpioset(5,1).
pwmset(x,y*) — установка уровня ШИМ. Например pwmset(1,200).
if (условие*) — условный оператор. Поддерживается сравнение == , != , < , > , >= , <=.
endif — обязательный оператор окончания действия оператора if.
end — выход из скрипта.
else — после этого оператора выполняется код если условие if не выполнилось. Обязательное использование совместно с if.
delay(x) — остановка скрипта на указанное количество миллисекунд.
goto XXX переход к строке по ссылке XXX. Ссылка ставится в любом месте кода в виде :XXX , без использования delay количество переходов ограничено.
reboot() — перезапуск модуля.
valset(x,y*) — установка значения y глобальной переменной x, номер переменой x считается от нуля.
debug(х) — включает или отключает отладку в UART, только для ESP32 и ESP8266RTOS. x — 1 или 0.
httpget(url) — отправить по http строку данных. url — адрес/путь. Подробное описание ниже.
gpioget(х) — чтение состояния дискретного входа;
valget(x) — глобальная переменная ,x — номер переменной. Нумерация начинается от 0.
Для работы с математикой используется функция valmath(x,Y+Z) , где x — это номер переменной начиная с нуля , Y+Z — это математическое действие. Поддерживается только одиночное действие прибавления, вычитания, деления или умножения. Так же поддерживается остаток от деления (%).
Строки, начинающиеся с // считаются комментариями.
Пример №1
Устанавливает дискретный выход «200» в высокий уровень, если кнопка «212» нажата и температура на ds18b20 ниже 30 градусов.
if(gpioget(212)==1&&data1wire[0]<300) gpioset(200,1) else gpioset(200,0) endif
Пример №2
Устанавливает дискретный выход «200» в высокий уровень по времени: с 7 до 21 часа
if(hour>=7&&hour<21) gpioset(200,1) else gpioset(200,0) endif
Пример №3
Отправка sms и e-mail сообщения при появлении лог. единицы на входе «212»
if(gpioget(212)==1) sendsms(Кто-то взломал дверь) else resetsms() endif