Автоматическое управление озонатором воды на Arduino Nano
В этом проекте займемся чистой автоматикой. В данном случае озонатор будет очищать питьевую воду от излишка железа. При озонировании железо выпадет в осадок и полученную воду можно будет смело давать даже детям.
Технологическая схема устройства озонирования питьевой воды из скважины
Технологическая схема представлена на рисунке ниже. Вода из скважины, имеющая в своем составе слишком много железа, закачивается насосом в сборник. Там она озонируется циркулированием через электро-озонатор. После этого очищенная вода полностью сливается через открытый клапан KL1. И процесс повторяется снова и снова.
Мощность насоса 1,5 кВт, клапан на 12 В, озонатор на 220 В мощностью 24 Вт.
Алгоритм автоматической системы
При включении устройства в автоматический режим проверяется уровень воды в баке. Если уровень меньше нижнего датчика L1 (ни один датчик уровня не сработал), закрывается клапан KL1, включается насос и озонатор.
При достижении уровня воды до датчика L2, выключается насос и выдерживается время озонирования. После этого выключается озонатор и выдерживается время осаждения. После этого открывается клапан KL1 и алгоритм повторяется.
В том случае, если по каким либо причинам не сработает верхний уровень, был предусмотрен аварийный датчик уровня. При его срабатывании алгоритм прерывается. Выключается озонатор и насос, а так же закрывается клапан KL1.
Интерфейс
Для отображения информации используем двухстрочный жидкокристаллический индикатор, а для ввода данных и управления устройством используем простой энкодер с кнопкой. Я такие устройства ввода данных юзал на буржуйских заводских частотных преобразователях и был в восторге – давно хотел повторить такой функционал в своих устройствах.
Вращением энкодера в разные стороны можно перемещаться по меню управления, а так же изменять значения настроечных величин. Нажатием же на ручку энкодера будем выбирать пункты меню, в которые хотим зайти, а так же подтверждать введенные данные.
Выбор элементной базы
Для реализации озвученной задачи просто идеально подойдёт плата контроллера Arduino Nano, установленная на монтажный шилд следующего вида
Данный шилд максимально упрощает монтажные работы и экономит место на клеммниках. Он позволяет подключать всю периферию контроллера без необходимости в перемычках, объединяющих плюсы и минусы питания.
Насос, клапан и озонатор в рамках єтой статьи рассматривать не будем – у всех будут свои.
Датчики уровня выберем механические буйковые горизонтального монтажа.
Символьный индикатор стандартный для любительской автоматики LCD 1602 с модулем I2C.
Для коммутации питания насоса возьмем твердотельное реле SSR-40DA.
Для коммутации питания озонатора используем одноканальный модуль твердотельного реле G3MB-202P.
Для управления клапаном используем модуль MOSFET транзистора IRF520, который будет коммутировать постоянное напряжение 12 В.
В качестве энкодера берём KY-040.
Для питания контроллера и клапана возьмем блок питания 12 В 2 А.
Все эти элементы смонтируем в электро-щитке с прозрачной передней панелью. А все внешние кабеля будем сажать на две клеммные колодки. На одной будут подключены исполнительные механизмы и ввод 220 В, а на другой датчики и ввод 12 В.
Схема подключения
На схеме было очень сложно понятным образом показать, как периферия подключается к шилду Arduino Nano, поэтому попробую описать это текстом.
Символьный индикатор подключаем к специальным выводам слева на шилде SCL SDA 5V GND.
Реле SSR-40DA подключаем к третьему дискретному входу – минус на пин G, а плюс на пин S (signal).
Модуль реле G3MB-202P подключаем к 4-му дискретному входу – минус на пин G, плюс на пин V, а сигнальный вывод на пин S.
Модуль MOSFET транзистора подключаем ко 2-му дискретному входу – минус на пин G, плюс на пин V, а сигнальный вывод на пин S.
Датчик L1 подключаем к 5-му дискретному каналу контроллера – один провод к G, а другой к сигнальному S.
Датчик L2 подключаем к 8-му дискретному каналу контроллера – один провод к G, а другой к сигнальному S.
Датчик L3 подключаем к 9-му дискретному каналу контроллера – один провод к G, а другой к сигнальному S.
Энкодер нужно подключить следующим образом: вывод CLK к выводу S 7-го канала контроллера; вывод DT к выводу S 6-го канала шилда; вывод кнопки SW к выводу S 11-го канала шилда; вывод + на вывод V 7-го канала шилда; вывод GND на вывод G 7-го канала монтажного шилда.
Разъем питания 12 В подключаем не к контроллеру, а на шилд. И эти же 12 В в разрыве кабеля блока питания заводим на клеммы питания модуля MOSFET транзистора.
На датчиках уровня не понадобятся подтягивающие резисторы, так как мы включим их программно.
Программа контроллера
#include #include #include //библиотека для запоминания настроечных данных в постоянную память контроллера LiquidCrystal_I2C lcd(0x27, 16, 2); const int L1_pin = 5; const int L2_pin = 8; const int L3_pin = 9; const int M1_pin = 3; const int ozon_pin = 4; const int KL1_pin = 2; boolean L1, L2, L3; int L1_count = 0; int L2_count = 0; int L3_count = 0; const int button = 11; int button_old = 1; int astep = 0; int menu = 0; int menu_ = 0; int t_ozona; int t_osad; int avto = 0; //rezhim avto boolean nasos = 0; //nasos on/off boolean ozon = 0; //ozonator on/off boolean klapan = 0; //klapan on/off int pinA = 7; // номер вывода, подключенный к CLK енкодера int pinB = 6; // номер вывода контроллера, подключенный к DT енкодера int encoderPosCount = 0; int pinALast; int aVal; boolean bCW; unsigned long previousMillis = 0; unsigned long currentMillis; const long interval = 500; unsigned long prevMillis_ozona = 0; unsigned long curMillis_ozona; unsigned long prevMillis_osad = 0; unsigned long curMillis_osad; void setup() { t_ozona = EEPROM.read(9); t_osad = EEPROM.read(10); pinMode(button, INPUT_PULLUP); pinMode (pinA,INPUT_PULLUP); pinMode (pinB,INPUT_PULLUP); pinMode(L1_pin, INPUT_PULLUP); pinMode(L2_pin, INPUT_PULLUP); pinMode(L3_pin, INPUT_PULLUP); pinMode(M1_pin, OUTPUT); pinMode(ozon_pin, OUTPUT); digitalWrite(ozon_pin, !ozon); //zaschita ot promigivaniya pri puske pinMode(KL1_pin, OUTPUT); lcd.begin(); Serial.begin(9600); // включение подсветки и вывод приветствия lcd.backlight(); lcd.print(“Pryvit,”); lcd.setCursor(7, 1); lcd.print(“gospodar!”); delay(2000); pinALast = digitalRead(pinA); currentMillis = millis(); previousMillis = currentMillis; } void loop() { if (!digitalRead(L1_pin)) {if (L1_count0) L1_count –;} //filtracia din if (L1_count==100) L1 = 1; if (L1_count==0) L1 = 0; if (!digitalRead(L2_pin)) {if (L2_count0) L2_count –;} //filtracia din if (L2_count==100) L2 = 1; if (L2_count==0) L2 = 0; if (!digitalRead(L3_pin)) {if (L3_count0) L3_count –;} //filtracia din if (L3_count==100) L3 = 1; if (L3_count==0) L3 = 0; currentMillis = millis(); func_encoder(); if (avto==1) func_auto(); else {prevMillis_ozona = 0; curMillis_ozona = 0; prevMillis_osad = 0; curMillis_osad=0; astep=0;} func_menu(); func_button(); func_outs(); }void func_outs() { button_old = digitalRead(button); digitalWrite(M1_pin, nasos); digitalWrite(ozon_pin, !ozon); digitalWrite(KL1_pin, klapan); delay(10); }void func_auto() { if (astep==0){ nasos = 0; ozon = 0; klapan = 1; if (!L1&&!L2&&!L3) astep = 100; } if (astep==100){ nasos = 1; ozon = 1; klapan = 0; if (L1&&L2) { astep = 200; prevMillis_ozona = millis(); } } if (astep==200){ nasos = 0; ozon = 1; klapan = 0; curMillis_ozona = millis(); if (curMillis_ozona – prevMillis_ozona >= t_ozona*60000){ astep = 300; prevMillis_osad = millis(); } } if (astep==300){ nasos = 0; ozon = 0; klapan = 0; curMillis_osad = millis(); if (curMillis_osad – prevMillis_osad >= t_osad*60000) astep = 0; } if (L3) { avto = 0; nasos = 0; ozon = 0; klapan = 0; } }void func_button() { if ((digitalRead(button)==LOW)&&(button_old==1)) { if ((menu == 1)and(button_old==1)) { switch (menu_) { case 0: menu = 100; encoderPosCount=0; break; case 1: if (avto==0){ menu = 200; encoderPosCount=0;} break; case 2: menu = 0; encoderPosCount=0; break; } button_old=0; } if ((menu == 100)and(button_old==1)) { switch (menu_) { case 0: if (avto==0) avto = 1; else {avto = 0; nasos = 0; ozon = 0; klapan = 0;} break; case 1: menu = 120; encoderPosCount = t_ozona; break; case 2: menu = 130; encoderPosCount = t_osad; break; case 3: menu = 0; encoderPosCount=0; break; } button_old=0; } if ((menu == 120)and(button_old==1)) { menu = 100; encoderPosCount = 1; button_old=0; } if ((menu == 130)and(button_old==1)) { menu = 100; encoderPosCount = 2; button_old=0; } if ((menu == 200)and(button_old==1)) { switch (menu_) { case 0: if (nasos==0) nasos = 1; else nasos = 0; break; case 1: if (ozon==0) ozon = 1; else ozon = 0; break; case 2: if (klapan==0) klapan = 1; else klapan = 0; break; case 3: menu = 0; encoderPosCount=0; break; } button_old=0; } if ((menu == 0)and(button_old==1)) { menu = 1; menu_ = 0; button_old=0; encoderPosCount=0; } menu_ = 0; } }void func_encoder() { //encoder aVal = digitalRead(pinA); if (aVal != pinALast){ // проверка на изменение значения на выводе А по сравнению с предыдущим запомненным, что означает, что вал повернулся // а чтобы определить направление вращения, нам понадобится вывод В. if (digitalRead(pinB) != aVal) { // Если вывод A изменился первым – вращение по часовой стрелке encoderPosCount ++; bCW = true; } else {// иначе B изменил свое состояние первым – вращение против часовой стрелки bCW = false; encoderPosCount–; } } pinALast = aVal; //encoder }void func_menu() { if (currentMillis – previousMillis >= interval) { previousMillis = currentMillis; if (menu == 1){ if (encoderPosCount>2) encoderPosCount = 0; if (encoderPosCount3) encoderPosCount = 0; if (encoderPosCount3) encoderPosCount = 0; if (encoderPosCount255) encoderPosCount = 255; if (encoderPosCount255) encoderPosCount = 255; if (encoderPosCount
Источник: http://geekmatic.in.ua/Avtomaticheskoe_upravlenie_ozonatorom_vody
Автоматизация насоса
«Лень – двигатель прогресса»
Стоял насос на даче, управляемый с обычного пульта. Потоки воды распределялись шаровыми кранами (на полив и на емкость бытовых нужд). Просьбы родителей, что надоело подкачивать в ручную емкость привели к рождению системы управления насосом.
Система построена на контроллере Arduino Nano 3.0 (ATmega328), дисплее 20х4, 4-х канальном радио блоке. Исполнительными органами являются два шаровых крана на 1 и ¾ дюйма с электроприводами, ЧРП и электродвигатель насоса. Насос позволяет выдавать 6м.куб в час. Система позволяет регулировать скорость подачи воды (напор). Управляется с самого блока
Или пульта ДУ
Основные функции:
- Управление насосом в режиме полива с пульта или по месту, с возможностью регулировки подачи.
- Управление насосом в режиме подачи воды в емкость по месту или в автоматическом режиме.
- Отображение уровня в бочке и температуры воды в бочке.
- Защита от перелива бочки, с автоматическим сбросом.
- Управление насосом на прямом пуске.
- Ручное управление механизмами установки.
Структурная схема установки.
Питается вся установка 380 Вольт 50 Гц
Центральный блок на ардуино.
Схема принципиальная затворов и их подключение.
Подключение уровня и аварийного сенсорного датчика.
Фото всей установки
Описание работы устройства
При включении тумблера питания происходит инициализация устройства (если были открыты затворы, то они закрываются). Дисплей отображает текущее состояние системы (состояние затворов, температуру в верхнем баке). На дополнительном дисплее (матрица 8х8) отображается уровень воды в верхнем баке.
Уровень выполнен в виде натянутых проволок в пластиковой трубе (на разных уровнях), программно фильтруется от ложных срабатываний и от появляющейся влажности между электродами.
При включении с ДУ пульта или с панели устройства режима полив включается главный контактор (запитывает преобразователь частоты ПЧ), одновременно с ним открывается затвор на магистраль полива. После открытия затвора запускается ПЧ на оборотах установленных в момент последнего включения.
С пульта ДУ или панели устройства предусмотрена регулировка оборотов (объем подачи воды). При остановке полива останавливается ПЧ и начинается отсчет времени до закрытия затвора в течении 3х минут (этакая пауза для перехода на другую зону полива).
По истечении 3х минут (если не было повторного пуска) закрывается затвор полива, а по истечении 5 минут отключается главный контактор и система переходит в ждущий режим.
При использовании наполнения верхней бочки предусмотренно отключение по максимальному уровню. Наполнение работает как в ручном режиме, так и в автоматическом (при включении кнопкой режима “автомат”).
Автоматический режим работает минимум – середина бочки, максимум – верхняя точка. При включении наполнения бочки, как и в режиме полива, включается контактор, открывается затвор наполнения бочки и пускается ПЧ на полные обороты.
При достижении максимального уровня отключается ПЧ и одновременно закрывается затвор. По истечении 5 минут отключается контактор.
Наполнение бочки имеет защиту от перелива в виде сенсорного датчика уровня. При его срабатывании происходит остановка привода отключением контактора с одновременным открытием обоих затворов до снижения уровня. Одновременно дисплей сигнализирует о срабатывании защиты от перелива.
Приоритетность использования режимов заключается в реализации любого пуска только из обоих закрытых затворов. Принудительное закрытие возможно при зажатии кнопки “стоп” на 2 секунды.
Дисплей отображает состояние всех узлов системы (контактор, ПЧ, задание ПЧ, затворы,режим работы и …)
Исходник программы, создан в Flprog
Прикрепленные файлы:
Источник: http://cxem.net/house/1-437.php
Зимний сад
Комплексное обеспечение работы зимнего сада, поддержание заданной температуры, полив растений с индивидуальной настройкой по каждому из 15-и каналов, контроль уровня воды, освещённости, влажности почвы, управление окнами, жалюзи и ролл-шторами, автоматический и ручной режимы работы, оповещение по SMS о тревожных ситуациях и т. д.
Оборудование
В качестве основного контроллера используется Arduino Mega 2560, работающий в тандеме с таким же контроллером Mega, связанным с ним по беспроводному nRF24 каналу.
Кроме основного контроллера в проекте используются:
- Второй контроллер Arduino Mega 2560
- Плата сетевого интерфейса Ethernet Shield
- 2 беспроводных модуля nRF24L01
- 3 цифровых температурных датчика DS18B20
- Датчик температуры и влажности воздуха DHT22
- 15 датчиков влажности почвы
- 4 датчика освещённости
- 2 датчика уровня воды
- 7 сервоприводов для управления жалюзи
- 12 шаговых моторов для управления ролл-шторами
- 18 реле для коммутации нагрузок 220 В
Топология подсети «Зимний сад»
На этой схеме представлена топология подсети «Зимний сад». Эта подсеть, в свою очередь, входит в сеть «Умная дача». Каждый управляющий контроллер которой («Дом», «Баня», «Котельная» и т. д.) тоже имеют свои подсети, подобные этой.
В связи с протяжённостью зимнего сада, не очень удобно прокладывать провода от контроллера ко всем его отдалённым частям, поэтому применено решение из двух одинаковых контроллеров Arduino Mega 2560, объединённых в единую систему при помощи беспроводного nRF24 канала
Один из контроллеров стал «главным», а второй «партнёром». Пользователь системы работает только с главным контроллером, работа партнёра для него полностью прозрачна, он может даже не подозревать, что работает с распределённой системой.
Вторым фактором, потребовавшим использования дополнительного контроллера, стало большое количество датчиков и актуаторов, которые нужно подключить к системе.
Режимы работы
Поскольку зимний сад примыкает к дому, то на контроллер сада возложены некоторые функции по управлению оборудованием дома. В частности, управлению частью окон, жалюзи, ролл-штор и проекционным экраном. Но основное назначение контроллера — это управление работой зимнего сада и полив растений.
В интерфейсе можно выбрать один из четырёх режимов работы системы: «авто», «ручной», «кабинет», «кино».
Основным является автоматический режим. В этом режиме система сама управляет всем подключённым к ней оборудованием (робот) — открывает и закрывает окна, жалюзи и шторы, поливает растения, следит за уровнем воды и т. д.
В ручном режиме большинство автоматических функций отключается и становится доступной ручная установка параметров и индивидуальное управление каждой шторой и жалюзи.
Режимы «кабинет» и «кино» — это специализированные вариации режима «авто» с настройками штор и жалюзи для работы в кабинете или просмотра фильмов. Эти функции не относятся непосредственно к «Зимнему саду», они появились в системе в связи с соседством сада и дома.
Контроль температуры и влажности воздуха
Данные о температуре система получает от датчиков DS18B20, объединённых в 1-Wire сеть. Две зоны контроля температуры в зимнем саду и данные о температуре на улице. К системе также подключён датчик температуры и влажности воздуха DHT22. Все эти данные используются системой для управления микроклиматом зимнего сада.
В интерфейсе системы можно видеть текущие значения температуры и задавать пороговые значения, которые будут использоваться системой для поддержания температуры воздуха в зимнем саду.
Лимиты отклонений температуры
Для каждой контролируемой температуры можно задать пределы максимально допустимого отклонения от заданной величины. В случае выхода температуры за эти пределы система будет отсылать тревожные SMS на мобильный телефон.
В данном случае отклонение температуры по всем зонам составляет 22,25 градуса Цельсия (это тестовый пример) и система уведомила об этом, отослав три SMS сообщения.
Система полива растений
Система поддерживает 15 независимых каналов полива растений, каждому из которых можно задать индивидуальные настройки. Часть этих каналов подключена к главному контроллеру, часть — к nRF24 партнёру. Для пользователя это подключение прозрачно, он видит только 15 каналов, которые управляются и работают одинаково.
Информация об уровне влажности почвы поступает в систему от 15-и датчиков, также подключённых к обоим контроллерам и эти подключения также прозрачны для пользователя. Кроме датчиков влажности почвы к системе подключены 15 реле управления поливом, по одному на каждый канал.
Получая данные с датчиков температуры, влажности воздуха и почвы, система принимает решение о необходимости полива той или иной зоны и в автоматическом режиме осуществляет полив.
Каждый из 15-и каналов используется для полива групп растений со сходными потребностями во влажности почвы. Например, 1-й канал можно настроить на полив орхидей, а 10-й — на полив кактусов.
Установки каналов полива
Интерфейс системы полива растений разбит на две части: в первой выводится информация о состоянии каждого канала, а во второй находятся настройки и кнопка включения и выключения всех каналов сразу.
По каждому каналу выводится: его состояние («выключен» или «автополив»), текущий уровень влажности почвы, полученный с соответствующего датчика и установленная цель полива (для кактусов сухо, для орхидей — влажно).
Тут же можно задать параметры по каждому каналу и сохранить их в энергонезависимую память — после выключения и последующего включения контроллера система продолжит полив растений в заданном режиме.
Параметры полива
Здесь задаются общие настройки для всей системы определения влажности почвы и полива растений.
Почвы и используемые датчики могут различаться по параметрам, а также датчики могут изменять свои характеристики с течением времени. Для точной настройки и компенсации деградации поверхности электродов датчиков в системе предусмотрена возможность задания пороговых значений, которые определяют тот или иной уровень влажности («сухая», «суховатая», «нормальная», «влажная», «залита водой»).
Также доступны настройки периода полива растений и длительность сеанса полива. Изменяя эти параметры, можно добиться оптимальной работы системы полива в конкретных условиях того или иного сада.
Управление окнами
Управление окнами производится либо в ручном, либо в автоматическом режиме. В ручном режиме доступны кнопки в веб-интерфейсе, нажимая на которые можно открывать и закрывать окна.
Цвет кнопки указывает на текущее положение окна: оранжевый — открыто, серый — закрыто.
Управление жалюзи
К системе подключены 7 жалюзи, управляемые сервомоторами. Все жалюзи разбиты на две логические группы по местам их физического местонахождения.
Управлять жалюзи можно как индивидуально, открывая их на любой нужный угол, так и в групповом режиме, задавая угол раскрытия и устанавливая всю группу в указанное положение. В автоматическом режиме система сама управляет жалюзи в соответствии с заложенной программой.
Управление ролл-шторами
Управление ролл-шторами аналогично управлению жалюзи. В ручном режиме доступна индивидуальная и групповая установка штор в любое положение, в автоматическом режиме система сама управляет шторами в соответствии с заложенным в неё алгоритмом.
Панель управления
В панели управления собрана информация обо всех датчиках и объектах управления, подключённых к системе и о состоянии самой системы. Вся информация обновляется в реальном времени, выводятся: текущее время, дата, температура на улице, название контроллера и номер щитовой где он установлен, текущая загрузка контроллера, размер свободной памяти и т. д.
Обилие индикаторов говорит о насыщенной внутренней жизни системы и сложности алгоритмов, обеспечивающих её работу. Панель управления удобна тем, что достаточно одного взгляда на неё, чтобы оценить текущее состояние всей системы.
Время восхода и захода солнца
В систему интегрирован алгоритм, определяющий время восхода и захода солнца (тёмного и светлого времени суток) для каждого дня в году и определённых географических координат.
Индикатор имеет два состояния: «SUN» на жёлтом фоне (в светлое время суток), «MON» на синем фоне (в тёмное).
SMS-сервер
Проект «Зимнего сада» входит в общий проект «Умная дача». В локальной сети «Умной дачи» работает SMS-сервер, который обеспечивает передачу SMS со всех контроллеров сети на мобильные телефоны и приём управляющих SMS с мобильных телефонов и передачу их контроллерам сети.
В панель управления выводится информация о доступности в сети SMS-сервера. В данном случае SMS-сервер не работает.
Другие контроллеры сети
В сети «Умной дачи» присутствуют контроллеры других объектов управления, например, «Дома», «Бани», «Котельной» и т. д. В панели управления находятся ссылки для быстрого перехода между контроллерами сети.
Нажимая на такую ссылку, вы переходите на другой контроллер, но выглядит это так, как будто вы просто открываете другую страницу AMS сайта. Понятие «управляющий компьютер» размывается и им становится вся сеть.
Плюс этого подхода в том, что при выходе из строя какого-либо отдельного контроллера 90% системы продолжает работать в штатном режиме (в отличие от централизованных систем, где выход из строя главного компьютера приводит к полной остановке системы).
nRF24 партнёр
Как уже отмечалось выше, система состоит из двух контроллеров Arduino Mega («главного» и «партнёра»), объединённых в одно целое по беспроводному nRF24 каналу. Поскольку работа партнёра полностью прозрачна и скрыта от пользователя, то он ничего не знает о состоянии самого партнёра.
В панель управления выведена информация о текущем состоянии партнёра: если индикатор зелёного цвета — с партнёром всё в порядке, если красного — значит партнёр не работает. В данном случае партнёр работает нормально.
Индикация температуры
Информация с цифровых датчиков DS18B20, подключённых по проводному соединению 1-Wire к системе. Используется для создания комфортных условий для выращивания растений в зимнем саду.
Датчик влажности воздуха
Информация о влажности и температуре воздуха с датчика DHT22, подключённого к главному контроллеру.
Датчики влажности почвы
Состояние всех 15-и датчиков влажности почвы в реальном времени. Весь диапазон возможных уровней влажности почвы разбит на несколько поддиапазонов: «сухая», «суховатая», «нормальная», «влажная», «залита водой».
Каждому уровню влажности соответствует свой цвет. В данном случае датчики M4, M6, M8, M9 показывают нормальный уровень влажности (зелёный цвет), датчики M2, M3 — сухую почву (оранжевый), остальные — суховатую (коричневый). Какие каналы будут поливаться в данном случае зависит от настроек, заданных пользователем в веб-интерфейсе.
Реле полива растений
Информация о состоянии 15-и реле полива растений. В соответствии с показаниями датчиков влажности почвы и настройками, система решила, что в данный момент нужно включить на полив реле W2, W3, W5, W7, W10, W11, W12, W13, W14, W15.
Реле управления окнами
Состояние реле управления открыванием и закрыванием окон. В ручном режиме управление производится из веб-интерфейса, в автоматическом система сама открывает и закрывает их. В данный момент окна закрыты.
Реле управления экраном
Информация о состоянии реле, управляющего проекционным экраном. Это часть функционала системы не относящаяся непосредственно к зимнему саду. Активируется при переходе в режим «Кино».
Сервоприводы управления жалюзи
Информация о положении 7-и сервоприводов управления жалюзи. Все жалюзи разбиты на две группы S1 (5 жалюзи) и S2 (2 жалюзи).
Моторы управления ролл-шторами
Информация о положении 12-и ролл-штор. Все ролл-шторы разбиты на четыре группы C3 (6 ролл-штор), C4 (3 ролл-шторы), C5 (2 ролл-шторы) и C6 (1 ролл-штора). Эти группы используются в ручном и автоматическом управлении шторами.
Датчики уровня воды
К системе подключены два датчика уровня воды, один к главному контроллеру, другой к беспроводному nRF24 партнёру. Несмотря на различие в подключении и работу одного датчика через беспроводной канал, оба датчика выглядят в интерфейсе совершенно одинаково.
Датчики освещённости
К системе подключены 4 датчика освещённости. 2 из них непосредственно к главному контроллеру и 2 — к nRF24 партнёру. Датчики определяют несколько градаций освещённости: «открытое солнце», «солнечно», «день», «пасмурно», «сумерки», «ночь». Эти данные используются системой в своей работе и уходе за растениями.
Каждый уровень освещённости отображается в интерфейсе своим цветом. В данном случае первый датчик показывает уровень освещённости «день», а остальные три — «пасмурно».
Развитие проекта
Тема управления теплицами, оранжереями и зимними садами очень обширная, всегда можно найти то, что нужно улучшить или придумать функцию, которую нужно добавить в систему. Этот проект делался под конкретный зимний сад и его конкретные условия и со своей задачей справляется на отлично. В дальнейшем, при необходимости, можно расширить реализованный функционал новыми функциями.
Функции, реализованные в проекте
- Комплексное управление зимним садом
- Управление системой из веб-интерфейса
- Адаптивный дизайн для использования на планшетах и смартфонах
- Отсылка тревожных и информационных SMS сообщений
- Сохранение настроек в энергонезависимой памяти
- Реализация распределённой устойчивой системы без главного компьютера
Датчики и актуаторы
- Подключение 3-х температурных датчиков DS18B20 по сети 1-Wire
- Подключение датчика температуры и влажности воздуха DHT22
- Подключение 2-х датчиков уровня воды
- Подключение 4-х датчиков освещённости
- Подключение 15-и датчиков влажности почвы
- Подключение 7-и сервоприводов для управления жалюзи
- Подключение 12-и моторов для управления ролл-шторами
- Подключение 18-и проводных реле коммутации нагрузок 220 В
Режимы работы системы
- Режимы работы системы «авто», «ручной»
- Смена режима в веб-интерфейсе
Температура
- Установка параметров температуры в веб-интерфейсе
- Слежение за заданной температурой
- Контроль температуры в реальном времени на веб-странице
- Задание лимитов отклонения температуры в веб-интерфейсе
- Индикация нарушений температурных лимитов на веб-странице
- Отсылка тревожных SMS при нарушении лимитов температур
Полив растений
- 15 независимых каналов полива растений
- Контроль влажности почвы по 15-и каналам
- Контроль температуры, влажности воздуха и освещённости
- Установка параметров полива в веб-интерфейсе
- Установка влажности почвы по каждому из 15-и каналов
- Индивидуальное или общее включение каналов
- Индикация состояния каждого канала в веб-интерфейсе
nRF24 сеть
- Поддержка работы nRF24 сети
- Распределённая nRF24 система
- Использование AMS nRF24 беспроводного стека и протокола
- Индикация состояния nRF24 партнёра в панели управления
Управление окнами
- Управление окнами автоматически, в зависимости от режима
- Управление окнами вручную из веб-интерфейса
Управление сервоприводами жалюзи
- Открывание и закрывание жалюзи из веб-интерфейса
- Произвольный выбор угла открытия
- Автоматическое управление жалюзи
- Индивидуальное и групповое управление жалюзи
- Индикация в реальном времени положения жалюзи
Управление ролл-шторами
- Открывание и закрывание ролл-штор из веб-интерфейса
- Произвольный выбор величины открытия штор
- Автоматическое управление ролл-шторами
- Индивидуальное и групповое управление ролл-шторами
- Индикация в реальном времени положения ролл-штор
Работа со временем
- Синхронизация времени с серверами в интернете
- Отслеживание временных интервалов
- Отслеживание времени суток
- Отслеживание времени восхода и захода солнца
SMS сообщения и команды
- Интеграция с AMS SMS-сервером
- Отсылка SMS сообщений на мобильный телефон
- Приём управляющих SMS от SMS-сервера
Сетевая работа
- Интеграция с другими контроллерами сети
- Приём управляющих команд по сети от других контроллеров
- Отсылка управляющих команд другим контроллерам сети
- Ссылки в интерфейсе для перехода между контроллерами сети
Индикация
- Индикация состояния всех объектов системы в реальном времени
Источник: https://hi-lab.ru/arduino-mega-server/ams-pro/projects/garden