• 26.10.19 Версия 1.4.4: куча добавлений и исправлений, читайте доку версии 1.4
• 05.03.20 Версия платы 1.2: перемычки добавлены на верхний слой, при заказе плат v1.2 перемычки можно не запаивать! Добавлены шины i2c и 5V для удобства, также разведён WiFi модуль ESP-01. Его поддержки пока что нет.
• 10.05.20 Версия 1.6: куча всего нового. Обязательно переустановите библиотеки из архива (они обновились) и настройте конфигурацию системы (нужные датчики и режимы) под себя. При переходе все сохранённые настройки будут сброшены! Документация также обновилась.
- Версия 1.1 – начальная версия
- Версия 1.2
- Оптимизация Flash памяти для дальнейших доработок
- 5% за счёт упрощения логики работы EEPROM
- 1% за счёт оптимизации вывода на дисплей
- 7% за счёт избавления от класса String
- В этот же момент настройки автоматически сохраняются
- В настройках режима «Sensor» вместо настройки Threshold (как в версии 1.1) теперь две настройки – minV и maxV. Обе настройки отвечают за пороговое значение с гистерезисом. Логика такая: если величина с датчика больше maxV – канал включается, если меньше minV – выключается.
- SETT_TIMEOUT – таймаут неактивности (секунд), после которого автоматически откроется окно DEBUG и сохранятся настройки. Работает при всех активных окнах кроме DEBUG, SERVICE и окон графиков.
- CONTROL_TYPE – тип управления энкодером
- 0 – удерживание и поворот для изменения значения
- 1 – клик для входа в изменение, повторный клик для выхода (стрелочка меняется на галочку)
- Добавлены настройки SERVO1_RELAY и SERVO2_RELAY, позволяющие использовать каналы серво как реле
- Исправлен баг в управлении CONTROL_TYPE 1
- Добавлена поддержка датчика температуры ds18b20 на порту сенсора 1 (SENS1)
- Добавлена поддержка термисторов на всех портах сенсоров (SENS1-SENS4)
- Рассчитано на 10 кОм-ные NTC термисторы. Коэффициент b можно настроить
- Поправлено несколько багов с приводом
- Энкодер теперь работает на МЕГЕ
- Исправлена критическая ошибка в режиме Timer RTC
- Версия 1.4.3
- Добавлена вкладка custom, на которой можно самому программировать каналы
- Сильнее разбил код на вкладки
- Режим рассвет теперь работает более плавно
- ДЕНЬ НЕДЕЛИ ВСЁ ЕЩЁ НЕЛЬЗЯ НАСТРОИТЬ
- Баги:
- Убран лишний тип реле
- Убрано отображение типа реле для ПИД и РАССВЕТ
- Исправлено изменение Т в PID
- Можно менять минуты в SERVICE и BKL TOUT
- Исправлена “связь” между Timer и Week
- Версия 1.5 (предварительная)
- Версия 1.6 (предварительная)
- Облегчённые библиотеки:
- Для часов используется библиотека microDS3231
- Для дисплея используется библиотека microLiquidCrystal_I2C
- Для ds18b20 используется библиотека microDS18B20
- Для BME280 используется библиотека GyverBME280
ОПИСАНИЕ
GyverControl – универсальный контроллер на Arduino для теплицы и других мест, где нужна автоматизация по таймеру или показателям микроклимата/другим датчикам, имеет 10 отдельно настраиваемых каналов управления, собран из недорогих китайских компонентов и заменяет несколько “магазинных” контроллеров разного назначения: управление поливом, освещением, открытием дверей, поддержанием температуры по расписанию и многого другого. Может использоваться как для теплиц/грядок, так и для аквариумов, террариумов, инкубаторов и прочих автоматических систем. Обязательно читайте документацию на контроллер (ссылки выше), там подробно рассказано обо всех возможностях. Здесь лишь краткий перечень!
Данный проект полностью открытый, то есть любой из вас может сделать себе контроллер для теплицы своими руками, GyverControl сочетает в себе контроллер полива, освещения, проветривания и многого многого другого. Самое главное, что сделать себе такой контроллер умной теплицы можно по себестоимости, т.е. по розничной стоимости китайских компонентов. А это очень дёшево.
Железо:
- ArduinoNano (ATmega 328p) как главный контроллер системы
- 10 каналов управления. Из них (в разных комбинациях):
- 9 каналов с логическим выходом 5V, к которым можно подключать обычное реле, твердотельное реле, силовые ключи (транзисторы, модули на основе транзисторов)
- 2 канала сервоприводов, подключаются обычные модельные серво больших и маленьких размеров
- 2 канала ШИМ с высокой частотой (1 кГц) для управления скоростью моторов, яркостью светодиодных лент, мощностью обогревателей
- 2 канала ШИМ с низкой частотой (1 Гц) для управления мощностью обогревателей
- 1 канал управления линейным электроприводом с концевиками ограничения движения и работой по тайм-ауту
Режимы:
- Таймер – простой периодический таймер
- Таймер RTC – периодический таймер с привязкой к реальному времени
- Неделька – работа в выбранный промежуток времени в выбранные дни недели
- Сенсор – релейная работа по выбранному датчику с настройкой периода опроса и гистерезисом
- ПИД – регулятор для высокоточного поддержания заданного значения с датчика
- Рассвет – плавное включение и выключение (закат) источника освещения в выбранное время
Программные фишки:
- Хранение всех настроек в энергонезависимой памяти (не сбрасываются при перезагрузке)
- Датчики влажности почвы (все аналоговые датчики) не находятся под постоянным напряжением, оно подаётся только на момент опроса, что позволяет продлить жизнь даже самым дешёвым датчикам влажности почвы (напряжение подаётся за 50 мс до опроса и выключается через 50 мс после).
- Оптимизированный вывод данных на дисплей
- Каждый из 10 каналов (7 реле, 2 серво и 1 привод) имеет индивидуальные настройки и может работать по таймеру или по датчикам
- 4-6 режимов работы каждого канала: три разных таймера и работа по условию с датчиков, режимы ПИД и рассвет
- Серво работает с моей библиотекой ServoSmooth, это обеспечивает плавное их движение: плавный разгон и торможение с ограничением максимальной скорости, а также отсутствие рывков и незапланированных движений при старте системы
- Линейный привод имеет концевики, внешние кнопки для управления и настройку скорости движения. Частота ШИМ драйвера – 31 кГц, т.е. не пищит
- Экран отладки, где отображается вся текущая информация о состоянии железа и датчиков
- Графики температуры и влажности воздуха и показаний с аналоговых датчиков за последние сутки. Сохранение графиков за последние 15 минут, последние 15 часов и 15 суток. Сохраняются одновременно все периоды, можно менять какой отображается
- Сервисное меню, позволяющее вручную управлять каждой железкой
- Для ПИД регулятора есть также
- Вывод графиков на компьютер для облегчения настройки коэффициентов (с версии 1.6)
- Режим автоматической калибровки коэффициентов (с версии 1.6)
Применение как контроллер теплицы/бокса:
- Периодичный полив (реле)
- Схема с индивидуальными помпами/клапанами
- Схема с одной помпой и несколькими клапанами
Применение как контроллер аквариума:
- Режим рассвет для светодиодных лент (через МОСФЕТ) и ламп накаливания (сервопривод)
- ПИД регулятор для поддержания температуры воды
- Сервоприводы (2 шт) для сброса еды
- Остальные каналы можно использовать по таймерам для запуска фильтров/аэраторов/подсветки
Применение как контроллер инкубатора:
- ПИД регулятор для поддержания температуры и влажности
- Режим расписания ПИД, в котором можно настроить автоматическое изменение температуры на выбранный период. Гайд по настройке пока что находится в группе ВК
Применение как контроллер террариума:
- Режим рассвет для светодиодных лент (через МОСФЕТ) и ламп накаливания (сервопривод). Позволяет настроить время, яркость и продолжительность рассвета и заката. Можно подключить две ленты разной теплоты и сделать тёплое освещение днём и холодное ночью.
- ПИД регулятор для поддержания температуры
- Режим расписания ПИД позволяет настроить удержание разной температуры в течение суток. Гайд по настройке пока что находится в группе ВК
Другие применения:
- Система поддерживает 4 аналоговых датчика, это не обязательно должны быть датчики влажности почвы, у китайцев полно других «датчиков-модулей», которые точно так же подключаются к схеме:
- Датчик света: «умная» система освещения, резервное освещение
- Термистор (до 80 градусов): контроль нагрева объекта
- Датчик звука: закрывание окна при сильном шуме снаружи (почему нет? =) )
- Датчик ИК излучения (датчик пожара) – разные варианты сигнализации, или даже тушения (включаем помпу с водой, открываем кран сервой)
- Датчик дождя: закрытие окон, сигнализирование, включение помп на откачку
- Датчик уровня воды/датчик наличия воды: автоматическое наполнение резервуара, автоматическая откачка воды помпой из ёмкости/подвала, перекрытие водяных магистралей при протечке, сигнализация о протечке
- Газоанализаторы в ассортименте: сигнализатор или даже проветривание (открываем окно) по уровню угарного газа и других промышленных газов
- Оптический датчик препятствия: тут нужна фантазия
- Потенциометр: как дополнительный орган контроля системы
- Основным органом управления является энкодер, рукоятку которого может вращать и нажимать (она является кнопкой). При запуске системы мы попадаем на настройку канала 0. Вращая рукоятку энкодера можно перемещать курсор выбора (стрелочка) по пунктам меню. Чтобы изменить значение выбранного пункта, нужно нажать рукоятку энкодера и повернуть её, удерживая нажатой. Также можно кликнуть по кнопке, курсор изменится со стрелки на галочку >, и вращением можно изменить выбранную величину. Повторный клик вернёт стрелку, при помощи которой можно выбрать другой пункт меню. Удержанный поворот при выбранном имени канала – смена канала для настройки. Листаем направо и у нас будет по порядку 7 каналов реле, два серво и линейный привод.
- Чтобы перейти к настройке режима, нужно навести на него курсор и кликнуть кнопкой, не поворачивая. Откроется окно настройки режима, выйти из которого можно кликнув по надписи BACK (назад). Удерживая и вращая рукоятку на выбранном названии режима можно сменить режим, всего их 4.
- В корне меню (выбор каналов) листая налево от канала 0 будет экран отладки (DEBUG) и сервисный режим (SERVICE). На экране отладки показаны все текущие положения реле, приводов и показания с датчиков. Вращая рукоятку на экране отладки последовательно листаются суточные графики показаний с датчиков: температура воздуха, влажность и показания с аналоговых датчиков. Деления на графике имеют шаг 1.6 часа. На экране сервиса можно управлять любым каналом в ручном режиме, при активном экране сервиса автоматика не работает, система находится полностью в ручном режиме. Поворотом рукоятки можно выбрать нужный канал, положение серво или настройку текущего времени, и удержанным поворотом её изменить.
- Если включить систему с зажатой рукояткой энкодера, произойдёт полный сброс настроек каналов и режимов.
- В версии 1.5 и выше предусмотрен “быстрый поворот” энкодера: при быстром вращении настраиваемое значение меняетс яс бОльшим шагом.
Режимы работы каналов
- Таймер – простой периодичный таймер: задаются периоды ПАУЗЫ и время РАБОТЫ в формате ЧЧ:ММ:СС. С периодом ПАУЗЫ совершается выбранное действие и выполняется в течение периода РАБОТЫ. Например, ПАУЗА стоит 1 час, РАБОТА – 10 секунд. Каждый час будет совершаться действие в течение 10 секунд, то есть если выбран канал реле, то реле включится и выключится через 10 секунд, затем снова включится через час и выключится через 10 секунд и так далее. Как канал ведёт себя на участке РАБОТЫ задаётся в параметре НАПРАВЛЕНИЕ, то есть это может быть вкл/выкл и выкл/вкл (реле), направо/налево и налево/направо (серво) и открыть/закрыть и закрыть/открыть (линейный привод). Данный режим не имеет привязки к реальному времени, перезагрузка системы сбрасывает текущий таймер. Внимание! РАБОТА не должна быть дольше ПАУЗЫ!
- Мин. значение: 1 секунда
- Макс. значение: 999 часов
- Привязка к реальному времени: нет
- Применение: полив в гидропонных системах, проветривание без датчика
- Таймер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 часа
- Привязка к реальному времени: да
- Применение: полив в гидропонных системах, проветривание без датчика
- Выбор дня недели
- Выбор времени: 0-23 часа, кратно 1 часу
- Привязка к реальному времени: да
- Применение: идеальный режим для освещения и редкого полива
- Датчик – действие на основе датчика. С периодом опроса ПЕРИОД опрашивается выбранный датчик под названием ДАТЧИК и при превышении порогового значения ПОРОГ выполняется действие согласно выбранному каналу (реле/серво/привод). ПЕРИОД опроса опроса задаётся в секундах или минутах (по мере увеличения). Датчик выбирается из списка: Т.ВЗД. – температура воздуха, В.ВЗД. – влажность воздуха и 4 аналоговых датчика (влажности почвы) с SENS_1 по SENS_4. ПОРОГовое значение задаётся с 0 до 1023 с шагом 1 до значения 50 и с шагом 10 начиная от 50 (датчики влажности почвы имеют диапазон значений 0-1023). Например, выбран датчик температуры воздуха, период опроса 1 час и пороговое значение 25. Каждый час система проверяет температуру, при превышении 25 градусов будет выполнено соответствующее каналу действие (включить реле, открыть окно). Через час будет снова произведена проверка.
- Применение: открытие/закрытие створок по температуре/влажности (привод), полив по влажности почвы, управление вентилятором/увлажнителем (реле) или заслонками (серво) по температуре/влажности.
- 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 градусов.
• Применение: поддержание заданной величины (температура, влажность) не релейным способом, т.е. плавно и без резких включений. ШИМ сигнал может управлять транзистором, который отвечает за нагреватель. Серво может поворачивать заслонки (проветривание) или крутилки диммеров для управления сетевыми нагревателями, вентиляторами и прочим оборудованием.
- Рассвет (для каналов 3, 4 и серво) – режим «рассвета» для контроля освещения с плавным рассветом и закатом. Режим доступен для каналов 3 и 4 (отмечены звёздочкой), а также обоих каналов серво в режиме серво. Плавно включается в час Start на протяжении Dur минут, затем выключается в час Stop в течение Dur минут. Включается до максимального значения, указанного в max, и выключается до min. На каналах 3 и 4 эта величина задаёт скважность ШИМ сигнала, рабочий диапазон 0 – 255. Управлять можно полевым транзистором, например, светодиодной лентой. На каналах серво рабочий диапазон 0 – 180, градусов поворота вала серво. Может управлять крутилкой сетевого диммера, для ламп накаливания или диммируемых светодиодных.
• Применение: организация условий освещённости, приближенных к реальным, для аквариумов, террариумов, курятников и проч.
Настройки каналов реле
- Направление – как ведёт себя реле при активации по таймеру/датчику. ВКЛ-ВЫКЛ или ВЫКЛ-ВКЛ
- ТИП – логика работы реле
- Реле – канал реле ведёт себя как обычное реле, может использоваться для управления любой нагрузкой постоянного или переменного тока (управлять сетевыми устройствами): полив индивидуальными помпами, полив индивидуальными клапанами от источника воды под давлением, управления увлажнителями, обогревателями, вентиляторами, приборами освещения и всем другим подобным. Не зависит от других каналов.
- Клапан – тип канала реле для системы, где есть общая помпа/клапан от источника воды и несколько индивидуальных клапанов на полив разных участков. Канал реле, настроенный как клапан, одновременно со своей активацией (по таймеру/датчику) активирует другой канал/каналы, настроенный как общий.
- Общий – тип канала реле для системы, где есть общая помпа/клапан от источника воды и несколько индивидуальных клапанов на полив разных участков. Канал реле, настроенный как общий, не имеет настроек режима. Вместо этого он активируется сам одновременно с любым другим каналом, настроенным как клапан. Автоматически сам деактивируется при отсутствии неактивных каналов клапанов.
Настройки каналов серво
- Направление – как ведёт себя серво при активации по таймеру/датчику. Поворот в направлении МИН-МАКС угол или наоборот, МАКС-МИН угол
- Пределы – углы поворота серво от 0 до 180 градусов с шагом 10
- Дополнительно: в скетче в секции настроек есть настройка максимальной скорости движения сервоприводов (SERVO1_SPEED и SERVO2_SPEED) и их ускорение на разгон и торможение (SERVO1_ACC и SERVO2_ACC). Я не стал вносить их в настройки сервисного меню и каналов, т.к. они не так часто нужны.
Настройки канала привода
- Направление – как ведёт себя привод при активации по таймеру/датчику, ОТКРЫТЬ-ЗАКРЫТЬ или ЗАКРЫТЬ-ОТКРЫТЬ
- Таймаут – время, которое будет подаваться сигнал на движение привода. Концевик (если он есть) прервёт движение привода
Главное меню, уровень вложенности 0
Настройка режима, уровень вложенности 1
- Timer (Простой периодичный таймер)
- Period (Время паузы, оно же период работы)
- Work (Время работы)
- Left (Осталось до следующего включения)
- TimerRTC (Периодичный таймер с привязкой ко времени)
- Period (Период работы)
- Work (Время работы)
- Startfrom (Час, начиная с которого считается период)
- Day (Суточный таймер)
- Start (Час начала работы)
- Stop (Час окончания работы)
- Sensor (Датчик)
- Period (Период опроса)
- Sensor (Выбор датчика)
- Threshold (Пороговое значение)
ВИДЕО
КОМПОНЕНТЫ
Каталоги ссылок на Алиэкспресс на этом сайте:
Стараюсь оставлять ссылки только на проверенные крупные магазины, из которых заказываю сам. Также по первые ссылки ведут по возможности на минимальное количество магазинов, чтобы минимально платить за доставку. Если какие-то ссылки не работают, можно поискать аналогичную железку в каталоге Ардуино модулей . Также проект можно попробовать собрать из компонентов моего набора GyverKIT .
- Обычные aliexpress, aliexpress, искать
- Мини aliexpress, aliexpress, искать
Датчики вл. почвы
- Обычный https://ali.ski/DKQVs
- Ёмкостный https://ali.ski/0z8HbE
- Освещённости https://ali.ski/0BNANn
- Термистор https://ali.ski/rpNEOt
- Звука https://ali.ski/sVgL7
- ИК излучения https://ali.ski/KAYLWN
- Дождя https://ali.ski/K_K1B
- Уровня воды https://ali.ski/ANTQ2E
- Газоанализатор https://ali.ski/-WRxX
- ds18b20 (темп.) https://ali.ski/DMB_7H
- DHT11 (темп. и влажн.) https://ali.ski/iWf2oB
- DHT22 (темп. и влажн.) https://ali.ski/w34f88
- MH-Z19b (угл. газ) https://ali.ski/khx4c
- Обычные https://ali.ski/9Hwdh
- Твердотельные https://ali.ski/urVVT5
- Одноканальное мощное SSR https://ali.ski/rNZnv
- Привод 100мм 12V (скорость я брал 45mm/s) https://ali.ski/ukfSVf
Железки для теплицы
- Средняя помпа
- БП 5V 2A питание схемы https://ali.ski/y7I4wc
- БП 12V 3A питание привода
В наших магазинах
- Рейка контактная https://www.chipdip.ru/product/pls-40
- Рейка угловая тройная PLT-120R https://www.chipdip.ru/product/plt-120r-pitch-2-54-mm
СХЕМЫ
Синие модули реле подкупают своей ценой, но нужно понимать, что серьёзную нагрузку (>2кВт) они не потянут. Можно при помощи этих реле управлять другими, более мощными контакторами. Для управления сетевым оборудованием рекомендуется использовать твердотельные реле. “Синие” реле также очень сильно искрят и спокойно станут причиной зависаний контроллера! Обязательно почитайте про искрогасящие цепи ниже!
Твердотельные реле хороши, но греются. Для коммутации мощностей выше 600-1000 Ватт даже большой твердотелке придётся поставить радиатор, для этого нижняя её часть представляет собой металлическую пластину.
Несмотря на простоту и очевидность подключения нагрузки через реле, можно столкнуться с практически «магическими» проблемами, проявляющимися как глюки в системе контроллера, вплоть до зависания и перезагрузки, и неадекватное поведение дисплея.
Таким образом реле может управлять практически чем угодно, но проблемы возникают именно с индуктивной нагрузкой, причём как постоянного, так и переменного тока. При резком включении и отключении индуктивной нагрузки создаётся выброс, напряжение которого может в несколько раз превышать напряжение питания цепи, этот выброс провоцирует электромагнитные наводки в электрических цепях, которые приводят к сбоям в работе микроконтроллера и других компонентов. Индуктивной нагрузкой являются моторы (приводы, помпы) и соленоиды (электромагниты, соленоидные клапаны и проч.). Коммутация такой нагрузки без защиты от выбросов будет приводить к сбоям в работе контроллера, поэтому давайте рассмотрим несколько способов более-менее защиты от таких проблем.
Что почитать по теме:
Постоянный ток
Самые жизненные примеры – помпа и клапан на 12V, которые управляются от блока питания. Самый первый и обязательный шаг к защите от индуктивных выбросов – диод, установленный встречно-параллельно индуктивной нагрузке. Диод рекомендуется припаивать как можно ближе к нагрузке, а не к реле, чтобы между нагрузкой и диодом было как можно меньше проводов. Это рекомендация, совсем необязательно резать провод у помпы под корень и ставить туда диод – можно разместить диод непосредственно у выводов реле, такой вариант тоже будет работать, но хуже. Смотрите схему выше.
Постоянный и переменный ток
Очень распространённым способом защиты цепи является RC цепь (она же искрогасящая цепь, снаббер), представляющая собой резистор и конденсатор. RC цепь можно поставить параллельно выводам реле (т.е. последовательно с нагрузкой), что очень удобно. Смотрите схему и выбор номиналов выше.
Переменный ток
Для цепей переменного тока есть ещё один совет: используйте твердотельные реле с детектором перехода через ноль (zero detection, zero-cross), они также называются «бесшумные» реле, т.к. в них коммутация происходит в момент перехода напряжения через ноль, и выброс практически равен нулю.
- Облегчённые библиотеки:
- Оптимизация Flash памяти для дальнейших доработок