Управление теплицей на arduino uno. Контроллер для теплицы на Arduino. Оживляем все это с помощью программы

Теплицы предназначены для обеспечения оптимального микроклимата для роста и развития растений. Это могут быть и большие промышленные сооружения и небольшое место на подоконнике для выращивания любимого цветка. Но даже за самой крохотной теплицей на подоконнике нужен уход: осуществление полива, поддержание нужной температуры, уровня освещенности и т.п.

Многие с удовольствием занялись подобным хозяйством, вот только ни сил, ни времени для этого нет. И только мечта подсказывает: вот бы такую конструкцию, которая бы настолько умной, что делала бы все сама. Такая теплица окажется востребованной теми, кто не хочет тратить много времени на уход за растениями, а также может не иметь для этого возможности в случае длительного отсутствия — командировок, отпуска и т.п.
Мы и приступим к созданию подобной теплицы, назовем ее умной. А поможет нам создавать умную теплицу контроллер Arduino . Какие же функции будет выполнять умная теплица?
Во-первых, необходимо оперативно получать всю необходимую информацию об климатических параметрах нашей теплицы: температура и влажность воздуха, температура и увлажненность почвы, освещенность теплицы. Т.е. осуществлять мониторинг климатических параметров теплицы.

Какую проблему клиента решит функция мониторинга? Прежде всего — устранит беспокойство насчет того, все ли в порядке c растениями во время его отсутствия: есть ли вода в системе, не выключалось ли электричество, может ли системе вентиляции обеспечить нужную температуру, если в помещении стало слишком жарко и т.п.

Выводить данные мониторинга можно на дисплей, или с помощью светодиодов оповещать о критических значениях климатических параметров, или получать данные через интернет или на планшет.
Далее, необходимо реализовать возможность управления теплицей – осуществлять полив, обогрев, вентиляцию растений, регулировать освещенность растений. Управление можно с помощью автоматики, или удаленно (через интернет или через телефон (планшет)).

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

Рисунок 1. Схематическое изображение умной теплицы

В наших уроках мы рассмотрим практическую реализацию проекта умной теплицы. Создадим проект умной теплицы –
«Домашний цветок». И начнем с реализации функции мониторинга параметров теплицы. Для мониторинга нам необходимо получать следующие данные о окружаещей среде нашего цветка:

  1. температура воздуха;
  2. влажность воздуха;
  3. увлажненность почвы;
  4. освещенность цветка.

Для реализации функции мониторинга нам понадобятся следующие детали:

  1. Arduino Uno;
  2. Кабель USB;
  3. Плата прототипирования;
  4. Провода «папа-папа» – 15 шт;
  5. Фоторезистор – 1 шт;
  6. Резистор 10 кОм – 1 шт;
  7. Датчик температуры TMP36 – 1 шт;
  8. Модуль температуры и влажности воздуха DHT11 – 1 шт
  9. Модуль влажности почвы – 1 шт.

Позиции 1-6 имеются в наборах серии «Дерзай» («Базовый», « » и «Умный дом»), датчик температуры TMP36 имеется в наборах «Базовый» и «Изучаем Arduino». Ссылки на позиции 8 и 9 будут даны в конце статьи.
Сначала познакомимся с датчиками, которые будем использовать для функции мониторинга параметров нашего проекта.
C помощью фоторезистора (рисунок 2) осуществляют измерение освещенности. Дело в том, что в темноте сопротивление фоторезистора весьма велико, но когда на него попадает свет, это сопротивление падает пропорционально освещенности.

Рисунок 2. Фоторезистор

Аналоговый датчик температуры TMP36 (рисунок 2) позволяет легко преобразовать выходной уровень напряжения в показания температуры в градусах Цельсия. Каждые 10 мВ соответствуют 1 0С, Вы можете написать формулу для преобразования выходного напряжения в температуру.

0C = [ (Vout в мВ) - 500] / 10

Смещение -500 для работы с температурами ниже 0 0C.

Рисунок 3. Аналоговый датчик температуры TMP36

Датчик DHT11 состоят из емкостного датчика влажности и термистора. Кроме того датчик содержит в себе простенький АЦП для преобразования аналоговых значений влажности и температуры. Будем использовать датчик в варианте модуля для Arduino (рисунок 4).

Рисунок 4. Модуль DHT11

Модуль влажности почвы (рисунок 5) предназначен для определения влажности земли, в которую он погружен. Он позволяет узнать о недостаточном или избыточном поливе ваших домашних или садовых растений. Модуль состоит из двух частей: контактного щупа YL-28 и датчика YL-38, щуп YL-28 соединен с датчиком YL-38 по двум проводам. Между двумя электродами щупа YL-28 создаётся небольшое напряжение. Если почва сухая, сопротивление велико и ток будет меньше. Если земля влажная - сопротивление меньше, ток - чуть больше. По итоговому аналоговому сигналу можно судить о степени влажности.

Рисунок 5. Модуль влажности почвы

Теперь соберем на макетной плате схему, представленную на рисунке 6.

Рисунок 6. Схема соединения для мониторинга параметров для «Домашний цветок «.

Приступим к написанию скетча. Фоторезистор, датчик температуры TMP36 и модуль влажности почвы – обычные аналоговые датчики. Для датчика TMP36 мы можем преобразовать аналоговые значения в показания температуры в градусах Цельсия. Для работы с модулем DHT11 будем использовать Arduino библиотеку DHT (Скачать). Данные будем измерять с интервалом 5 секунд и значения выводить пока в последовательный порт Arduino.
Создадим в Arduino IDE новый скетч, занесем в него код из листинга 1 и загрузим скетч на на плату Arduino. Напоминаем, что в настройках Arduino IDE необходимо выбрать тип платы (Arduino UNO) и порт подключения платы.

Листинг 1.

// подключение библиотеки DHT #include "DHT.h" // тип датчика DHT #define DHTTYPE DHT11 // контакт подключения входа данных модуля DHT11 int pinDHT11=9; // контакт подключения аналогового выхода модуля влажности почвы int pinSoilMoisture=A0; // контакт подключения аналогового выхода датчика температуры TMP36 int pinTMP36=A1; // контакт подключения аналогового выхода фоторезистора int pinPhotoresistor=A2; // создание экземпляра объекта DHT DHT dht(pinDHT11, DHTTYPE); void setup() { // запуск последовательного порта Serial.begin(9600); dht.begin(); } void loop() { // получение данных с DHT11 float h = dht.readHumidity(); if (isnan(h)) { Serial.println("Failed to read from DHT"); } else { Serial.print("HumidityDHT11= "); Serial.print(h);Serial.println(" %"); } // получение значения с аналогового вывода модуля влажности почвы int val0=analogRead(pinSoilMoisture); Serial.print("SoilMoisture= "); Serial.println(val0); // получение значения с аналогового вывода датчика температуры TMP36 int val1=analogRead(pinTMP36); // перевод в мВ int mV=val1*1000/1024; // перевод в градусы цельсия int t=(mV-500)/10; Serial.print("TempTMP36= "); Serial.print(h);Serial.println(" C"); // получение значения с аналогового вывода фоторезистора int val2=analogRead(pinPhotoresistor); Serial.print("Light= "); Serial.println(val2); // пауза 5 секунд Serial.println(); delay(5000); }

После загрузки скетча на плату, открываем монитор последовательного порта и наблюдаем вывод значений с показаниями наших датчиков (рисунок 7).

Рисунок 7. Вывод значений с показаниями наших датчиков в монитор последовательного порта Arduino.

А вот и наш выращиваемый цветок (рисунок 8).

Рисунок 8. Проект «Домашний цветок»

Смотреть показания датчиков через последовательный порт не совсем удобно, в следующем уроке рассмотрим более


Идея сделать автоматическую теплицу у меня появилась давно. Дошло дело до реализации и я начал изучать тепличное хозяйство и устройство автоматики для теплиц. Оказывается интеллектуальная теплица - это не так просто, очень много тонкостей, которые придется учитывать. Начну наверное с главного - как происходит рост и созревание разных культур и какие параметры окружающей среды надо в эти периоды поддерживать.

Температура воздуха

Если в теплице будет расти помидоры и огурцы, то параметры окружающей среды для этих культур схожи. Помидоры хорошо себя чувствуют при температуре воздуха от +18 до +25°С днем и не ниже +16°С ночью. Температура почвы от +10°С и выше. Для цветения и плодоношения температуру можно немного увеличить, чтобы плоды созревали быстрее и были больше.
В ночное время вещества из листьев уходят к плодам. Если температуру увеличить то плод будет активнее наливаться. Если температура в нижних пределах, то это способствует росту побегов и корней - для продолжительного плодоношения.

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

Итак начну о способах понижения температуры в теплице. Самое простой способ понизить температуру в теплице это создать проветривание. Для проветривания используются "актуаторы", которые открывают форточки при повышении температуры.

Существуют автономные "масляные проветриватели" - суть их работы простая, при повышении температуры воздуха гидравлическое масло расширяется и толкает шток, тем самым форточка открывается. При понижении температуры закрывается без какой либо автоматики. Но есть и проблемы с ними, первая проблема - если температура воздуха повышена и внезапно пролетает циклон с повышением ветра, форточка может просто не успеть закрыться и ее может оторвать сильными потоками ветра. Ну и вторая проблема - это протекание цилиндров, но это можно вовремя заметить.

Актуаторы для теплиц

Я все же решил сделать проветривание более интеллектуальным. В магазинах продаются линейные актуаторы, которыми можно открывать и закрыть форточки по заданным условиям. Т.к. автоматика всегда работает, то проветриваени можно подключить к общей системе, т.к. актуатор стоит не дороже гидроцилиндра а возможностей намного больше. В сочетании с датчиком ветра , датчик атмосферного давления и датчик температуры можно расширить возможности своей теплицы. К примеру датчик атмосферного давления может следить за перепадами давления, ведь давно уже известно при быстром падении атмосферного давления с больше вероятность может пройти сильный ветер, а уже датчик скорости ветра точно покажет что надо бы закрыть все форточки.

Влажность воздуха

Это такой же важный параметр в теплице как и температура, она не должна опускаться ниже 60%. Для разных культур этот параметр может отличаться от 60% до 90%. И мало того, параметр влажности воздуха меняется в зависимости от стадии роста, цветения и плодоношения. Поетому в автоматике для теплиц должна быть предусмотрена возможность менять условия или выбирать уже заложенные программы для разных культур и стадий роста.

Способы увлажнения теплиц

Для увлажнения воздуха в теплице используют увлажнители и датчики влажности , это могут быть ультразвуковые увлажнители или распылители высокого давления. Для ультразвуковых увлажнителей надо использовать фильтры обратного осмоса, т.к. пьезоэлемент быстро придет в негодность от солней и других налетов. Но и форсунки распылителя высокого давления так же засоряются, поетому нужен фильтр тонкой очистки.
Для ультразвукового увлажнения стоит учесть один факт, при ультразвуковом увлажнении температура пара почти 40 градусов, т.е. при увлажнении немного поднимется общая температура в теплице. Но ультразвуковые увлажнители это эконом вариант, лучше конечно использовать насос высокого давления и сппециальные распыляющие форсунки.

Влажность почвы и полив

Еще важный параметр для теплиц - влажность почвы. В разные стадии роста и созревания этот параметр меняется. Самая большая потребность растений во влаге в рассадный период - до 90-95%, а также в фазу плодообразования и плодоношения.

Системы автополива

Автополив в теплице устроен по разному, но в итоге все приходят к дозирующему поливу. Датчики влажности почвы можно использовать но с тащтельной доработкой. Китайские датчики влажности из печатных плат могут показывать точные данные не больше месяца, после чего металлическая поверхность контактов расзрушается и окисляется. Если использовать этот датчик, то в конце концов придет момент, когда вы зайдете в теплицу а у вас там бассейн, все залито а ваши растения вероятно всего погибнут. Поетому датчики влажности можно использовать совместно с датчиком потока воды (счетчиком воды). Надо замерить количество потребляемой воды в сутки и задать этот параметр. Датчик влажности почвы можно использовать но с доработкой, контакты должны быть из такого материала, который проводит электрический ток и как можно меньше окисляется. Это может быть медь, но и она окисляется ос временем, но это уже хорошо, т.к. можно раз в год чистить контакты и опять использовать. Но лучше попробовать графитовые стержни, графит проводит электрический ток и не окисляется. Я пока не пробовал, но вот хоче сделать для теста такой датчик. Вообщем за основу надо взять показатели счетчика воды, а датчиком влажности можно отключать полив, если он покажет максимальные значения. Например в дождливую погоду, расход воды уменьшается в разы, и установленного количества воды для датчика потока можнт быть черезчур много. Так что контроль для полива лучше сделать комбинированным.

Полив включается с помощью реле по сигналу от датчика или по времени. Емкость для полива должна находиться на высоте и полив лучше делать "самотеком" просто открывая или закрывая электроклапан. Таким образом можно сделать более автономную систему, т.к. для питания контроллера и клапанов хватит обычного аккумулятор и солнечной батареи. Такой принцип работы полива будет уместен в местах, где часто отключают электричество на длительное время.

Температура почвы

Температура почвы - так же важно регулировать, т.к. поддержание температуры почвы в определенных пределах поможет расширить возможности вашей теплице. Например, таким способом можно увеличить время использования теплицы от ранней весны до поздней осени, и вырастить некоторые экзотические растения. Регулировка температуры в автоматической теплице можнро сделать с помощью нагревательных тенов. В магазинах продается нагревательные провода, которые укладываются на дно грядок. Управление нагревом происходит через контроллер, который постоянно считывает данные с датчика температуры, который должен находится в грунте. Т.е. датчик температуры должен быть влагозащищенный. При понижении темперутары, контроллер подаст сигнал реле на включение питания для подогрева. Как только температура почвы достигнет заданных пределов, контроллер отключит питания от нагревателя. Чтобы нагревательный элемент не вышел из строя от частого включения и отключения, лучше использовать специальные диммеры, которые будут постепенно подавать нагрузку на нагреватель.

Теплица на ардуино


Оборудование для теплицы

  1. Контроллер Arduino Mega - цена на aliexpress 10 долларов
  2. Блок реле на 8 каналов - цена на aliexpress 10 долларов
  3. Датчики Температур DHT - цена на aliexpress 1 доллара
  4. Датчики Температур DS1820 - цена на aliexpress 1 доллара
  5. Модуль отображения данных LCD I2C - цена на aliexpress 3 доллара
  6. Датчики влажности почвы - цена на aliexpress 1 доллар
  7. Датчик освещенности - цена на aliexpress 1 доллар
  8. Электро магнитные клапана для капельного полива - 150 рублей за штуку в автомагазине
  9. Блок бесперебойного питания на 12воль без батареи - 700 рублей, с батареей 2000 рублей.
  10. Электро привод замка дверей для авто (для форточки) - 250 рублей в автомагазине
  11. Поплавковые датчики уровня воды - 200 рублей

Управление электронагрузками


Для управления электрооборудованием подойдёт плата Relay Shield, количество реле должно соответствовать количеству устройств + запас на будущее, всегда можно добавить. На картинке 4 канальная плата. Мы будем включать\выключать насос, электромагнитные краны. Если использовать сервопривода или электро привод замка дверей для авто, можно открывать\закрывать форточки.

Параметры окружающей среды


Параметры окружающей среды считываются в теплице с помощью датчиков температуры и влажности. Эти данные можно использовать для проветривания.

Управление освещением

Так же нужен фоторезистор, который будет включать освещение.

Автополив

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

Таймер

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

Доступ к теплице через интернет

Если не хотите ограничивать себя только офлайн версией автоматической теплицы, можно купить за 10 баксов на том же алиекспресс специальный сетевой шилд, чтобы можно было управлять теплицей через интернет. Так же мы можем использовать сеть для подключения видеокамер. Можно следить за нашими растениями через интернет.

Аварийное оповещение по SMS

Не хочу забегать вперед, вот мысль в голову пришла. Например, если в бак не закачивается вода, засорился насос, или форточка заклинила и температура в помещении поднимается выше 80 градусов, это все может привести к гибели растений. Если мы живем на даче, то можно раз в день заглянуть в теплицу, чтобы посмотреть все ли в порядке с растениями. Но что делать если мы в другом городе? Я считаю надо делать алгоритм безопаности для проверки пограничных параметров теплицы. Если один из параметров приближается к критической отметке, можно отправить SMS с помощью GSM шилда для ардуионо, стоит около 50 баксов на алиекспресс. Мы всегда будем в курсе, если нашим растениями некомфортно, и можем позвонить соседу, чтобы он проверил все ли в порядке с теплицей.

Проветривание

Поддерживать оптимальную температуру можно несколькими способами. Для теплиц, оптимальная температура +22 градуса, максимальная +30 градусов и минимальная +16 градусов. Для начала мы будем использоваться масляный термопривод, цену не знаю, т.к. специализированный стоит от 1500 рублей, но можно сделать самому из старого амортизатора автомобильного и дополнительной емкости для лучшего расширения. Вообщем идея такая, при повышении температуры в теплице, масло в цилиндре термопривода расширяется и толкает поршень, который связан с форточкой, тем самым открывает. И наоборот, как температура падает, термопривод закрывает форточку. Если все правильно рассчитать, то электронные устройства для поддержания температуры не нужны, но мы будем делать полностью автоматизированную теплицу, на случай сильной жары. И добавим еще вентиляторы, которые будут включаться, если не будет хватать масляных термоприводов.

Полив

Мы уже много начитались про выращивания растений в теплице, поетому полив делаем тоже динамический, а может быть и подстраивающийся под определенные растения. Основные данные для полива мы получаем с датчиков влажности, но бывает что надо специально сделать особенный полив по таймеру в момент созревания или роста. Для этого мы напишем сценарий под определенный тип растений, но в основной будем использовать датчик влажности. Для полива используется большая бочка, лучше темного цвета, чтобы вода нагревалась в ней, холодной водой поливать нельзя. Бочка ставится на высоту, чтобы было небольшое давление. К бочке подключается клапан, который пускает воду в систему капельниц. Для полного контроля, можно разделить на секции с клапанами, чтобы не переливались или недоливались в разноудаленных местах, а на каждую секцию использовать свой датчик влажности. В бак надо врезать два датчика уровня воды (минимум и максимум). По этим датчикам насос будет наполнять бочку, если там мало воды и выключать, если воды в бочке полно.

Оживляем все это с помощью программы

Как мы придумаем точную схему автоматики, можно приступать к программированию скетчей. Написание программы основано на языке программирования C++. В интернете можно найти много примеров, которые надо будет просто подстроить под свои задачи и поменять цифры. Первое время надо будет подгонять параметры и почти вручную все настроить, и отлаживать в процессе, поэтому придется постоянно мониторить и подстраивать. Это обычно занимает пару дней, один для настройки второй для проверки, но лучше бы первое время постоянно быть в курсе, что происходит в теплице, а то может датчик не там стоит, и плохо реагировать на изменения. Но зато потом, когда все будет отлажено, можно будет не беспокоится за микроклимат в теплице, и просто собирать свежие овощи и ягоды с грядок. Программирование на ардуино не сложное, в интернете много примеров. Это занятие можно назвать конструктором для взрослых, весело и полезно. Единственное, что хотел бы всем этим сказать, ардуино может решить все, но для использования в промышленных масштабах или для высокой надежности, под вопросом. Для надежности, лучше использовать готовые устройства, хотя у меня ардуино работает уже несколько лет без проблем.

Как я уже писал в прошлой части, изначально настройка параметров теплицы с кнопочек с отображение на дисплее не планировалась, поэтому я предусмотрел кнопки и переключатели в ящике.

Все это можно было тоже реализовать программно, но раз уже сделал, то они сохранили свою функциональность:

Переключатель обогрева почвы (обогрев отключен / включен автоматический обогрев),
- переключатель обогрева водуха (обогрев отключен / включен автоматический обогрев),
- трехпозиционный переключатель открывания окон (автоматика отключена, окна открыты / автоматическое управление окнами / автоматика отключена, окна закрыты),
- кнопка набора воды в бак,
- кнопка полива,
- переключатель режимов полива (один раз в день / два раза в день)
- кнопка включения подсветки дисплея, установленная сверху ящика. Включает подсветку на 30с.

Сразу понятно, что все это для случаев, если вдруг что-то пойдет не так с автоматикой.
Теперь о настройках, которые можно установить с кнопок на панели. Этой зимой, постаравшись максимально сымитировать теплицу, работал над написанием кода для лежащего на столе ящика.

Итак, основное меню состоит из 3-х пунктов:
1. Меню настроек.
2. Установка даты-времени.
3. Тестовая программа для концевиков и моторов открывания окон.

С установкой даты и времени все понятно. Тестовая программа - чтобы подключить окна, погонять их с помощью кнопочек, проверить как закрываются, правильно ли подключил, настроить сработку концевиков и т.д.

В меню настроек можно установить следующие параметры:

1. Время полива.
2. Время второго полива (если включен режим полива 2 раза в день)
3. Время набора воды.
4. Температура открытия окон.
5. Температура закрытия окон.
6. Температура включения обогрева почвы.
7. Температура отключения обогрева почвы.
8. Температура включения обогрева воздуха.
9. Температура отключения обогрева воздуха.

Жена сказала, что поскольку нет никакого резервирования и защиты, если концевики не сработают, нужно еще установить предельное для работы насоса и моторов окон. Это было правильное и справедливое замечание, поэтому пришлось ввести и такие настройки:

10. Предельное время работы мотора открывания окна 1.
11. Предельное время работы мотора открывания окна 2.
12. Предельное время работы мотора закрывания окна 1.
13. Предельное время работы мотора закрывания окна 2.
14. Предельное время работы насоса.
15. Время работы насоса для запуска полива.

Теперь для иллюстрации работы меню предлагаю посмотреть небольшое видео:,/p>

Несмотря на то, что снег еще у нас в середине апреля еще лежал, я установил блок управления в теплицу и подключил обогрев почвы (теплый пол) пока без автоматики и обогрев воздуха обогревателем с автоматическим управлением. По прошествии недели, что почва прогрелась до 30 градусов, на момент осмотра обогреватель отключен, температура воздуха 22 градуса - солнце уже работает как надо.
Кроме того, 15 апреля я включил автопроветривание, чтобы понаблюдать за его работой. Как работает автопроветривание можно также посмотреть на видео:

Попробовал следующие настройки:

Открывание окон 25 градусов;
- закрывание окон 21 градус;
- включение обогревателя 18 градусов;
- выключение обогревателя 20 градусов.

Настройки оказались неоптимальными. То есть на улице температура 8 градусов и ветер. Примерно каждые 20 минут температура в теплице достигала 25 градусов, окна открывались, теплица быстро проветривалась, окна при 21 градусе начинали закрываться, пока закрывались, температура падала еще ниже, поэтому сразу после закрытия окон на 5 мин. включался обогреватель.

Изменил настройки:

Открывание окон 28 градусов;
- закрывание окон 22 градус;
- включение обогревателя 16 градусов;
- выключение обогревателя 19 градусов.

Все устаканилось, теплица перестала хлопать окнами. Возможно надо установить еще датчик температуры на улице и коррелировать как-то управление температурой в теплице, основываясь на его показаниях.

В течение двух недель в теплице не только тестировалась система автоматического поддержания температуры, но и в 20-х числах апреля были высажены огурцы. Теперь расскажу об автоматическом поливе. Его конструкция в моей теплице выглядит примерно так:>

Из большого бака раз в день в определенное время (настраивается с помощью меню) вода наливается в бак, расположенный в теплице, с помощью насоса. В моем случае в 10-00. Количество воды определяется срабатыванием поплавкового датчика. На всякий случай через меню можно настроить предельное время работы насоса (защита от несработки датчика. Итак, вода налилась:

После этого вода в баке весь день греется в теплице, в которой тепло. А вечером, у меня настроено в 19-00, насос включается на 40 секунд, вода переливается и уже самотеком, по закону сообщающихся сосудов, выливается на грядку:

Как я настраивал автоматический полив, тоже можно увидеть на видео:

В начале мая температура несколько ночей опускалась до -8С. Обогреватель работал, в теплице температура была не ниже +12С, температура почвы +20С. Работа в таком режиме выявила недостаток китайских реле. Несмотря на то, что в характеристиках заявлено 10А 250В, а обогреватель 1кВт, реле, отвечающее за включение обогревателя воздуха, стало греться и "залипать." Пришлось поставить последовательно реле помощнее. В настоящее время автополив включен и работает. На следующей неделе надеюсь вывести теплицу в "онлайн", чтобы наблюдать ее параметры на своем сайте.
В настоящее время скетч для Ардуино выглядит так: https://ideone.com/GvHs7u Прошу не критиковать код - программист я начинающий, однако код рабочий, что доказано, хоть и недолгой пока, эксплуатацией.

Уважаемые коллеги!
Хотелось бы немного дополнить уже имеющиеся на форуме публикации небольшой статьёй, дополняющей серию доступной автоматизации для дачных участков. STM32 как серия микропроцессоров вполне может дополнить группу устройств автоматики, построенных на Ардуино.
Немного истории - почему вообще родилась такая сист ема. Совсем недавно я стал счастливым обладателем 140 кустов ремонтантной малины, и конечно же, сделал посадку. Несмотря на то, что убыли приложены старания - результат оказался плачевным. Посадка была с мульчирующим покрытием и оборудована капельным поливом - но более половины кустов к осени оказались нежизнеспособными. Причём что удивительно - ни вредителей, ни болезней замечено не было. Именно это и оказалось толчком для начала работ.
В первую очередь, был проведён анализ воды - и оказалось, что вода имеет состав, который не очень хорошо воспринимается малиной. Грустная новость - это говорит о том, что без специальной системы подготовки применить воду, имеющуюся просто в избытке на участке, нельзя. Конечно, интернет мне в помощь - и результаты просто шокирующие... Цена на готовую систему превышает 270 тыс рублей, и просто так её не купить - изготавливается индивидуально, и для моих объёмов сони имеют слишком большую производительность. Стало обидно за державу - и вот, после года(!) работ, появилась на свет система, которая с успехом прошла испытания и в этом году будет управлять поливом и подкормкой моих посадок. Причём не только малины.
Собственно, вы справедливо заметите - это же открытые посадки, а тут обсуждается закрытый грунт. Да - дело в том, что мой коллега, у которого имеется 3 теплицы, заинтересовался проектом. И вот уже для него сделаны малой серией контроллеры, фото которых вы видите ниже

Немного технических подробностей - в качестве основной платы используется отладочная плата с установленным stm32f103c8t6. Питание 220В переменного тока, имеется гальванически изолированная шина стандарта RS485 и также гальванически изолированная шина стандарта 1-wire. Контроллер является свободно программируемым - по командам полностью совместим с контроллером FX2N Mitsubishi.
Поддерживает протокол обмена Modbus RTU как мастер, так и слейв. Также имеет 2-й порт обмена последовательными данными - но поддержка только слейв modbus RTU.
Благодаря наличию шины 1-wire, легко работает с распространёнными датчиками температуры DS18B20. Причём поддерживает до 128 штук.
Также в данную публикацию хотелось бы добавить видео работы системы из 4-х контроллеров, работающих по шине модбус.

Почему я решил провести такую публикацию? Да очень просто - ведь не каждый может взять в руки паяльник и собрать то, что ему необходимо. Этот контроллер даёт возможность реализовать любую идею или задумку фермера без особых знаний.
Немного сумбурно описал систему - уж извините. Если будут вопросы - милости прошу, отвечу по возможности на все. Также, если этот пост пропустят, буду публиковать материалы о том, как эта система будет устанавливаться в теплице. Надеюсь, этот опыт будет полезным.

GyverControl – универсальный контроллер-таймер для теплицы и других мест, где нужна автоматизация по таймеру или показателям микроклимата/другим датчикам, имеет 10 отдельно настраиваемых каналов управления, собран из недорогих китайских компонентов и заменяет несколько “магазинных” контроллеров разного назначения: управление поливом, освещением, открытием дверей и многого другого. Может использоваться как для теплиц/грядок, так и для аквариумов, террариумов, инкубаторов и прочих автоматических систем. Обязательно читайте документацию на контроллер (ссылки выше), там подробно рассказано обо всех возможностях. Здесь лишь краткий перечень!

Данный проект полностью открытый, то есть любой из вас может сделать себе контроллер для теплицы своими руками, GyverControl сочетает в себе контроллер полива, освещения, проветривания и многого многого другого. Самое главное, что сделать себе такой контроллер умной теплицы можно по себестоимости, т.е. по розничной стоимости китайских компонентов. А это очень дёшево.

Железо:

  • Arduino Nano (ATmega 328p) как главный контроллер системы
  • 7 каналов с логическим выходом 5V, к которым можно подключать обычное реле, твердотельное реле, силовые ключи (транзисторы, модули на основе транзисторов)
  • 2 канала сервоприводов, подключаются обычные модельные серво больших и маленьких размеров
  • 1 канал управления линейным электроприводом с концевиками ограничения движения и с работой по тайм-ауту
  • Датчик температуры воздуха (BME280 )
  • Датчик влажности воздуха (BME280 )
  • 4 аналоговых датчика (влажности почвы или других)
  • Модуль опорного (реального) времени RTC DS3231 с автономным питанием
  • Большой LCD дисплей (LCD 2004, 20 столбцов, 4 строки)
  • Орган управления – энкодер
  • Поддержка датчиков влажности DHT11/DHT22, температуры DS18b20 и термисторов

Программные фишки:

  • Хранение всех настроек в энергонезависимой памяти (не сбрасываются при перезагрузке )
  • Датчики влажности почвы (все аналоговые датчики) не находятся под постоянным напряжением, оно подаётся только на момент опроса , что позволяет продлить жизнь даже самым дешёвым датчикам влажности почвы (напряжение подаётся за 50 мс до опроса и выключается через 50 мс после).
  • Оптимизированный вывод данных на дисплей
  • Каждый из 10 каналов (7 реле, 2 серво и 1 привод) имеет индивидуальные настройки и может работать по таймеру или по датчикам
  • 4-6 режимов работы каждого канала: три разных таймера и работа по условию с датчиков, режимы ПИД и рассвет
  • Серво работает с моей библиотекой ServoSmooth , это обеспечивает плавное их движение: плавный разгон и торможение с ограничением максимальной скорости, а также отсутствие рывков и незапланированных движений при старте системы
  • Линейный привод имеет концевики , внешние кнопки для управления и настройку скорости движения. Частота ШИМ драйвера – 31 кГц, т.е. не пищит
  • Экран отладки , где отображается вся текущая информация о состоянии железа и датчиков
  • Графики температуры и влажности воздуха и показаний с аналоговых датчиков за последние сутки
  • Сервисное меню , позволяющее вручную управлять каждой железкой

Применение как контроллер теплицы/бокса:

  • Периодичный полив (реле)
    • Схема с индивидуальными помпами/клапанами
    • Схема с одной помпой и несколькими клапанами
  • Полив на основе показаний датчиков влажности почвы
  • Управление освещением (реле) с привязкой ко времени суток
  • Проветривание (привод открывает окно/серво открывает заслонку) по датчику температуры или влажности воздуха
  • Увлажнение (включение увлажнителя) по датчику влажности воздуха
  • Обогрев (включение обогревателя) по датчику температуры
  • Выполнение действий сервоприводом (нажатие кнопок на устройствах, поворот рукояток, поворот заслонок, перемещение предметов) по датчику или таймеру

Применение как контроллер аквариума:

  • Режим рассвет для светодиодных лент (через МОСФЕТ) и ламп накаливания (сервопривод)
  • ПИД регулятор для поддержания температуры воды
  • Сервоприводы (2 шт) для сброса еды
  • Остальные каналы можно использовать по таймерам для запуска фильтров/аэраторов/подсветки

Другие применения:

  • Система поддерживает 4 аналоговых датчика, это не обязательно должны быть датчики влажности почвы, у китайцев полно других «датчиков-модулей», которые точно так же подключаются к схеме:
    • Датчик света : «умная» система освещения, резервное освещение
    • Термистор (до 80 градусов): контроль нагрева объекта
    • Датчик звука : закрывание окна при сильном шуме снаружи (почему нет? =))
    • Датчик ИК излучения (датчик пожара) – разные варианты сигнализации, или даже тушения (включаем помпу с водой, открываем кран сервой)
    • Датчик дождя : закрытие окон, сигнализирование, включение помп на откачку
    • Датчик уровня воды /датчик наличия воды: автоматическое наполнение резервуара, автоматическая откачка воды помпой из ёмкости/подвала, перекрытие водяных магистралей при протечке, сигнализация о протечке
    • Газоанализаторы в ассортименте: сигнализатор или даже проветривание (открываем окно) по уровню угарного газа и других промышленных газов
    • Оптический датчик препятствия : тут нужна фантазия
    • Потенциометр : как дополнительный орган контроля системы
  • Сервопривод довольно универсальная штука, может открывать/закрывать заслонки, может нажимать кнопки других устройств, вращать ручки регулировки других устройств, с приделанным шатуном получает возможность линейно перемещать предметы/ползунки других устройств. Сервоприводы есть разных размеров, от микро (2 кг/см) и средних (13 кг/см) до весьма мощных (50 кг/см)
  • Реле умеет замыкать контакты питания и управлять любыми устройствами, также реле может включить блок питания (например светодиодной ленты). Реле можно поставить параллельно проводам к кнопке другого устройства, и оно будет его включать или выключать.
  • Версия 1.4 и выше позволяет поддерживать температуру при помощи ПИД регулятора, для
    террариумов/инкубаторов/любого поддержания температуры:
    – Подавать ШИМ сигнал на полевой транзистор, управляющий нагревом
    – Поворачивать сервоприводом крутилку сетевого диммера
  • Версия 1.4 и выше имеет режим Рассвет, позволяющий использовать контроллер для
    аквариума/террариума и прочих «животных ферм»
  • Основным органом управления является энкодер , рукоятку которого может вращать и нажимать (она является кнопкой). При запуске системы мы попадаем на настройку канала 0. Вращая рукоятку энкодера можно перемещать курсор выбора (стрелочка) по пунктам меню. Чтобы изменить значение выбранного пункта, нужно нажать рукоятку энкодера и повернуть её, удерживая нажатой . Также можно кликнуть по кнопке, курсор изменится со стрелки на галочку > , и вращением можно изменить выбранную величину. Повторный клик вернёт стрелку, при помощи которой можно выбрать другой пункт меню. Удержанный поворот при выбранном имени канала – смена канала для настройки. Листаем направо и у нас будет по порядку 7 каналов реле, два серво и линейный привод.
  • Чтобы перейти к настройке режима, нужно навести на него курсор и кликнуть кнопкой , не поворачивая. Откроется окно настройки режима, выйти из которого можно кликнув по надписи BACK (назад). Удерживая и вращая рукоятку на выбранном названии режима можно сменить режим, всего их 4.
  • В корне меню (выбор каналов) листая налево от канала 0 будет экран отладки (DEBUG ) и сервисный режим (SERVICE ). На экране отладки показаны все текущие положения реле, приводов и показания с датчиков. Вращая рукоятку на экране отладки последовательно листаются суточные графики показаний с датчиков: температура воздуха, влажность и показания с аналоговых датчиков. Деления на графике имеют шаг 1.6 часа . На экране сервиса можно управлять любым каналом в ручном режиме, при активном экране сервиса автоматика не работает, система находится полностью в ручном режиме. Поворотом рукоятки можно выбрать нужный канал, положение серво или настройку текущего времени, и удержанным поворотом её изменить.
  • Если включить систему с зажатой рукояткой энкодера, произойдёт полный сброс настроек каналов и режимов.

Режимы работы каналов

  1. Таймер – простой периодичный таймер: задаются периоды ПАУЗЫ и время РАБОТЫ в формате ЧЧ:ММ:СС. С периодом ПАУЗЫ совершается выбранное действие и выполняется в течение периода РАБОТЫ. Например, ПАУЗА стоит 1 час, РАБОТА – 10 секунд. Каждый час будет совершаться действие в течение 10 секунд, то есть если выбран канал реле, то реле включится и выключится через 10 секунд, затем снова включится через час и выключится через 10 секунд и так далее. Как канал ведёт себя на участке РАБОТЫ задаётся в параметре НАПРАВЛЕНИЕ, то есть это может быть вкл/выкл и выкл/вкл (реле), направо/налево и налево/направо (серво) и открыть/закрыть и закрыть/открыть (линейный привод). Данный режим не имеет привязки к реальному времени, перезагрузка системы сбрасывает текущий таймер. Внимание! РАБОТА не должна быть дольше ПАУЗЫ!
    • Мин. значение: 1 секунда
    • Макс. значение: 999 часов
    • Привязка к реальному времени: нет
  1. Таймер RTC – периодичный таймер, в отличие от предыдущего обладает привязкой к реальному времени, имеет настройку ПЕРИОДА включения и продолжительности РАБОТЫ (в секундах), которая будет совершаться, и СТАРТ – начального часа, с которого начинается отсчёт периода (для периодов больше 2 часов ). Например, период 15 минут, работа 10 секунд: каждые 15 минут будет производиться действие продолжительностью 10 секунд. Привязка к реальному времени работает следующим образом: действие будет совершаться с выбранным периодом от начала часа , то есть если выбран 15 минутный, то действие будет в 0, 15, 30 и 45 минут каждого часа . Если выбранный ПЕРИОД больше часа (от двух и более) то можно выбрать час СТАРТА, от которого пойдёт отсчёт. Все периоды кратны 24 часам, поэтому работа начинается в одни и те же часы каждого дня! Пример: ПЕРИОД 8 часов, начальный час 0. Действие будет выполнено в 0, 8 и 16 часов каждого дня. Если поставить начальный час (СТАРТ) 3 часа, то действие будет выполнено в 3, 11 и 19 часов каждого дня. При сбросе питания следующее действие будет совершено в ближайшее время «будильника». Внимание! РАБОТА не должна быть дольше ПЕРИОДА!
    • Периоды на выбор: каждые 1, 5, 10, 15, 20, 30, 60 минут и 1, 2, 3, 4, 6, 8, 12, 24 часа
    • Применение: полив в гидропонных системах, проветривание без датчика
Период Раз в сутки Когда срабатывает
1 мин 1440 Каждую минуту
3 мин 480 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57 мин. каждого часа
5 мин 288 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55 мин. каждого часа
10 мин 144 0, 10, 20, 30, 40, 50 мин. каждого часа
15 мин 96 0, 15, 30, 45 мин. каждого часа
30 мин 48 0, 30 мин. каждого часа
1 час 24 Каждый час
2 часа 12 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22 часа каждого дня (+ сдвиг на стартовый час)
3 часа 8 0, 3, 6, 9, 12, 15, 18, 21 час каждого дня (+ сдвиг на стартовый час)
4 часа 6 0, 4, 8, 12, 16, 20 часов каждого дня (+ сдвиг на стартовый час)
6 часов 4 0, 6, 12, 18 часов каждого дня (+ сдвиг на стартовый час)
8 часов 3 0, 8, 16 часов каждого дня (+ сдвиг на стартовый час)
12 часов 2 0, 12 часов каждого дня (+ сдвиг на стартовый час)
24 часа 1 0 часов каждого дня (+ сдвиг на стартовый час)
  1. Week (бывший Day) – простой таймер на одно действие с привязкой к реальному времени, имеет настройку On (время в формате ЧЧ:ММ:СС) – время, с которого действие активно, и Off (время в формате ЧЧ:ММ:СС) – время, с которого действие не активно. Также имеется 7 «ячеек» – дней недели Days , с понедельника по воскресенье. При перезагрузке действие вернётся в нужное положение согласно текущему времени. Пример: таймер настроен на 6 и 20 часов (Start и Stop). Соответствующее текущему каналу и параметру Direction действие будет активно с 6 до 20 часов, и неактивно с 20 до 6 часов утра следующего дня. При внезапной перезагрузке система совершит действие так, как оно должно быть на этом отрезке времени, то есть из прошлого примера если в промежуток между 6 и 20 часами произойдёт внезапная перезагрузка, при запуске система активирует действие по каналу. Внимание! On должен быть меньше Off!
    Также режим имеет настройку Global , которая вынуждает любой другой режим работать «по расписанию» Week. Что это даёт: например можно настроить полив во вторник и пятницу с 17 до 18 часов вечера (из бочки), поставить галочку global и настроить режим Sensor под полив. Как это будет работать: система будет поливать этот канал по режиму Sensor, но делать это только по расписанию (вторник и пятница 17-18).
    • Выбор дня недели
    • Выбор времени: 0-23 часа, кратно 1 часу
    • Привязка к реальному времени: да
    • Применение: идеальный режим для освещения и редкого полива
  1. Датчик – действие на основе датчика. С периодом опроса ПЕРИОД опрашивается выбранный датчик под названием ДАТЧИК и при превышении порогового значения ПОРОГ выполняется действие согласно выбранному каналу (реле/серво/привод). ПЕРИОД опроса опроса задаётся в секундах или минутах (по мере увеличения). Датчик выбирается из списка: Т.ВЗД. – температура воздуха, В.ВЗД. SENS_1 по SENS_4 . ПОРОГовое значение задаётся с 0 до 1023 с шагом 1 до значения 50 и с шагом 10 начиная от 50 (датчики влажности почвы имеют диапазон значений 0-1023). Например, выбран датчик температуры воздуха, период опроса 1 час и пороговое значение 25. Каждый час система проверяет температуру, при превышении 25 градусов будет выполнено соответствующее каналу действие (включить реле, открыть окно). Через час будет снова произведена проверка.
    • Применение: открытие/закрытие створок по температуре/влажности (привод), полив по влажности почвы, управление вентилятором/увлажнителем (реле) или заслонками (серво) по температуре/влажности.
  1. PID (для каналов 3, 4 и серво) – пропорционально-интегрально-дифференциальный регулятор, позволяет с высокой точностью поддерживать управляемую величину (нагреватель-температура, заслонка-температура, вентилятор-температура, вентилятор-влажность, и так далее). Режим доступен для каналов 3 и 4 (отмечены звёздочкой), а также обоих каналов серво в режиме серво. Имеет настройки коэффициентов P , I , D (D вам скорее всего не пригодится в реальной работе, но он там всё равно есть). Выбираем Sens – источник входного сигнала – один из сенсоров, как в режиме Sensor (Air t. – температура воздуха, Air h. – влажность воздуха и 4 аналоговых датчика (влажности почвы) с SENS_1 по SENS_4 ). Настройка Set указывает, к какому значению показания с выбранного датчика регулятор будет стараться приводить систему. Настройка
    T задаёт период итерации расчёта, для медленных процессов есть смысл поставить побольше (читайте в отдельной главе «Настройка ПИД регулятора»). Настройки min и max отвечают за минимальный и максимальный управляющий сигнал с данного канала, для каналов 3 и 4 это ШИМ сигнал, рабочий диапазон 0-255. Для каналов серво это угол, 0-180 градусов.
    Применение : поддержание заданной величины (температура, влажность) не релейным способом, т.е. плавно и без резких включений. ШИМ сигнал может управлять транзистором, который отвечает за нагреватель. Серво может поворачивать заслонки (проветривание) или крутилки диммеров для управления сетевыми нагревателями, вентиляторами и прочим оборудованием.
  1. Рассвет (для каналов 3, 4 и серво) – режим «рассвета» для контроля освещения с плавным рассветом и закатом. Режим доступен для каналов 3 и 4 (отмечены звёздочкой), а также обоих каналов серво в режиме серво. Плавно включается в час Start на протяжении Dur минут, затем выключается в час Stop в течение Dur минут. Включается до максимального значения, указанного в max , и выключается до min . На каналах 3 и 4 эта величина задаёт скважность ШИМ сигнала, рабочий диапазон 0 – 255. Управлять можно полевым транзистором, например, светодиодной лентой. На каналах серво рабочий диапазон 0 – 180, градусов поворота вала серво. Может управлять крутилкой сетевого диммера, для ламп накаливания или диммируемых светодиодных.
    Применение : организация условий освещённости, приближенных к реальным, для аквариумов, террариумов, курятников и проч.

Настройки каналов реле

  1. Направление – как ведёт себя реле при активации по таймеру/датчику. ВКЛ-ВЫКЛ или ВЫКЛ-ВКЛ
  2. ТИП – логика работы реле
    • Реле – канал реле ведёт себя как обычное реле, может использоваться для управления любой нагрузкой постоянного или переменного тока (управлять сетевыми устройствами): полив индивидуальными помпами, полив индивидуальными клапанами от источника воды под давлением, управления увлажнителями, обогревателями, вентиляторами, приборами освещения и всем другим подобным. Не зависит от других каналов.
    • Клапан – тип канала реле для системы, где есть общая помпа/клапан от источника воды и несколько индивидуальных клапанов на полив разных участков. Канал реле, настроенный как клапан, одновременно со своей активацией (по таймеру/датчику) активирует другой канал/каналы, настроенный как общий .
    • Общий – тип канала реле для системы, где есть общая помпа/клапан от источника воды и несколько индивидуальных клапанов на полив разных участков. Канал реле, настроенный как общий, не имеет настроек режима. Вместо этого он активируется сам одновременно с любым другим каналом, настроенным как клапан . Автоматически сам деактивируется при отсутствии неактивных каналов клапанов.

Настройки каналов серво

  1. Направление – как ведёт себя серво при активации по таймеру/датчику. Поворот в направлении МИН-МАКС угол или наоборот, МАКС-МИН угол
  2. Пределы – углы поворота серво от 0 до 180 градусов с шагом 10
  3. Дополнительно: в скетче в секции настроек есть настройка максимальной скорости движения сервоприводов (SERVO1_SPEED и SERVO2_SPEED) и их ускорение на разгон и торможение (SERVO1_ACC и SERVO2_ACC). Я не стал вносить их в настройки сервисного меню и каналов, т.к. они не так часто нужны.

Настройки канала привода

  1. Направление – как ведёт себя привод при активации по таймеру/датчику, ОТКРЫТЬ-ЗАКРЫТЬ или ЗАКРЫТЬ-ОТКРЫТЬ
  2. Таймаут – время, которое будет подаваться сигнал на движение привода. Концевик (если он есть) прервёт движение привода

Публикации по теме