Умная теплица для трав с Alexa: автоматический полив и мониторинг
Компоненты и материалы
| Компонент | Количество | Примечание |
|---|---|---|
| Amazon Alexa Echo Dot | 1 | Голосовое управление |
| Arduino Uno | 1 | Основной контроллер |
| ESP8266 ESP-01 | 1 | WiFi-модуль |
| Arduino Proto Shield | 1 | Для прототипирования схемы |
| 4-канальный релейный модуль | 1 | Управление насосами и лампой |
| Аквариумные насосы (12V) | 2 | Полив растений |
| Фито-лампа (220V) | 1 | Дополнительное освещение |
| Блок питания 220V DC | 1 | Для фито-лампы |
| Блок питания 12V DC | 1 | Для насосов |
| USB-зарядка + кабель | 1 | Питание Arduino |
| Воздушный шланг | 1 | Для подачи воды |
| Перемычки, провода | 1 набор | Соединения |
| Датчики влаги почвы YL-69 | 4 | По одному на горшок |
| Деревянный корпус (бук) | 1 | Самостоятельное изготовление |
Приложения и сервисы
- Arduino IDE — прошивка
- Amazon Alexa Skills Kit — навык для голосового управления
- AWS Lambda — бэкенд навыка
- PHP-веб-сервер — API для связи Arduino ↔ Alexa
- ArduinoJson, StensTimer — библиотеки для Arduino
О проекте
Автоматизированная система для выращивания трав в горшках. Коробка из бука вмещает 3 супермаркетных горшка. Система мониторит влагу почвы, включает полив по расписанию или команде, управляет фито-лампой. Веб-интерфейс показывает графики влажности и настройки. Голосовое управление через Alexa: «Алекса, спроси травосбокс, как мои растения», «Алекса, скажи травосбокс полей базилик 5 секунд».
Шаг 1: Датчик влаги почвы
YL-69 подключается к GPIO (питание) и аналоговому входу. Питание датчика включается только во время измерения для предотвращения коррозии.
byte vccPin = 6;
byte dataPin = A1;
int readHumidity() {
digitalWrite(vccPin, HIGH);
delay(500);
int value = analogRead(dataPin);
digitalWrite(vccPin, LOW);
return 1023 - value; // Инвертируем: больше значение = влажнее
}
Шаг 2: Релейный модуль для насосов и лампы
Релейный шилд (4 реле) гальванически разделяет цепи: Arduino (5V), насосы (12V), лампа (220V). Важно: реле срабатывают по LOW-у. Чтобы выключить — переводим пин в INPUT + LOW.
byte pump1 = 11, pump2 = 10;
void deactivatePump(byte pin) {
digitalWrite(pin, HIGH); // или pinMode(pin, INPUT)
}
void activatePump(byte pin) {
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW);
}
Шаг 3: WiFi через ESP-01
ESP-01 подключается к 3.3V (VCC, CH_PD, GND) и к пинам 2 (TX), 3 (RX) Arduino через SoftwareSerial. Скорость снижена до 9600 бод для надежности. AT-команды для подключения к роутеру и HTTP-запросов к API.
#include <SoftwareSerial.h>
SoftwareSerial espSerial(3, 2); // RX, TX
bool connectToWiFi() {
// AT+RST, AT+CWMODE=1, AT+CWJAP="SSID","PASS"
}
bool httpRequest(String server, String site) {
// AT+CIPSTART="TCP",server,80
// AT+CIPSEND=length
// GET ... HTTP/1.0
}
Шаг 4: Деревянный корпус
Размеры под 3 горшка. Вырезы для горшков — лобзиком по шаблону. Сборка на клее D3 (влагоустойкий). Датчики и шланги выведены наружу. Дно с поддоном для защиты электроники.
Шаг 5: Веб-API и настройки
Сайт на PHP + jQuery + Bootstrap + Chart.js. Настройки (пины, интервалы, пороги) хранятся в JSON. Arduino опрашивает API каждую минуту (StensTimer). Библиотека ArduinoJson парсит конфиг.
Шаг 6: Интеграция с Alexa
AWS Lambda получает запрос от Alexa, форвардит на PHP-API. API переводит интенты в команды для Arduino (полив, лампа, статус). Arduino опрашивает очередь действий каждую секунду.
Примеры интентов:
- ReadHumidityIntent — «Как мои растения?»
- IrrigatePlantIntent — «Полей базилик 5 секунд»
- SwitchIntent — «Включи лампу»
- ReadLastIrrigationIntent — «Когда полил базилик?»
Поддержка русского и английского языков.
Результат
Работающая система с голосовым управлением. Видео-демо на сайте автора. Планируемые улучшения: режим экономии энергии, внешние беспроводные датчики на Arduino Nano, мульти-пользовательский API, физические кнопки на корпусе.
Структура кода Arduino
WhiteWalnut.ino— главный скетч, таймеры, инициализацияPlant.h/cpp— класс растения: чтение влаги, отправка данныхEcoActionBuffer.h/cpp— буфер команд от API (полив, лампа)WhiteWalnutApi.h/cpp— работа с ESP-01: WiFi, HTTP, JSON
Схема коммуникаций
Arduino ↔ SoftwareSerial ↔ ESP-01 ↔ WiFi ↔ PHP-API ↔ AWS Lambda ↔ Alexa
Данные: влага (периодически), команды (опрос каждую сек), настройки (опрос каждую мин).
Производственный процесс
- Веб-управляемая DMX-система освещения: Arduino Mega как мастер-контроллер
- Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
- SERENA: Пользовательская система сигнализации на Arduino Mega 2560 с TFT Touchscreen
- Компактная метеостанция: Arduino Nano + ESP8266, BMP280, OLED / Nokia 5110 LCD
- Умная вентиляция подвала на Arduino: контроль влажности
- Система учёта рабочего времени на RFID, Arduino и Google Таблицах
- Беспроводная прошивка Arduino через Bluetooth HC-05: щит без USB-кабеля
- Система предупреждения о столкновении на Arduino: визуальные и звуковые сигналы
- TFT Shield 2.8" 320×240 SPI для Arduino Nano — высокопроизводительный дисплей
- Shield Nixie Tube Clock NCS314 для Arduino UNO/MEGA — совместимость с IN-14/IN-12