Логический контроллер ESPLogo

Автор: | 30.01.2022

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