Arduino

Система полива растений с управлением по Wi-Fi

В этой статье мы рассмотрим еще одну схему автоматизации процесса полива растений. Человек, сделавший эту систему, увлекается электроникой и разведением цветов.
Цветы растут в пяти ящиках в двух местах на террасе над водоемом. Расстояние от зеркала воды до цветов около 60 см. Задача была следующая:
Автоматический забор воды из пруда и полив с помощью капельной ленты в пяти цветочных горшках.
Два отдельных насоса, один для ящиков с цветами у перил, другой для ящиков на палубе.
Полив растений только в определенное время утром и вечером в течение короткого периода времени.
Полив растений только в теплые и солнечные дни.
При реализации этого проекта предполагается, что есть домашняя автоматизация (с погодной станцией) и установлен Home Assistant.
Инструменты и материалы:
-Компьютер;
-Паяльник;
-Клеевой пистолет;
-3D-принтер (опция);
-Плата ESP-Wroom-32;
-Блок питания, 12 В, 2 А;
-Разъем питания вилка / розетка;
-Модуль L298N;
-Самовсасывающий водяной насос 12 В — 2 шт;
-Водяной фильтр;
-Система микрокапельного орошения, включая шланг длиной 10 м;
-Корпус из АБС-пластика;
Шаг первый: схема
Схема работы устройства следующая:
Блок питания подает 12 вольт на драйвер двигателя.
Драйвер мотора подает 5 вольт на ESP32.
Драйвер мотора подает питание на оба водяных насоса.
ESP32 управляет драйвером двигателя через два вывода данных GPIO.

Шаг второй: плата драйвера двигателя L298N
Чтобы плата драйвера генерировала 5 вольт нужно установить перемычку рядом с входом 12 В. С установленной перемычкой плата драйвера двигателя L298N может также напрямую питать ESP32.
Драйвер двигателя имеет 6 цифровых входов, по 3 на каждый двигатель. ENA и ENB — это входы с широтно-импульсной модуляцией (ШИМ), которые определяют скорость двигателя. Входы In1 / In2 и In3 / In4 управляют направлением вращения двигателя. После проверки направления вращения двигателя ,входы In1, In2, In3 и In4 могут быть подключены к 5V / Gnd ESP32 соответственно. В данном случае подключение следующее:
In1 / In3 = high, In2 / In4 = low
ENA и ENB по умолчанию подключены к 5 В через две перемычки. Когда для установки скорости двигателей используется ШИМ, эти перемычки необходимо удалить.
Оба двигателя подключаются к выходным контактам двигателя на плате драйвера.

Шаг третий: самовсасывающий мембранный насос
Первым насосом, который мастер попробовал в данной сборке, был простой и дешевый бесщеточный насос постоянного тока 12 В AD20P-1230C. Но этот насос не мог всасывать воду снизу. Для таких целей нужен так называемый «самовсасывающий» мембранный насос.
К основным параметрам этого насоса можно отнести:
Модель: диафрагменный насос постоянного тока R365
Рабочее напряжение: 12 В постоянного тока
Ток без нагрузки: 0,23 А
Максимальный расход: 2-3 л / мин.
Максимальное давление на выходе: 1-2,5 кг
Максимальный подъем: 1-2,5 метра
Максимальное всасывание: 2 метра
Таким образом, он может всасывать воду с глубины 2 метра, чего более чем достаточно, так как в данном случае нужно поднять воду только на 90 см вверх. Затем он должен протолкнуть воду еще на метр. В любом случае, этот насос удовлетворяет техническим требованиям.

Шаг четвертый: подключение ESP32
ESP32 — дешевый, но мощный чип от Espressif Systems. Его довольно часто используют в различных простых проектах беспроводной автоматизации. Особенности ESP32:
ESP32 имеет множество входных и выходных контактов.
ESP32 имеет встроенные Bluetooth и Wi-Fi для беспроводной передачи данных.
В сочетании с ESPHome ESP32 можно интегрировать в Home Assistant.
ESPHome обновляется по воздуху
ESPHome имеет простой локальный веб-сервер
Подключения следующее:
Питание 5 Вольт подключается от платы драйвера двигателя к выводу Vin ESP32.
Gnd подключена к Gnd
Контакт GPIO D14 подключен к ENA для ШИМ двигателя A
Контакт GPIO D32 подключен к ENB для ШИМ двигателя B

Шаг пятый: корпус
Устройство должно быть размещено в водонепроницаемом корпусе. Мастер разработал и напечатал на 3D-принтере, несущую конструкцию, которая удерживает все компоненты и которую можно легко установить в стандартный корпус из АБС-пластика.
Насосы и электронная часть находятся в разных отсеках корпуса. Разъем питания 12 В расположен сбоку.

Шаг шестой: программирование
Сначала нужно прописать некоторые параметры.
В esphome устанавливается название устройства, а также конкретная используемая плата ESP. Если контакты In1, In2, In3 и In4 платы драйвера двигателя подключены напрямую к 5V (In1, In3) и земле (In2, In4), вся запись on_boot может быть удалена.
В Wi-Fi необходимо указать сетевые учетные данные.
Запись api гарантирует, что Home Assistant найдет устройство.
Запись web_server создает веб-сервер, через который можно напрямую управлять устройством.
Запись ota позволяет обновлять данные через сеть Wi-Fi, а не через USB-соединение.
В output entry устанавливаются два контакта управления двигателем. Платформа ledc выбрана для управления ШИМ с частотой 1000 Гц. Если контакты In1, In2, In3 и In4 платы драйвера двигателя подключены напрямую к 5V (In1, In3) и земле (In2, In4), эти настройки не используются и могут быть удалены.
Запись sensor определяет уровень сигнала WiFi.
Код можно скачать ниже.

 Показать / Скрыть текст#
# Smart WiFi Controlled Irrigation System Using Home Assistant and ESPHome
#

# Generic ESP32, name, platform and initial GPIO pin states
esphome:
name: waterpump
platform: ESP32
board: esp-wrover-kit
# The on_boot entry can be removed when pins In1, In2, In3 and In4 are directly
# connected to 5V (In1, In3) and Gnd (In2, In4) respectively.
on_boot:
then:
— output.turn_on: gpio_in1
— output.turn_off: gpio_in2
— output.turn_on: gpio_in3
— output.turn_off: gpio_in4

# WiFi, connect to network as defined in secrets.yaml file.
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_pass
# I have preference for fixed IP address, comment out for dynamic IP address
manual_ip:
static_ip: 192.168.1.95
gateway: 192.168.1.1
subnet: 255.255.255.0
# fast_connect: true
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Waterpump Fallback Hotspot"
password: "Waterpump"

# Enable Captive Portal in case connection to defined WiFi network fails.
captive_portal:

# Enable logging
logger:

# Enable Home Assistant API, required to auto discover new ESPHome devices
api:

# Enable local web server for direct connection outside Home Assistant
web_server:
port: 80

# Enable over-the-air updates
ota:

# Define the output pins connected to the Motor Driver board
# The entries for pins In1, In2, In3 and In4 can be removed when directly
# connected to 5V (In1, In3) and Gnd (In2, In4) respectively.
output:
# Motor 1 — ENA, Enable A (= PWM)
— platform: ledc
pin: GPIO14
id: gpio_m1
frequency: "1000Hz"
# Motor 1 — IN1
— platform: gpio
pin: GPIO27
id: gpio_in1
# Motor 1 — IN2
— platform: gpio
pin: GPIO26
id: gpio_in2
# Motor 2 — IN3
— platform: gpio
pin: GPIO25
id: gpio_in3
# Motor 2 — IN4
— platform: gpio
pin: GPIO33
id: gpio_in4
# Motor 2 — ENB, Enable B (= PWM)
— platform: ledc
pin: GPIO32
id: gpio_m2
frequency: "1000Hz"

# Define two light switches in HA that control both water pumps
light:
# Motor 1
— platform: monochromatic
output: gpio_m1
name: "Water pump 1"
# Motor 1
— platform: monochromatic
output: gpio_m2
name: "Water pump 2"

# Define a WiFi strength sensor to indicate the WiFi strength of connection
sensor:
— platform: wifi_signal
name: "Waterpump_WiFi_Signal"
update_interval: 60s
filters:
— median:
window_size: 7
send_every: 4
send_first_at: 3
Шаг седьмой: настройка в Home Assistant
Автоматика настроена так, что она запускается каждое утро в 7:00 и каждый вечер на закате. Но только когда небо ясное, туманное или частично облачное.

 Показать / Скрыть текстautomation:
— alias: 'waterpump automation'
trigger:
# Every morning at 7:00
— platform: time
at: "07:00:00"
# every evening at sun set
— platform: sun
event: sunset
condition:
# Only run when sky is clear, cloudy or partly-cloudy
— condition: or
conditions:
— condition: state
entity_id: weather.waterfront
state: 'clear'
— condition: state
entity_id: weather.waterfront
state: 'cloudy'
— condition: state
entity_id: weather.waterfront
state: 'partlycloudy'
action:
# Switch the pump on, and let it run for 3 minutes
— service: light.turn_on
entity_id:
— light.water_pump_1
— light.water_pump_2
— delay:
minutes: 3
— service: light.turn_off
entity_id:
— light.water_pump_1
— light.water_pump_2
# Just to be sure, switch it off once more
— delay:
seconds: 30
— service: light.turn_off
entity_id:
— light.water_pump_1
— light.water_pump_2

Источник

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть
Закрыть