Автоматика для гидропонных систем ардуино

Автоматизированная гидропоника с автоматической корректировкой параметров.

Введение

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

Если вы впервые работаете с контроллером Piranha ESP-32, ознакомьтесь с нашей инструкцией. Также, если вы впервые работаете в среде Arduino IDE, вам поможет статья. Мы постарались описать процесс сборки максимально подробно и дать все необходимые ссылки, чтобы вы могли повторить данный проект, даже если у вас нет опыта программирования.

Видео

Нам понадобится

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

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

Основной блок (на базе Piranha ESP-32)

  • 1х Piranha ESP-32
  • 1х I2C Силовой ключ (P или N-канал)
  • 2х I2C Реле (2 канала)
  • 1х I2C Hub
  • 1х 4-проводной шлейф «мама-мама»
  • 1х Датчик кислотности жидкости (pH-метр)
  • 1х Солемер для воды с щупом TDS, EC-метр
  • 1х Pull Switch UP/DOWN
  • 1х Светодиод 10мм — RGB
  • 1х Провод «Мама — Мама» (2 провода)
  • 1х Провод «Папа — Мама» (2 провода)
  • 1х Твердотельное реле
  • 3х Датчик уровня воды (у нас угловой)
  • 1х Источник питания 12В, ток зависит от мощности вашей установки (у нас на 10А)
  • 1х Понижающий DC-DC Преобразователь LM2596
  • 2x Гнездо USB A (самосборное)
  • 1х Вилка USB A (самосборная)
  • 3x Винты (например, М3х6, порядка 30 штук)
  • 2х Стойка М3*6 Nylon-black
  • 2х Стойка М3*20 Nylon-black
  • nx Провод для соединения силовой электроники, например, силиконовый 24AWG
  • Светодиодная лента (фитолента) 12В
  • 1х Циркуляционный насос (у нас аквариумный, 220В, 11Вт)
  • Вам может понадобиться набор DuPont разъемов 2.54мм для подключения уровнемеров, силиконовый провод 24AWG и/или другой провод для их подключения
  • Сетевая вилка, сетевые провода, крепёж, стяжки

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

Принцип работы

В основе установки — управляющий блок на основе Piranha ESP-32, к которому подключены датчики и исполнительные механизмы. Контроллер, благодаря встроенному модулю Wifi, подключается к интернету и получает от панели управления необходимые настройки и отправляет на неё показатели кислотности, концентрации, расхода электроэнергии, число прошедших дней с момента посадка.

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

Измерение параметров питательно раствора производится каждые пол часа: pH в 0 минут каждого часа, и ppm в 30 минут каждого часа. При запуск измерения вручную через панель ioControl оба параметра измеряются одновременно. При отклонении параметров от заданного диапазона, включается автоматическая корректировка с помощью модулей долива.

Работа модулей долива

Модули долива могут работать как в режиме дозирования порции (по времени или по объёму жидкости), так и в режиме прямого долива (пока есть управляющий сигнал). Модуль начинает подачу жидкости, когда получает управляющий сигнал от главного контроллера, или при нажатии кнопки.

  • Если кнопка нажата кратковременно, то происходит подача порции. Размер порции и способ её измерения задаётся в коде программы модуля долива. Например, можно установить время подачи 2 секунды, или, например, объём подачи 20мл. Задание объёма возможно в случае, если установлен расходомер. Соответственно, если вы не собираетесь использовать задание порции по расходу, расходомер можно не ставить.
  • Если кнопка удерживается, то происходит подача жидкости до момента, пока кнопка не будет отпущена.

Аналогично модуль долива работает и с сигналом от управляющего контроллера. При этом стоит отметить, что в случае, если будет превышено установленное время работы модуля, он отключится и светодиод сообщит об ошибке (см. раздел «Режимы защиты и световой индикации»).

Схема управляющего контроллера

Перед сборкой установите модулям I2C необходимые адреса (раздел адресации устройств I2C)

Перед сборкой настройте напряжение 5В на выходе понижающего преобразователя!

Обратите внимание, что устройства I2C могут подключаться к шине I2C в любые колодки, главное соблюдать полярность. Например, на схеме видим, что модуль реле подключен к модулю силовых ключей. Его можно было бы подключить и к I2C Hub’у, если бы так было удобнее.

Также возможно подключение щупа TDS-метра через реле (вместо двух реле для подключения самого модуля).

Подробное описание подключения элементов

Вывод модуля Подключается к.
IN+ + 12В
IN- — 12В
OUT+ Vcc (красная колодка) Piranha ESP-32
OUT- GND (черная колодка) Piranha ESP-32
Вывод модуля Вывод Piranha ESP-32
B 1
GND GND (черная колодка)
V Vcc (красная колодка)
R 13
G 12

Pull Switch UP/DOWN (модуль подтяжки для уровнемеров)

Вывод модуля Вывод Piranha ESP-32
1 14
GND GND (черная колодка)
V Vcc (красная колодка)
2 15
3 26

Нижний уровнемер (полярности нет)

Вывод модуля Колодка модуля подтяжки для уровнемеров
1 3
2 G

Средний уровнемер (полярности нет)

Вывод модуля Колодка модуля подтяжки для уровнемеров
1 2
2 G

Верхний уровнемер (полярности нет)

Вывод модуля Колодка модуля подтяжки для уровнемеров
1 1
2 G

Модули долива (подключаются к колодке GVS)

Модуль Колодка Piranha ESP-32
pH Down 17
pH Up 16
Концентрат А 23
Концентрат В 18
Вода 19
Вывод модуля Вывод Piranha ESP-32
G GND (черная колодка)
V Vcc (красная колодка)
S 25

Циркуляционный насос подключается к сети 220В через твердотельное реле.

Вывод Вывод Piranha ESP-32
GND GND
Vcc +5V
SCL SCL
SDA SDA

pH-метр, модуль силовых ключей, модуль реле

Вывод модуля Вывод I2C Hub
GND GND
Vcc +5V
SCL SCL
SDA SDA
Вывод модуля Вывод I2C Hub или модуля реле
GND NO канала 1 реле 1
Vcc NO канала 2 реле 1
SCL SCL канала 1 реле 2
SDA SDA канала 2 реле 2

Также на модуле реле 1 соединить:

GND K1 (канал 1)
Vcc K2 (канал 2)

Также на модуле реле 2 соединить:

SCL K1 (канал 1)
SDA K2 (канал 2)

Особенности схемы

1) TDS-метр, как и прочие устройства I2C, подключается к шине I2C. Однако, для устранения влияния pH-метра на работу TDS-метра, последний включен через реле. Во время измерения контакты реле замкнутся, на TDS-метр подастся напряжение и произойдет измерение.

Как мы говори, некоторые модули можно не ставить. Например, если вы используете только pH-метр или только TDS-метр, то модуль реле можно не ставить, а TDS-метр подключить напрямую к шине I2C (просто шлейфом к I2C Hub’у).

2) Обратите внимание, что на модуле подтяжки переключатель подтяжки находится в положении «UP».

3) Обратите внимание, что на модуле двухканального реле переключатель питания находится в положении «Vcc», т.е. питание реле будет производиться не от внешнего источника питания, а от шины I2C.

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

5) Также мы снимаем таймлапс на Raspberry Pi, поэтому дополнительно к выходу понижающего преобразователя 5В мы подключили еще два USB гнезда. Так можно удобно подключать устройства USB при необходимости.

Установка библиотек

Скачайте и установите библиотеки, указанные ниже. Они понадобятся для установки I2C аресов модулей и для работы скетча. Вам может пригодиться инструкция по установке библиотек.

Перечень библиотек:

Адресация устройств I2C

Для устройств I2C перед началом сборки необходимо задать адреса:

Модуль Адрес
Модуль силовых ключей 0x09
pH-метр 0x0A
TDS/EC-метр 0x0B
Двухканальное реле (разрыв GND и Vcc TDS-метра) 0x0C
Двухканальное реле (разрыв SCL и SDA TDS-метра) 0x0D

Также у нас в скетче вы можете видеть ещё одно реле с адресом 0x0E. Оно необходимо для коммутации 220В освещения. Вы можете обойтись без него (редактировать код не нужно) или использовать его для включения ламп освещения.

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

1) Установите библиотеку iarduino_I2C_Address. Она необходима для установки адресов модулей серии I2C-flash.

2) Подключите модуль, у которого хотите изменить адрес, к имеющемуся у вас контроллеру. Если контроллер имеет колодку I2C, то подключаемся к ней напрямую. Если нет (на рисунке это Arduino Nano), то подключаемся к выводам A4 и A5 (см. рисунок).

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

Если открыть монитор порта, то можно будет увидеть информационные сообщение о ходе процесса.

4) Установите необходимые адреса всем модулям I2C (таблица в начале раздела).

Создание и настройка панели ioControl

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

Мы разработали облачный сервис интернета вещей ioControl, в котором и будем работать. Выполнение всех описанных ниже действий не займёт много времени.

1) Выполните действия из раздела «Начало работы». Так вы поймёте принцип работы сервиса и подготовитесь к работе.

2) Создайте панель. Её название должно быть уникальным.

3) Теперь добавляем переменные. О том, как их создавать, подробно написано в разделе «Начало работы». Здесь мы приводим их названия и типы. Если вы хотите задать переменным и другие имена, необходимо будет изменить их название и в скетче.

Название переменной Тип переменной Вид карточки
timeLedOn Целочисленная Ввод/вывод значения
timeLedOff Целочисленная Ввод/вывод значения
alertMode Текстовая Вывод значения
switch Целочисленная Кнопка
totalPower С плавающей точкой Вывод значения
measureMode Целочисленная Кнопка
sensorPH С плавающей точкой Вывод значения
sensorTDS С плавающей точкой Вывод значения
setPh С плавающей точкой Ввод/вывод значения
setTDS С плавающей точкой Ввод/вывод значения

Отлично, панель создана!

Скетч и настройки управляющего контроллера (Piranha ESP-32)

Если вы впервые работаете с контроллером Piranha ESP-32, ознакомьтесь с нашей инструкцией.

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

Желательно отключить все модули от контроллера во время прошивки. Подключённые к некоторым пинам модули могут сделать загрузку кода в контроллер невозможной (из-а подтяжки выводов контроллера шинам питания).

Также напоминаем про необходимость предварительной установки адресов I2C-модулей.

Настройки

Рассмотрим основные настройки, которые требуют комментария:

  • io_timeLedOn— время включения освещения. Этот параметр также можно будет изменить из панели облачного сервиса.
  • io_timeLedOff— время выключения освещения. Аналогичен предыдущему.
  • nightMode— ночной режим: активен или нет. Если режим активен, что в ночное время (интервал времени, когда свет выключен) нормализация параметров не будет производиться. Актуально для домашней установки, чтобы ночью не включались насосы модулей долива.
  • delayTime— время задержки перед началом измерения параметров питательного раствора. Измерение должно производиться на неподвижной жидкости, поэтому на время измерения циркуляционный насос выключается. delayTime — это время выдержки паузы после выключения насоса, чтобы жидкость в системе успела остановиться.
  • moduleMixInterval— интервал времени между добавлениями компонентов концентрата. Выдержка необходима, чтобы первый добавленный компонент успел распределиться в системе и концентраты не смешались друг с другом.
  • minPh, maxPh — минимальное и максимальное значение pH, при которых будет включаться автокорректировка. По сути, это диапазон, в рамках которого следует поддерживать кислотность.
  • minTDS, maxTDS — аналогично предыдущему, это значение ppm (концентрация).
  • limitValuePhLow, limitValuePhHigh — граничные (аварийные) значения кислотности, при получении которых будем считать, что произошла ошибка и данные не корректны, соответственно нормализовывать раствор не будем.
  • limitValueTDSLow, limitValueTDSHigh — аналогично предыдущему, значения концентрации.

    Не забудьте указать необходимую информацию для подключения к Wifi:

Источник

Adblock
detector