Умная теплица IoT на Arduino и Azure: датчики, автополив и удалённый контроль
Компоненты и материалы
- Arduino UNO — 1 шт.
- Seeed Base Shield V2 — 1 шт.
- Grove Relay — 1 шт. (управление насосом)
- Grove Temperature Sensor — 1 шт.
- Helium Starter Kit (Legacy): Atom + Element + Arduino Breakout — 1 шт.
- Дополнительные Grove-датчики: влажность почвы, UV-свет, OLED-дисплей
- Перекачка воды: перостальный насос 12 В + внешний БП
Программное обеспечение и облачные сервисы
- Arduino IDE
- Helium Network Dashboard
- Microsoft Azure: IoT Hub, SQL Database, Functions (C#), App Service
- Visual Studio 2015+ (для Azure Functions)
Архитектура решения
Arduino + Helium Atom → (LoRaWAN) → Helium Element (Access Point) → Helium Hub → (MQTT/HTTPS) → Azure IoT Hub → Event Hub → Azure Function (C#) → Azure SQL. Обратный путь: HTTP-trigger Function → мобильное приложение / Alexa.
Вся инфраструктура — serverless, код только на Arduino и в Azure Functions.
Пошаговая настройка
1. Регистрация в Helium Network
- Добавьте Atom и Element в Helium Dashboard.
- Создайте канал «Azure IoT App».
2. Подключение датчиков к Arduino
Base Shield на UNO → Grove-модули: Temperature (I2C), Moisture (A0), UV Light (A1), Relay (D5), OLED (I2C). Helium Atom на Breakout → Serial1 (Hardware Serial).
3. Настройка Azure IoT Hub
- Создайте IoT Hub (Standard/Free tier).
- Shared Access Policies → RegistryReadWrite → Connection String (Primary Key).
- Создайте устройство (Device ID).
4. Связь Helium Hub ↔ Azure IoT Hub
- В Helium Dashboard: Connections → New → вставьте Connection String IoT Hub.
- MQTT-топики генерируются автоматически.
- Проверка:
helium channel send 1 "Hello Azure"→ видно в IoT Hub Metrics.
5. Azure SQL Database
- Создайте БД (Basic tier).
- Таблица
SmartPlant: Id, Temperature, Humidity, Moisture, UVLight, DateCreated. - Скопируйте Connection String (ADO.NET).
6. Azure Function App (Event Hub Trigger → SQL Insert)
// C# Function: вставка телеметрии в SQL
public static async Task Run(string myIoTHubMessage, TraceWriter log) {
var map = myIoTHubMessage.Split('&').Select(x => x.Split('='))
.ToDictionary(x => x[0], x => x[1]);
string Temp = map["Temperature"];
string Hum = map["Humidity"];
string Moist = map["Moisture"];
string UV = map["UVLight"];
var str = ConfigurationManager.ConnectionStrings["sqldb_connection"].ConnectionString;
using (var conn = new SqlConnection(str)) {
conn.Open();
var sql = "INSERT INTO dbo.SmartPlant (Temperature, Humidity, Moisture, UVLight) VALUES (" +
Temp + ", " + Hum + ", " + Moist + ", " + UV + ");";
using (var cmd = new SqlCommand(sql, conn)) {
var rows = await cmd.ExecuteNonQueryAsync();
log.Info($"{rows} rows inserted");
}
}
}
7. Azure Function (HTTP Trigger → GET последних данных)
// C# Function: чтение последних 100 записей для мобильного приложения
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) {
var str = ConfigurationManager.ConnectionStrings["sqldb_connection"].ConnectionString;
using (var conn = new SqlConnection(str)) {
conn.Open();
var sql = "SELECT TOP 100 Temperature, Moisture, UVLight, Humidity FROM dbo.SmartPlant ORDER BY DateCreated DESC";
using (var cmd = new SqlCommand(sql, conn)) {
var reader = await cmd.ExecuteReaderAsync();
// сериализация в JSON...
}
}
}
8. Arduino-скетч (основной цикл)
// Основные действия каждые 60 сек:
// 1. Чтение датчиков (усреднение 32 отсчёта)
// 2. Отправка строки "Moisture=X&UVLight=Y&Temperature=Z&Humidity=W" в Helium Channel
// 3. Отображение на OLED
// 4. Автополив: если Moisture < 100 → Relay ON 5 сек → OFF
Полный код доступен в репозитории: GitHub.
9. Мобильное приложение / UI
Простое Android-приложение опрашивает HTTP Function каждые 60 сек, показывает 4 параметра и кнопку ручного полива.
Дополнительно: Alexa Integration
Голосовое управление поливом и запрос состояния через Alexa Skill, связанный с HTTP Function.
Схема Helium → Azure
Производственный процесс
- Умные данные: навигация по следующей границе IoT и Big Data
- Умное мусорное ведро: клеточное IoT-решение для автоматизированного управления отходами
- Умный бармен: создайте свою Raspberry Pi-станцию для коктейлей
- GE Appliances открыл умный холодильный завод Индустрии 4.0 в Декатуре, Алабама
- Умные больницы будущего: Критическая роль интеллектуального ПО
- Как умные города используют IoT, микросервисы и дашборды для эффективного управления активами
- Максимизация ROI от IoT-инвестиций: практическое руководство
- Создание оптимизированного умного склада на базе надежной IoT-экосистемы
- Защитите свои умные устройства: лучшие практики безопасности IoT
- Исследование передовых IoT-инноваций и реальных применений