Умная автоматизированная система для сада на Arduino UNO и Raspberry Pi
Компоненты и материалы
| Компонент | Количество | Примечание |
|---|---|---|
| Arduino UNO | 1 | |
| Raspberry Pi 2 Model B (или любой другой) | 1 | |
| Камера Raspberry Pi | 1 | |
| Ethernet Shield 2 для Arduino | 1 | |
| Реле (одноканальное или 4-канальное) | 1 | |
| Провод (по необходимости) | 1 | |
| Фоторезистор | 1 | |
| Насос для воды | 1 | |
| Вентилятор (можно использовать от старого компьютера) | 1 | |
| Транзистор NPN (общего назначения) | 1 | |
| Карта MicroSD (16 Гб для таймлапса) | 1 |
Программное обеспечение и онлайн-сервисы
- Arduino IDE
- Raspberry Pi OS (ранее Raspbian)
- Win32DiskImager (для записи образа на SD-карту)
- PuTTY (для SSH-подключения)
- myDevices Cayenne (IoT-платформа для управления и мониторинга)
О проекте
Это вторая версия автоматизированного сада, теперь управление полностью передано платформе Cayenne, что значительно упрощает настройку. Добавлен Raspberry Pi для съемки таймлапса роста растений.
Настройка Arduino
Перед началом подключите Ethernet Shield к Arduino. На рисунках показана схема подключения всех датчиков и исполнительных механизмов.
Подключение датчиков и исполнительных механизмов
Датчик влажности почвы
- VCC → 5V
- GND → GND
- Выходной сигнал → A1
Определяет необходимость полива.
Вентилятор
- Один провод от резистора к пину 3 Arduino.
- GND вентилятора → средний вывод транзистора.
- Питание вентилятора (+) → средний контакт реле.
- Последний вывод транзистора → GND.
- Диод между средним выводом транзистора и GND (для защиты от обратного тока).
Включается при перегреве или для проветривания.
Насос для воды
- Плюс → средний контакт реле.
- Минус → GND источника питания.
Активируется по сигналу от датчика влажности почвы.
Фоторезистор (опционально)
- Один вывод → A0 через резистор к GND.
- Другой вывод → 5V.
Измеряет уровень освещенности.
Светодиодная лента / лампа
- Анод (+) → реле.
- Катод → GND источника питания.
Датчик температуры и влажности (DHT22)
- VCC → 3.3V
- GND → GND
- DATA → цифровой пин 8
Требует специального кода для работы с Cayenne (см. ниже).
Датчик уровня воды
- VCC → 5V
- GND → GND
- SIG → A2
Итоговая сборка
На схеме использовано 2 реле, так как в Fritzing не было 4-канального. Реле запитано от одного блока 12В. Плюс и минус разделены, от плюса отходят три провода к каждому каналу реле. Для Arduino и реле используется отдельный блок 5В.
Подключение реле:
- VCC → 5V
- GND → GND
- IN1 → пин 2 (свет)
- IN2 → пин 5 (насос)
- IN3 → не используется
- IN4 → пин 4 (вентилятор)
Настройка Cayenne
- Создайте аккаунт на cayenne.mydevices.com.
- Подключите Ethernet Shield кабелем RJ45.
- Загрузите в Arduino код для подключения к Cayenne и настройки датчика DHT22 (см. ниже). Код работает для W5100 shield; для других щитов код есть на сайте Cayenne. Не забудьте вставить свой токен (получается после регистрации).
Код для Arduino (Cayenne + DHT22)
#include "DHT.h"
//#define CAYENNE_DEBUG
#define CAYENNE_PRINT Serial
#include <CayenneMQTTEthernet.h>
#define DHTPIN 8
#define DHTTYPE DHT22
#define VIRT_TEMP V1
#define VIRT_HUM V2
char token[] = "ВАШ_ТОКЕН";
DHT dht(DHTPIN, DHTTYPE);
unsigned long prev_DHT_refresh = 0;
const unsigned long interval_DHT_refresh = 1000;
void setup() {
Serial.begin(9600);
Cayenne.begin(token);
dht.begin();
}
void loop() {
Cayenne.run();
getDhtValues();
}
void getDhtValues() {
unsigned long now = millis();
if (now - prev_DHT_refresh > interval_DHT_refresh) {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (!isnan(h) && !isnan(t)) {
Cayenne.virtualWrite(VIRT_HUM, h);
Cayenne.celsiusWrite(VIRT_TEMP, t);
}
prev_DHT_refresh = now;
}
}
Добавление устройств в Cayenne
В дашборде Cayenne добавьте виджеты:
- Для температуры и влажности — виртуальные пины: V1 (температура), V2 (влажность).
- Для остальных датчиков — аналоговые пины (A1, A2 и т.д.).
- Для реле (свет, насос, вентилятор) — актуаторы на соответствующих цифровых пинах (2, 5, 4).
События и триггеры
Настройте триггеры для автоматического управления:
- Насос: два триггера — включение при сухой почве и выключение при достаточной влажности.
- Уровень воды: уведомление по email при низком уровне.
- События: включение света утром, выключение вечером; два события для вентилятора (вкл/выкл по расписанию).
Настройка Raspberry Pi для таймлапса
- Скачайте образ Raspberry Pi OS, запишите на MicroSD через Win32DiskImager.
- Вставьте карту в Pi, подключите кабель Ethernet.
- Узнайте IP-адрес Pi (через веб-интерфейс роутера или командой
ifconfigна самом Pi). - Подключитесь через PuTTY (логин:
pi, пароль:raspberry). - Обновите систему:
sudo apt-get update && sudo apt-get upgrade - (Опционально) Установите VNC для удаленного рабочего стола:
sudo apt-get install tightvncserver vncserver :1 - Установите агент Cayenne для удаленного управления Pi:
wget https://cayenne.mydevices.com/dl/rpi_03wl1tt4nt.sh sudo bash rpi_03wl1tt4nt.sh -v
Скрипт таймлапса
Включите камеру через sudo raspi-config. Создайте папку для фото:
mkdir /home/pi/Desktop/timelapse
Создайте скрипт timelapse.sh:
SAVEDIR=/home/pi/Desktop/timelapse/
while true; do
filename=$(date -u +"%d%m%Y_%H%M-%S").jpg
/opt/vc/bin/raspistill -o $SAVEDIR/$filename
sleep 3600
done
Сделайте его исполняемым: chmod +x timelapse.sh. Запустите в фоне (например, через screen или systemd).
Заключение
Проект получился функциональным и простым в настройке благодаря Cayenne. Основная сложность — аккуратная проводка. Таймлапс покажет рост растений со временем.
Совет: Если Ethernet Shield выдает ошибку DHCP, попробуйте паять два резистора 100 Ом на плате (решение с форума Arduino).
Исходный код
Полный код для Arduino приведен выше. Скрипт таймлапса для Raspberry Pi также доступен в разделе кода.
Производственный процесс
- Создание профессионального универсального пульта на Raspberry Pi с LIRC
- Преобразование RF в DC с Raspberry Pi: сборка и отладка детектора огибающей
- Cycle Chaser: превратите свой велосипед в ночной световый шоу с Raspberry Pi
- Создание детектора вора на базе Raspberry Pi — пошаговое руководство
- Создайте домашний монитор температуры на Raspberry Pi с MCP9808, InfluxDB и Grafana
- Создайте систему домашней автоматизации на Raspberry Pi для удаленного управления
- Автоматизированная система полива растений на Raspberry Pi с веб-дашбордом
- MrRobot: Ubuntu Mobile-приложение для управления роботом Rapiro голосом, касанием и встряхиванием
- DIY робот в стиле Wall‑E на Raspberry Pi из коробки от CD
- Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью