ОБНОВЛЕНИЯ
• 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
- Добавлен автоматический переход в окно DEBUG по таймеру неактивности
- В этот же момент настройки автоматически сохраняются
- Исправлена критическая ошибка в построении графиков
- Добавлена настройка периода графика (сутки, час, минута)
- График меняется в реальном времени
- К режиму “по сенсору” добавлен гистерезис
- В настройках режима «Sensor» вместо настройки Threshold (как в версии 1.1) теперь две настройки – minV и maxV. Обе настройки отвечают за пороговое значение с гистерезисом. Логика такая: если величина с датчика больше maxV – канал включается, если меньше minV – выключается.
- Добавлен режим навигации “кликнул-изменил-кликнул”
- Настройки в начале скетча:
- SETT_TIMEOUT – таймаут неактивности (секунд), после которого автоматически откроется окно DEBUG и сохранятся настройки. Работает при всех активных окнах кроме DEBUG, SERVICE и окон графиков.
- CONTROL_TYPE – тип управления энкодером
- 0 – удерживание и поворот для изменения значения
- 1 – клик для входа в изменение, повторный клик для выхода (стрелочка меняется на галочку)
- Оптимизация Flash памяти для дальнейших доработок
- Версия 1.3
- Добавлены настройки SERVO1_RELAY и SERVO2_RELAY, позволяющие использовать каналы серво как реле
- Исправлен баг в управлении CONTROL_TYPE 1
- Добавлена поддержка датчика температуры ds18b20 на порту сенсора 1 (SENS1)
- Добавлена поддержка термисторов на всех портах сенсоров (SENS1-SENS4)
- Рассчитано на 10 кОм-ные NTC термисторы. Коэффициент b можно настроить
- Версия 1.3.1
- Поправлено несколько багов с приводом
- Версия 1.3.2
- Энкодер теперь работает на МЕГЕ
- Версия 1.3.3
- Исправлена критическая ошибка в режиме Timer RTC
…………………………………..
- Версия 1.4.3
- Добавлена вкладка custom, на которой можно самому программировать каналы
- Сильнее разбил код на вкладки
- Режим рассвет теперь работает более плавно
- ДЕНЬ НЕДЕЛИ ВСЁ ЕЩЁ НЕЛЬЗЯ НАСТРОИТЬ
- Баги:
- Убран лишний тип реле
- Убрано отображение типа реле для ПИД и РАССВЕТ
- Исправлено изменение Т в PID
- Можно менять минуты в SERVICE и BKL TOUT
- Исправлена “связь” между Timer и Week
…………………………………..
Версия 1.5 (предварительная)- Версия 1.6 (предварительная)
- Облегчённые библиотеки:
- Для часов используется библиотека microDS3231
- Для дисплея используется библиотека microLiquidCrystal_I2C
- Для ds18b20 используется библиотека microDS18B20
- Для BME280 используется библиотека GyverBME280
- Чуть оптимизации кода
- Исправлен баг с выводом инверсных состояний реле в окне DEBUG
- Добавлена возможность работы с отрицательными температурами в режиме Sensor
- Исправлено незапоминание настроек SP и PP в Service
- ServoSmooth обновлена, работа серво улучшена
- Исправлен баг с сохранением настроек
- Ваши настройки при переходе на 1.5 будут сброшены!
- В ПИД установка переделана на десятичные дроби
- BME и Dallas выводят температуру в десятичных дробях
- Шаги настроек изменены на более мелкие
- Исправлена настройка времени в сервисе
- Добавлен режим ПИД для каналов 1 и 2 (низкочастотный ШИМ). Каналы помечены *
- Для “обратного” режима ПИД нужно ставить отрицательные коэффициенты!
- В недельке можно выбрать время включения меньше времени выключения
- Ещё оптимизация памяти
- Добавлен “быстрый поворот” энкодера: шаг изменения значения увеличивается при быстром вращении
- Чуть оптимизирован ПИД
- Значения с точкой в графиках
- Автоматический масштаб графика
- Переделана структура меню настроек
- Добавлена настройка даты в меню настроек
- Воскресенье теперь цифра 7 (было 0)
- Исправлена настройка времени в Timer RTC
- Корректное отображение и работа каналов Servo, работающих как реле
- Улучшена работа ПИД
- Добавлены названия для доп. датчиков, улучшено оформление
- Период опроса и период графиков перенесены в настройки
- ЕЩЁ БОЛЬШЕ ОПТИМИЗАЦИИ
- Добавлена поддержка датчика угл. газа MH-Z19. Есть возможность отключить автокалибровку.
- Исправлена ошибка в графиках
- ПИД и РАССВЕТ переделаны в линейное меню
- Оптимизированы графики
- Добавлена возможность отключить плавность серво для облегчения памяти
- Оптимизация памяти и вывода на дисплей
- Исправлен косяк с приводом при выходе из сервиса
- Небольшие изменения в окне сервиса
- Добавлено стартовое меню с сервисом и сбросом (включается по желанию)
- Небольшая оптимизация памяти
- Исправлено отображение реле с низким уровнем в сервисе
- Добавлено расписание для ПИД. Ежедневное и на период в днях
- Исправлен косяк с подсветкой
- Исправлены критические ошибки с серво (пид и рассвет)
- ИСПРАВЛЕНЫ ОШИБКИ С СОХРАНЕНИЕМ НАСТРОЕК
- Сильная оптимизация оперативной памяти
- Графики теперь сохраняются за все периоды (15 дней, 15 часов, 15 минут)
- При выборе датчика значения сразу приравниваются к его показанию (pid, sensor)
- Добавлен режим отладки ПИД (вывод графиков на ПК)
- Небольшая оптимизация рассвета
- Исправлен BME280 для отрицательных температур (обнови библиотеку)
- Добавлена настройка направления серво для ПИД (на главной вкладке серво, Direction)
- Система теперь знает, что дверь была открыта в ручном режиме и работает корректно
- Добавлено ограничение интегральной составляющей в ПИД
- Редизайн списка настроек
- Добавлен автотюнер ПИД
- Добавлена поддержка нескольких ds18b20 с разными режимами работы
- Улучшена стабильность ds18b20 (библиотека обновилась)
- В режиме Sensor система работает при выставлении одинаковых значений порога
- Исправлена ошибка, связывающая каналы серво и реле
- В ПИД регуляторе для инертных систем есть смысл поднять T, логика работы чуть изменилась
- Установка таймаута привода в десятых секунды
- Улучшена отзывчивость и точность энкодера
- Облегчённые библиотеки:
ОПИСАНИЕ
GyverControl – универсальный контроллер на Arduino для теплицы и других мест, где нужна автоматизация по таймеру или показателям микроклимата/другим датчикам, имеет 10 отдельно настраиваемых каналов управления, собран из недорогих китайских компонентов и заменяет несколько “магазинных” контроллеров разного назначения: управление поливом, освещением, открытием дверей, поддержанием температуры по расписанию и многого другого. Может использоваться как для теплиц/грядок, так и для аквариумов, террариумов, инкубаторов и прочих автоматических систем. Обязательно читайте документацию на контроллер (ссылки выше), там подробно рассказано обо всех возможностях. Здесь лишь краткий перечень!
Данный проект полностью открытый, то есть любой из вас может сделать себе контроллер для теплицы своими руками, GyverControl сочетает в себе контроллер полива, освещения, проветривания и многого многого другого. Самое главное, что сделать себе такой контроллер умной теплицы можно по себестоимости, т.е. по розничной стоимости китайских компонентов. А это очень дёшево.
Железо:
- Arduino Nano (ATmega 328p) как главный контроллер системы
- 10 каналов управления. Из них (в разных комбинациях):
- 9 каналов с логическим выходом 5V, к которым можно подключать обычное реле, твердотельное реле, силовые ключи (транзисторы, модули на основе транзисторов)
- 2 канала сервоприводов, подключаются обычные модельные серво больших и маленьких размеров
- 2 канала ШИМ с высокой частотой (1 кГц) для управления скоростью моторов, яркостью светодиодных лент, мощностью обогревателей
- 2 канала ШИМ с низкой частотой (1 Гц) для управления мощностью обогревателей
- 1 канал управления линейным электроприводом с концевиками ограничения движения и работой по тайм-ауту
- Датчик температуры воздуха (BME280)
- Датчик влажности воздуха (BME280)
- 4 аналоговых датчика (влажности почвы или других)
- Модуль опорного (реального) времени RTC DS3231 с автономным питанием
- Большой LCD дисплей (LCD 2004, 20 столбцов, 4 строки)
- Орган управления – энкодер
- Поддержка датчиков влажности DHT11/DHT22, температуры DS18b20, термисторов и датчика углекислого газа MH-Z19
Режимы:
- Таймер – простой периодический таймер
- Таймер RTC – периодический таймер с привязкой к реальному времени
- Неделька – работа в выбранный промежуток времени в выбранные дни недели
- Сенсор – релейная работа по выбранному датчику с настройкой периода опроса и гистерезисом
- ПИД – регулятор для высокоточного поддержания заданного значения с датчика
- Рассвет – плавное включение и выключение (закат) источника освещения в выбранное время
Программные фишки:
- Хранение всех настроек в энергонезависимой памяти (не сбрасываются при перезагрузке)
- Датчики влажности почвы (все аналоговые датчики) не находятся под постоянным напряжением, оно подаётся только на момент опроса, что позволяет продлить жизнь даже самым дешёвым датчикам влажности почвы (напряжение подаётся за 50 мс до опроса и выключается через 50 мс после).
- Оптимизированный вывод данных на дисплей
- Каждый из 10 каналов (7 реле, 2 серво и 1 привод) имеет индивидуальные настройки и может работать по таймеру или по датчикам
- 4-6 режимов работы каждого канала: три разных таймера и работа по условию с датчиков, режимы ПИД и рассвет
- Серво работает с моей библиотекой ServoSmooth, это обеспечивает плавное их движение: плавный разгон и торможение с ограничением максимальной скорости, а также отсутствие рывков и незапланированных движений при старте системы
- Линейный привод имеет концевики, внешние кнопки для управления и настройку скорости движения. Частота ШИМ драйвера – 31 кГц, т.е. не пищит
- Экран отладки, где отображается вся текущая информация о состоянии железа и датчиков
- Графики температуры и влажности воздуха и показаний с аналоговых датчиков за последние сутки. Сохранение графиков за последние 15 минут, последние 15 часов и 15 суток. Сохраняются одновременно все периоды, можно менять какой отображается
- Сервисное меню, позволяющее вручную управлять каждой железкой
- Для ПИД регулятора есть также
- Вывод графиков на компьютер для облегчения настройки коэффициентов (с версии 1.6)
- Режим автоматической калибровки коэффициентов (с версии 1.6)
Применение как контроллер теплицы/бокса:
- Периодичный полив (реле)
- Схема с индивидуальными помпами/клапанами
- Схема с одной помпой и несколькими клапанами
- Полив на основе показаний датчиков влажности почвы
- Управление освещением (реле) с привязкой ко времени суток
- Проветривание (привод открывает окно/серво открывает заслонку) по датчику температуры или влажности воздуха
- Увлажнение (включение увлажнителя) по датчику влажности воздуха
- Обогрев (включение обогревателя) по датчику температуры
- Выполнение действий сервоприводом (нажатие кнопок на устройствах, поворот рукояток, поворот заслонок, перемещение предметов) по датчику или таймеру
Применение как контроллер аквариума:
- Режим рассвет для светодиодных лент (через МОСФЕТ) и ламп накаливания (сервопривод)
- ПИД регулятор для поддержания температуры воды
- Сервоприводы (2 шт) для сброса еды
- Остальные каналы можно использовать по таймерам для запуска фильтров/аэраторов/подсветки
Применение как контроллер инкубатора:
- ПИД регулятор для поддержания температуры и влажности
- Режим расписания ПИД, в котором можно настроить автоматическое изменение температуры на выбранный период. Гайд по настройке пока что находится в группе ВК
- Электропривод или серво по расписанию может наклонять лотки с яйцами
Применение как контроллер террариума:
- Режим рассвет для светодиодных лент (через МОСФЕТ) и ламп накаливания (сервопривод). Позволяет настроить время, яркость и продолжительность рассвета и заката. Можно подключить две ленты разной теплоты и сделать тёплое освещение днём и холодное ночью.
- ПИД регулятор для поддержания температуры
- Режим расписания ПИД позволяет настроить удержание разной температуры в течение суток. Гайд по настройке пока что находится в группе ВК
- Сервоприводы (2 шт) для кормёжки по таймеру
- Остальные каналы можно использовать по таймерам для запуска фильтров/аэраторов/подсветки
Другие применения:
- Система поддерживает 4 аналоговых датчика, это не обязательно должны быть датчики влажности почвы, у китайцев полно других «датчиков-модулей», которые точно так же подключаются к схеме:
- Датчик света: «умная» система освещения, резервное освещение
- Термистор (до 80 градусов): контроль нагрева объекта
- Датчик звука: закрывание окна при сильном шуме снаружи (почему нет? =) )
- Датчик ИК излучения (датчик пожара) – разные варианты сигнализации, или даже тушения (включаем помпу с водой, открываем кран сервой)
- Датчик дождя: закрытие окон, сигнализирование, включение помп на откачку
- Датчик уровня воды/датчик наличия воды: автоматическое наполнение резервуара, автоматическая откачка воды помпой из ёмкости/подвала, перекрытие водяных магистралей при протечке, сигнализация о протечке
- Газоанализаторы в ассортименте: сигнализатор или даже проветривание (открываем окно) по уровню угарного газа и других промышленных газов
- Оптический датчик препятствия: тут нужна фантазия
- Потенциометр: как дополнительный орган контроля системы
- Сервопривод довольно универсальная штука, может открывать/закрывать заслонки, может нажимать кнопки других устройств, вращать ручки регулировки других устройств, с приделанным шатуном получает возможность линейно перемещать предметы/ползунки других устройств. Сервоприводы есть разных размеров, от микро (2 кг/см) и средних (13 кг/см) до весьма мощных (50 кг/см)
- Реле умеет замыкать контакты питания и управлять любыми устройствами, также реле может включить блок питания (например светодиодной ленты). Реле можно поставить параллельно проводам к кнопке другого устройства, и оно будет его включать или выключать.
- Версия 1.4 и выше позволяет поддерживать температуру при помощи ПИД регулятора, для
террариумов/инкубаторов/любого поддержания температуры:
– Подавать ШИМ сигнал на полевой транзистор, управляющий нагревом
– Поворачивать сервоприводом крутилку сетевого диммера - Версия 1.4 и выше имеет режим Рассвет, позволяющий использовать контроллер для
аквариума/террариума и прочих «животных ферм» - Версия 1.5 и выше имеет режим “расписания ПИД”, который позволяет автоматически менять установку (температуру) по расписанию
- Основным органом управления является энкодер, рукоятку которого может вращать и нажимать (она является кнопкой). При запуске системы мы попадаем на настройку канала 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 часа
- Привязка к реальному времени: да
- Применение: полив в гидропонных системах, проветривание без датчика
Период | Раз в сутки | Когда срабатывает |
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 часов каждого дня (+ сдвиг на стартовый час) |
- 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 часу
- Привязка к реальному времени: да
- Применение: идеальный режим для освещения и редкого полива
- Датчик – действие на основе датчика. С периодом опроса ПЕРИОД опрашивается выбранный датчик под названием ДАТЧИК и при превышении порогового значения ПОРОГ выполняется действие согласно выбранному каналу (реле/серво/привод). ПЕРИОД опроса опроса задаётся в секундах или минутах (по мере увеличения). Датчик выбирается из списка: Т.ВЗД. – температура воздуха, В.ВЗД. – влажность воздуха и 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
- Service (Сервис)
- Debug (Экран отладки)
- Channel 0 – Channel 6 (Каналы реле 0-6)
- Mode (Режим) – клик для перехода в настройки режима
- Direction (Направление работы)
- On-Off
- Off-On
- Type (Тип канала реле)
- Relay (Реле)
- Valve (Клапан)
- Common (Общий)
- Servo 1 – Servo 2 (Каналы серво 1 и 2)
- Mode (Режим) – клик для перехода в настройки режима
- Direction (Направление работы)
- Min-Max
- Max-Min
- Limits (Пределы поворота)
- Min
- Max
- Drive (Канал привода)
- Mode (Режим) – клик для перехода в настройки режима
- Direction (Направление работы)
- Open-Close
- Close-Open
- Timeout (Время движения)
Настройка режима, уровень вложенности 1
- Timer (Простой периодичный таймер)
- Period (Время паузы, оно же период работы)
- Work (Время работы)
- Left (Осталось до следующего включения)
- Timer RTC (Периодичный таймер с привязкой ко времени)
- Period (Период работы)
- Work (Время работы)
- Start from (Час, начиная с которого считается период)
- Day (Суточный таймер)
- Start (Час начала работы)
- Stop (Час окончания работы)
- Sensor (Датчик)
- Period (Период опроса)
- Sensor (Выбор датчика)
- Threshold (Пороговое значение)
ВИДЕО
КОМПОНЕНТЫ
Стараюсь оставлять ссылки только на проверенные крупные магазины, из которых заказываю сам. Также по первые ссылки ведут по возможности на минимальное количество магазинов, чтобы минимально платить за доставку. Если какие-то ссылки не работают, можно поискать аналогичную железку в каталоге Ардуино модулей. Также проект можно попробовать собрать из компонентов моего набора GyverKIT.
Железо контроллера
Wemos Mini: купить в РФ, aliexpress, aliexpress, искать
Энкодер: aliexpress, aliexpress, aliexpress, искать
Дисплей LCD 2004 I2C: aliexpress, aliexpress, искать
Часы DS3231: aliexpress, aliexpress, искать
Датчик BME280: aliexpress, aliexpress, искать
- Драйвер привода https://ali.ski/_6Lktd
- Модуль WiFi, берите с адаптером (поддержка в разработке) – искать
- Стабилизатор 3.3V https://ali.ski/GNnBLH
- Гнездо под WiFi – искать али
Датчики вл. почвы
- Обычный 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
Сервоприводы
Сервопривод: aliexpress, aliexpress, искать
Сервопривод большой aliexpress, aliexpress, искать
- Большой (20 кг*см) https://ali.ski/yNAJLo
- Очень большой (60 кг*см) https://ali.ski/Wx-aS5
Линейные приводы
- Привод 100мм 12V (скорость я брал 45mm/s) https://ali.ski/ukfSVf
- Искать ещё
Железки для теплицы
- Средняя помпа
- Мощная помпа
- Клапан 1/2″ https://ali.ski/4hq49y
- Лампочки с полным спектром
- Матрицы с полным спектром https://ali.ski/7d54T
- Готовые полноспектровые светильники https://ali.ski/4jMXP
Разное
- БП 5V 2A питание схемы https://ali.ski/y7I4wc
- БП 12V 3A питание привода
- Кнопки искать https://ali.ski/AJdwd
- Кнопки NC https://ali.ski/dwzd9m
- Кнопки NO https://ali.ski/50_GgY
- Колодки https://ali.ski/tnw6y
- Рейка контактная https://ali.ski/LdDYfQ
- Рейка угловая http://fas.st/opqeGu
В наших магазинах
- Рейка контактная https://www.chipdip.ru/product/pls-40
- Рейка угловая тройная PLT-120R https://www.chipdip.ru/product/plt-120r-pitch-2-54-mm
СХЕМЫ
Синие модули реле подкупают своей ценой, но нужно понимать, что серьёзную нагрузку (>2кВт) они не потянут. Можно при помощи этих реле управлять другими, более мощными контакторами. Для управления сетевым оборудованием рекомендуется использовать твердотельные реле. “Синие” реле также очень сильно искрят и спокойно станут причиной зависаний контроллера! Обязательно почитайте про искрогасящие цепи ниже!
Твердотельные реле хороши, но греются. Для коммутации мощностей выше 600-1000 Ватт даже большой твердотелке придётся поставить радиатор, для этого нижняя её часть представляет собой металлическую пластину.
Несмотря на простоту и очевидность подключения нагрузки через реле, можно столкнуться с практически «магическими» проблемами, проявляющимися как глюки в системе контроллера, вплоть до зависания и перезагрузки, и неадекватное поведение дисплея.
Таким образом реле может управлять практически чем угодно, но проблемы возникают именно с индуктивной нагрузкой, причём как постоянного, так и переменного тока. При резком включении и отключении индуктивной нагрузки создаётся выброс, напряжение которого может в несколько раз превышать напряжение питания цепи, этот выброс провоцирует электромагнитные наводки в электрических цепях, которые приводят к сбоям в работе микроконтроллера и других компонентов. Индуктивной нагрузкой являются моторы (приводы, помпы) и соленоиды (электромагниты, соленоидные клапаны и проч.). Коммутация такой нагрузки без защиты от выбросов будет приводить к сбоям в работе контроллера, поэтому давайте рассмотрим несколько способов более-менее защиты от таких проблем.
Что почитать по теме:
- https://habr.com/ru/company/unwds/blog/390601/
- https://www.elec.ru/articles/mery-po-zashite-kontaktov-rele-ot-povrezhdeniya-du/
Постоянный ток
Самые жизненные примеры – помпа и клапан на 12V, которые управляются от блока питания. Самый первый и обязательный шаг к защите от индуктивных выбросов – диод, установленный встречно-параллельно индуктивной нагрузке. Диод рекомендуется припаивать как можно ближе к нагрузке, а не к реле, чтобы между нагрузкой и диодом было как можно меньше проводов. Это рекомендация, совсем необязательно резать провод у помпы под корень и ставить туда диод – можно разместить диод непосредственно у выводов реле, такой вариант тоже будет работать, но хуже. Смотрите схему выше.
Постоянный и переменный ток
Очень распространённым способом защиты цепи является RC цепь (она же искрогасящая цепь, снаббер), представляющая собой резистор и конденсатор. RC цепь можно поставить параллельно выводам реле (т.е. последовательно с нагрузкой), что очень удобно. Смотрите схему и выбор номиналов выше.
Переменный ток
Для цепей переменного тока есть ещё один совет: используйте твердотельные реле с детектором перехода через ноль (zero detection, zero-cross), они также называются «бесшумные» реле, т.к. в них коммутация происходит в момент перехода напряжения через ноль, и выброс практически равен нулю.
ПЛАТА
Плата разведена в онлайн редакторе EasyEda. Открыв редактор по ссылке, можно сделать файл/экспорт/PDF и сохранить документ для изготовления ЛУТом или другими наколеночными способами. Можно сохранить Gerber файл (актуальная версия всегда доступна по кнопке ниже) и заказать плату на JLCPCB, изготовление 10-ти плат любого цвета стоит $2.
- v1.1 плата односторонняя, имеет три перемычки. Не забываем их запаять!
- v1.2 плата двухсторонняя, перемычки соединены на верхнем слое. При заказе плат этой версии перемычки самому припаивать не нужно!
- Добавлена шина расширения i2c для каких-то новых датчиков (для удобства подключения)
- Добавлена шина 5V для удобства подключения цифровых датчиков
- Колодки питания сдвинуты в ряд
- Сделано место под WiFi свисток. Его поддержки пока нет, работа ведётся.
По изготовлению плат своими руками смотрите мои видосы:
- Разводка плат в EasyEDA – https://www.youtube.com/watch?v=Rbf7AZkfNwQ
- Изготовление платы ЛУТом – https://www.youtube.com/watch?v=NJTeIALlztI
- Изготовление платы фоторезистом – https://www.youtube.com/watch?v=2sISKRJSLBo
ПРОШИВКА
Максимально подробный гайд по началу работы с платой и загрузке прошивки для проекта находится ЗДЕСЬ. Изучи его внимательно, прежде чем писать на форум или в группу ВК!
ПРИМЕРЫ КОМПОНОВКИ
ОШИБКИ И FAQ
Версия Arduino IDE
Во избежание ошибок рекомендуется использовать актуальную версию Arduino IDE (1.8.12 на момент тестирования прошивки мной лично)
Конфигурация прошивки
Как вы могли прочитать в доке, некоторые возможности системы и поддержку модулей/датчиков можно настроить в прошивке. В прошивках разных версий по умолчанию активен разный “набор” настроек (уж простите меня), поэтому при обновлении прошивки обязательно проверяйте конфигурацию под себя!
Не работает дисплей
Дисплей может работать как надо, может не показывать ничего, а может показывать кучу белых квадратиков.
- Первым делом покрутите регулировку контрастности на задней стороне дисплея. Могут появиться белые квадраты – значит дисплей всё ещё не активен, читайте дальше, но контраст установите сейчас. Пока отвёртка в руках =)
- Смените адрес дисплея в настройках прошивки (там написано, какие адреса бывают, их всего два).
- Не паяйте кислотой и другими активными флюсами. В любом случае, флюс после неаккуратной пайки нужно отмыть.
- Также помните, что при питании схемы от бортового USB платы Arduino (при прошивке) на дисплей поступает меньшее напряжение, и изображение становится более тусклым по сравнению с питанием от 5V напрямую в плату контроллера теплицы.
- На версиях 1.5 и выше изменились библиотеки дисплея, снова установите все библиотеки из архива по инструкции с заменой файлов.
На момент разработки версии 1.5 часто обновлялись библиотеки, и присутствовал следующий баг: если не подключать модуль часов – контроллер не стартует, зависает при включении. Если не подключать BME280 но указать его использование в настройках прошивки – аналогично зависает. На данный момент все подобные проблемы решены и дисплей должен работать у всех! Проблемные библиотеки обновлены 24.04.2020, обновитесь, если делали это позже.- Если всё ещё не работает – выполните полное удаление Arduino IDE вместе с папкой программы и папкой Arduino в “Документах” (C:\Users\Имя\Documents) и установите актуальную (1.8.12) Arduino IDE как в инструкции выше, заново скачайте архив проекта и далее всё по инструкции.
- Для обновления на 1.5 и выше нужно обязательно обновить все библиотеки из архива проекта. Просто копируем всё что есть в libraries архива и вставляем себе по инструкции с полной заменой файлов.
- Что означает звёздочка * у каналов 3 и 4? Каналы 3 и 4 поддерживают режим ПИД регулятора и рассвет при помощи ШИМ сигнала. Помечены, чтобы отличались от остальных.
- Возможно ли купить готовый контроллер? На данный момент продажи контроллеров не планируется
- Время полива “по датчику” задаётся периодом опроса датчика? Всё верно, если поставить период слишком большим – зальёт. В версии 1.2 был добавлен гистерезис для режима “Датчик”, это позволит повысить стабильность работы системы даже на небольших периодах опроса
- Как задать режим работы для нагревателя? Точно так же, как для охладителя: реле в режиме Sensor. Вспоминаем, что реле переключает контакты, то есть может отключать или включать нагрузку. Для твердотельных реле у вас есть дополнительная настройка Direction, устанавливающая логику срабатывания реле при превышении порога по датчику.
- Как в режиме суток (Day) задать время например с 20 вечера до 6 утра? Это то же самое, что задать с 6 утра до 20 вечера, и поставить направление работы (Direction) в другую сторону. Или подключить нагрузку к другим контактам реле.
ПОДДЕРЖАТЬ
Вы можете поддержать меня за создание доступных проектов с открытым исходным кодом, полный список реквизитов есть вот здесь.