Среда, 18 ноября 2020 09:35

Умный курятник

Автор
Оцените материал
(1 Голосовать)

Ардуино, Модбас RTU, SCADA SimpLight.
Приступил к выполнению проекта "Умного курятника" на базе контроллера Arduino Uno. Перед этим спроектировал беспроводную метеостанцию и управление четырехканальным освещением через WiFi.

Управление и индикация на смартфоне. Позже опишу. А пока разберемся с курятником! В начале создал ТЗ:

  1. Измерение и регулирование температуры и влажности в помещении курятника и передача данных на компьютер который находится в доме (15 метров от курятника).
  2. Автоматическое управление электрообогревателем в зимнее время в курятнике (задание нижнего и верхнего уровней температуры с компьютера в доме, при открытой калитке в курятник, обогреватель не включается).
  3. Автоматическое управление освещением (один светильник)в курятнике (два режима работы будильников - 1Буд.Вкл.-часы, минуты, Выкл.-часы, минуты. 2Буд.Вкл.-часы, минуты, Выкл.-часы, минуты.) Управление и индикация с компьютера в доме.
  4. Hardware - Arduino UNO
  1. Hardware - Arduino UNO, модуль часов реального времени DS3231, преобразователь RS-485 to TTL Converter, USB to RS-485 Converter, TZT 4х канальный релейный модуль с оптопарой, датчик влажности и температуры DHT22, блок питания 9v, промышленный конечный выключатель.
  2. Software - Arduino IDE 1.8.7, FLProg 4.0.0, ОВЕН OPC-сервер, Scada система Simp Light.

Начал я с написания программы для контроллера Ардуино. Так как на работе я программирую контроллеры на языке функциональных блоков, мне в помощь пришлась программа FLProg, для программирования контроллеров Ардуино. Программа абсолютно бесплатна и доступна любому, кто решил попробовать себя в программировании. Визуальные языки программирования FBD и Ladder, с помощью которых пишется программа, используются для программирования практически всех логических реле, и части промышленных контроллеров во всем мире.  На сайте https://flprog.ru/ вы найдете много полезной информации, есть отличная учебная база с WIKI и множеством видео уроков.

1. Первый пункт ТЗ у нас температура и влажность! Температуру необходимо измерить и передать на компьютер с помощью коммуникационного протокола Modbus RTU. Modbus — протокол, работающий по принципу «клиент-сервер». Широко применяется в промышленности. Modbus может использоваться для передачи данных через последовательные линии связи RS-485, RS-422, RS-232, а также сети TCP/IP. Я буду применять линию RS-485.
В основе интерфейса RS-485 лежит принцип дифференциальной (балансной) передачи данных. Суть его заключается в передаче одного сигнала по двум проводам. Причем по одному проводу (условно A) идет оригинальный сигнал, а по другому (условно B) — его инверсная копия. Другими словами, если на одном проводе «1», то на другом «0» и наоборот. Таким образом, между двумя проводами витой пары всегда есть разность потенциалов: при «1» она положительна, при «0» — отрицательна.
На компьютере необходимо задать значение переменной уставки срабатывания обогревателя. В программе необходимо указать значение константы в градусах, при повышении температуры на это значение, обогреватель отключится. В программе FLProg начинаем формирование модбас переменных. Нам необходимо 8 booleon переменных - кнопки, индикация:

  1. Включение будильника №1;
  2. Включение будильника №2;
  3. Включение освещения на улице;
  4. Индикация включения обогревателя;
  5. Индикация включения освещения в курятнике;
  6. Индикация включения освещения на улице;
  7. Индикация включения будильника №1;
  8. Индикация включения будильника №2.

А для управления будильниками и температурой нам необходимо 20 переменных HoldingRegistr:

  1. Отображение температуры в курятнике;
  2. Отображение влажности в курятнике;
  3. Программирование порога срабатывания обогревателя;
  4. Установка часа включения будильника №1;
  5. Установка часа выключения будильника №1;
  6. Установка минут включения будильника №1;
  7. Установка минут выключения будильника №1;
  8. Установка часа включения будильника №2;
  9. Установка часа выключения будильника №2;
  10. Установка минут включения будильника №2;
  11. Установка минут выключения будильника №2;
  12. Отображение запрограммированного часа включения будильника №1;
  13. Отображение запрограммированного часа выключения будильника №1;
  14. Отображение запрограммированных минут включения будильника №1;
  15. Отображение запрограммированных минут выключения будильника №1;
  16. Отображение запрограммированного часа включения будильника №2;
  17. Отображение запрограммированного часа выключения будильника №2;
  18. Отображение запрограммированных минут включения будильника №2;
  19. Отображение запрограммированных минут выключения будильника №2;
  20. Отображение запрограммированной температуры.

После создания модбас переменных приступаем к созданию выходов и переменных пользовательского блока.

Создаем три выхода:

  1. Реле обогревателя;
  2. Реле освещения внутри курятника;
  3. Реле освещения на улице.

Далее создаем две boolean переменных:

  1. Включить будильник 1;
  2. Включить будильник 2.

Далее 11 Integer переменных:

  1. Влажность;
  2. Минуты задать на включение 1 будильник;
  3. Минуты задать на включение 2 будильник;
  4. Минуты задать на выключение 1 будильник;
  5. Минуты задать на выключение 2 будильник;
  6. Температура;
  7. Задать верхний предел температуры;
  8. Часы задать на включение 1 будильник;
  9. Часы задать на включение 2 будильник;
  10. Часы задать на выключение 1 будильник;
  11. Часы задать на выключение 2 будильник;

И наконец создаем програму и загружаем ее в Ардуино:

 

Прочитано 181 раз

Медиа

Скада система Simp Light Lihoj

Добавить комментарий


Защитный код
Обновить