Умная система мониторинга растений на AWS IoT
Компоненты и материалы
| Компонент | Кол-во | Примечание |
|---|---|---|
| Arduino Yun | 1 | Linux (OpenWrt) + AVR, встроенный Wi-Fi |
| Grove Starter Kit Plus (Shield + Температура + Свет) | 1 | Датчики на Grove-разъёмах |
| Grove Moisture Sensor (влажность почвы) | 1 | Аналоговый, A1 |
| Красный LED 5 мм + резистор 330 Ом | 1 | Индикатор «полить» на пине D2 |
Инструменты
- 3D-принтер (корпус) — слой 0.3 мм, заполнение ≥25%
Облачные сервисы
- AWS IoT Core (MQTT, Thing Shadow, Rules)
- AWS IAM (роли, политики)
- AWS DynamoDB (хранение телеметрии)
- AWS SNS (email-уведомления)
- dweet.io (простой альтернативный дашборд)
- Arduino IDE + AWS IoT Device SDK for Arduino Yun
О проекте
Автономная система мониторинга комнатного растения: температура, освещённость, влажность почвы. Данные уходят в AWS IoT → DynamoDB, при сухой почве — email через SNS. Альтернатива — dweet.io для быстрой проверки. Включает 3D-печатный корпус с интегрированным «шпом» для датчика влаги.
Этап 1: Сборка цепи (Grove Shield на Yun)
- Temperature → A0
- Moisture → A1
- Light → A2
- LED (через 330 Ом) → D2
Этап 2: 3D-печатный корпус
3 STL-файла: база под Yun+Shield, верхняя крышка, шпы для датчика влаги (прикручивается M4×40). Печать ~2 часа. Ориентируйте отверстие шпа к горшку.
Этап 3: Калибровка порога сухости
Загрузите скетч SoilMoistureValue (см. Code). Смочите датчик в сухом и мокром грунте, запишите значения. Порог tooDryValue (пример ~250–500) — ниже = нужен полив. Это же значение используйте в SNS-правиле.
Этап 4: Отправка в dweet.io (быстрый тест)
Скетч ArduinoYunDweetio. Замените PlantMonitorTorontoON на уникальное имя. Данные: https://dweet.io/follow/. Интервал 10 сек (настраивается).
Этап 5–11: Настройка AWS CLI и сертификатов (на компьютере)
- Установите AWS CLI (
awscli-bundle). aws iot create-thing --thing-name "PlantSystem"aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile cert.pem --public-key-outfile publicKey.pem --private-key-outfile privateKey.pem- Создайте политику
PubSub(iot:*) и привяжите к сертификату и thing. - Проверьте через MQTT.fx (подключение с сертификатами, publish/subscribe на
topic/plantdata). - Перенесите сертификаты на Yun: папка
certs/(rootCA.pem, cert.pem, privateKey.pem). Запуститеcodebase_upload.shиenvironment_setup.sh(установка python-openssl, paho-mqtt и т.д.).
Этап 12–14: DynamoDB + IoT Rule
- IAM роль
iot-actions-roleс довериемiot.amazonaws.comи политикойdynamodb:*,lambda:InvokeFunction. - Таблица DynamoDB
plantSensor: PK =key(String), SK =timestamp(Number). RCU/WCU = 1. - IoT Rule
PlantDataToDynamoDB:- SQL:
SELECT * FROM 'topic/plantdata' - Action: DynamoDBv2 (PutItem), table
plantSensor, hashKey =${topic(2)}, rangeKey =${timestamp()}, roleArn =iot-actions-role.
- SQL:
- Тест через MQTT.fx → проверьте Items в консоли DynamoDB.
Этап 15: Arduino Yun → AWS IoT (MQTT)
Скетч ArduinoYunAWSIoTDynamodb + вкладка aws_iot_config.h (endpoint, clientId, thingName, пути к сертификатам). Использует ArduinoJson для формирования JSON: {"temp":23.4,"lightval":450,"moistval":320}. Публикует на topic/plantdata каждые 10 сек (настройте интервал для экономии денег).
Этап 16: SNS-уведомление при сухой почве
- Дайте роли
iot-actions-roleполитикиAmazonSNSFullAccess. - SNS: создайте топик
sendMail, подписку — ваш email. - IoT Rule
EmailSend:- Attribute:
moistval - Topic filter:
topic/plantdata - Condition:
moistval < 250(ваш порог) - Action: SNS →
sendMail, role =iot-actions-role.
- Attribute:
Письмо приходит при извлечении датчика из воды (тест).
Итоговая сборка
- Прикрутите шпы к базе (M4×40).
- Вставьте Yun+Shield в корпус, прикройте крышкой.
- Установите в горшок: шпы в грунт, отверстие крышки к окну (свет).
- Питание: micro-USB от блока питания 5В/1А+.
Советы по эксплуатации
- Увеличьте интервал публикации (например, 15–30 мин) для постоянного развёртывания — сэкономите на AWS IoT/DynamoDB/SNS.
- Добавьте deep-sleep на AVR-части Yun между измерениями (если питание от батареи).
- Расширьте: насос для автополива (реле на D3), камера (Pi Camera на отдельном Pi), прогноз полива по ML.
Код (все скетчи в репозитории / разделе Code)
SoilMoistureValue— калибровка порога.ArduinoYunDweetio— отправка в dweet.io.ArduinoYunAWSIoTDynamodb+aws_iot_config.h— основной скетч для AWS.
Схемы
Две варианта визуализации (Fritzing / схема): подключение Grove-датчиков к A0–A2, LED на D2 через 330 Ом.
Производственный процесс
- Освоение операторов using в C#: импорт, псевдонимы и статические директивы
- Удалённый мониторинг погоды на Raspberry Pi 3 с PubNub
- Создание кнопки AWS IoT с управлением движением на Raspberry Pi, PIR-датчике и MQTT
- Повысьте эффективность операций: IoT-мониторинг резервуаров для более безопасного, умного и прибыльного управ…
- Передовая IoT-система с ИИ для ультра-раннего обнаружения лесных пожаров и мониторинга здоровья деревьев
- IoT-система удаленного мониторинга нефте- и дизельных баков
- 8 ключевых преимуществ IoT-мониторинга веса автопарка
- Как IoT-мониторинг активов повышает безопасность и эффективность в нефтегазе
- Революция в управлении молочным производством с IoT-мониторингом уровня молока
- Умная IoT-система мониторинга рек: улучшение водного управления и предотвращение наводнений