Умная система автополива для городских растений на Arduino 101
Компоненты и материалы
| Компонент | Количество | Примечание |
|---|---|---|
| Arduino 101 (Intel Curie) | 1 | С встроенным BLE, RTC и нейронной сетью PME |
| Датчик влаги почвы (аналоговый) | 2 | Опционально |
| Датчик дождя | 1 | С цифровым выходом |
| Датчик температуры TMP36 | 1 | Аналоговый выход |
| Сервопривод 180° | 1 | Для управления клапаном резервуара |
| LCD 16x2 (HD44780) | 1 | С I2C или параллельным интерфейсом |
| Потенциометр 10 кОм | 1 | Регулировка контраста LCD |
| Резистор 330 Ом | 1 | Для подсветки LCD |
| Резервуар для воды (пластиковая канистра/бутылка) | 1 | Например, от молока, 2-3 литра |
| Гибкая трубка (внутр. диаметр 4-6 мм) | 1 | ~30 см |
| Моделирующая глина / термоклей | 1 | Для герметизации |
| Пластиковый стержень (жёсткий) | 1 | Опора для трубки |
| Коробка для монтажа (пластиковая) | 1 | Крепление электроники |
| Перемычки, паяльник, инструменты | — | По необходимости |
Инструменты
- Ножницы
- Крестовая отвёртка
- Электроизоляционная лента и обычный скотч
- Дрель с бором 2.5 мм и нарез M3 (для корпуса)
Программное обеспечение
- Arduino IDE 1.8.x или новее
- Ядро Curie Core 2.0.2+
- Библиотека CuriePME (Pattern Matching Engine)
- Приложение nRF Connect (iOS/Android) для настройки времени через BLE
Принцип работы
Система автоматизирует полив растений в городских условиях, используя гравитационный резервуар и интеллектуальный алгоритм определения оптимального времени полива на основе температуры.
Гравитационная подача воды
Резервуар (канистра) установлен на возвышенности. В дне отверстие с трубкой, которую перекрывает рычаг сервопривода. В обычном положении серво держит трубку согнутой (закрыто). При поливе серво поворачивается на 135°, трубка выпрямляется — вода течёт под действием гравитации и гидростатического давления. После полива серво возвращается.
Резервуар также собирает дождевую воду через отверстие в верхушке, дополняя запас.
Определение оптимального времени полива (Curie PME)
Оптимальная температура для полива — около 25°C. Arduino 101 каждые 2 минуты с 8:00 до 21:00 (14 часов) делает 30 замеров температуры в час (TMP36). Первое измерение отбрасывается, остальные 29 усредняются. Полученное среднее значение (маппится в 0-255) обучается в нейронной сети Curie PME (128 нейронов) под категорией, соответствующей часу (8-21).
После сбора данных за день PME классифицирует вектор «25°C» среди изученных категорий. Найденная категория (час) становится временем полива на следующий день. Данные сохраняются во флеш-памяти Curie для сохранения при потере питания.
Если классификация не удалась (нет совпадения), используются месячные константы пиковой температуры (например, 12:00 зимой, 16:00 летом).
Настройка времени через BLE
При первом включении устройство ждёт подключения через nRF Connect. Пользователь последовательно отправляет 4 байта в HEX: часы, минуты, день, месяц (плюс байт подтверждения). После отключения устройство ждёт 8:00 для начала обучения.
Учёт дождя и влаги почвы
Полив пропускается, если датчик дождя срабатывает (HIGH) или влага почвы выше порога (опционально).
Сборка устройства
- Схема на макетной плате — см. Fritzing-диаграмму. Датчики дождя и серво могут требовать удлинённых проводов.
- Питание — либо 2×4 АА NiMH в коробках с выключателями (склеены скотчем, крепятся под плату), либо USB.
- Резервуар: отрежьте верх канистры, сделайте отверстие в дне под трубку, загерметизируйте глиной. Закрепите серво у дна, соедините рычаг с трубкой и стержнем.
- Установка: закрепите канистру на возвышенности, поставьте растение под трубку, вставьте датчики в почву, датчик дождя — рядом.
- Корпус: поместите электронику в коробку, вырежьте отверстия для USB и проводов датчиков.
Программный код (основные фрагменты)
Полный скетч DigitalClockAlarmV7.ino доступен в прикреплённых файлах. Основные моменты:
- Используются библиотеки:
CuriePME.h,CurieBLE.h,CurieTime.h,SerialFlash.h,LiquidCrystal.h,Servo.h,dht.h. - В
setup(): инициализация BLE-сервиса с характеристикой для приёма времени, чтение EEPROM (будильник, дата рождения, стиль дисплея), проверка флеш-памяти на наличие сохранённой модели PME. - Если модели нет — запускается 14-часовой цикл обучения (8:00-21:00) с усреднением температуры каждый час и обучением PME. Затем модель сохраняется во флеш.
- В
loop(): каждую итерацию классифицируется вектор 25°C. Если найдено совпадение — час полива = категории. Иначе — месячная константа. Затем PME очищается (forget()) и цикл обучения повторяется заново. - Полив происходит в найденный час, если нет дождя и почва сухая. Серво поворачивается на 135° на 7 секунд.
- Данные температуры/влажности обновляются каждые 6 секунд (DHT21 опционально).
Особенности и доработки
- Система полностью автономна после первичной настройки времени.
- Энергонезависимая память сохраняет модель PME и настройки.
- Можно добавить солнечную панель и Li-Ion для полной автономности.
- Код модулен: легко добавить новые датчики (например, освещённость) или изменить логику полива.
Схемы и 3D-модели
- Fritzing-схема:
rainpoweredsmartirrigationsystem_OHtd4bVfb3.fzz - STL-файлы корпуса:
stl_files_ZuDXHCHZCl.zip - Eagle-файлы PCB:
eagle_files_ZN59zdeNf5.zip
Производственный процесс
- Титан: ключевые свойства, применения и промышленное использование
- Кастаньеты: история, мастерство и исполнение
- История, производство и будущее клея: от древних клеев к современным инновациям
- Нить: виды, история, производство и контроль качества
- Ацетилен: производство, применение и безопасность — подробный обзор
- Комплексный обзор асбеста: от древних применений к современным рискам для здоровья
- История, дизайн и производство кубиков: от древних инструментов к современным играм
- Олово: от бронзового века к современной промышленности — применение, производство и будущее
- Автоматизированная система полива растений на Raspberry Pi с веб-дашбордом
- Siemens и Bentley анонсируют совместное решение для ускорения цифровизации электростанций