Беспроводной датчик влажности почвы на Helium + DFRobot — уход за растениями в реальном времени
Компоненты и материалы
- Helium Atom XBee Module — 1 шт. (LoRaWAN-эндпоинт)
- Helium Element Access Point — 1 шт. (шлюз/горячая точка)
- DFRobot Gravity: Analog Capacitive Soil Moisture Sensor (SEN0193) — 1 шт.
- Helium Arduino/mbed Adapter — 1 шт.
- Arduino UNO — 1 шт. (или совместимая плата)
Сервисы
- Arduino IDE
- Helium Dashboard (управление устройствами, каналами, данными)
О проекте
Растения умирают от недостатка полива. Этот прототип дает им «голос»: емкостной датчик влажности + Helium LoRaWAN сеть = данные на дашборде в реальном времени. Время сборки ~60 мин.
Что охвачено
- Сборка зонда: DFRobot датчик + Helium Atom + Adapter + Arduino.
- Регистрация Element и Atom в Helium Dashboard — своя LoRaWAN сеть за 30 сек.
- Программирование через Arduino IDE: библиотеки
HeliumиArduinoJson. - Отправка данных (JSON: значение ADC + процент влажности) в Helium HTTP Channel (можно перенаправить в IFTTT, AWS, Google Cloud, Azure, MQTT).
Сборка зонда
- Вставьте Atom в Adapter, затем в Arduino. Настройте джамперы RX/TX под вашу плату (см. документацию Helium).
- Подключите датчик 3-проводным шлейфом к Adapter:
- Черный (GND) -> GND
- Красный (VCC) -> 5V
- Синий (Signal) -> AD0
- Белый коннектор шлейфа вставьте в датчик DFRobot.
Развертывание Helium Element
Вставьте в розетку + Ethernet (или Cellular). Ждите зеленый (Ethernet) или бирюзовый (Cellular) светодиод. Элемент создает зону покрытия для Atom.
Регистрация в Helium Dashboard
- Создайте аккаунт.
- New Atom: имя (напр. «Fern Saver»), последние 4 цифры MAC, 4-значный HVV код.
- New Element: то же + местоположение на карте.
- Проверьте Status & Signal — должен быть Online.
HTTP Channel (пример с requestb.in)
Channels — готовые коннекторы к веб-сервисам. Создайте HTTP Channel в Dashboard, укажите URL (напр. requestb.in). В коде имя канала CHANNEL_NAME "HTTP".
Настройка Arduino IDE и загрузка скетча
- Установите библиотеки: Helium и ArduinoJson (Sketch → Include Library → Manage Libraries).
- Создайте новый скетч, вставьте код
Soil_Humidity.ino(полный код ниже). - Подключите USB, нажмите Upload. LED на Atom начнут мигать — подключение к сети.
Код (Soil_Humidity.ino)
#include "Board.h"
#include
#include
#include
#include
#define CHANNEL_NAME "HTTP" // Имя канала в Dashboard
#define CHANNEL_DELAY 5000 // Чтение каждые 5 сек
#define CHANNEL_SEND_CYCLE 12 // Отправка каждые 12 циклов (60 сек)
Helium helium(&atom_serial);
Channel channel(&helium);
int channel_counter;
void report_status(int status, int result = 0) { /* ... */ }
void connect() { while (!helium.connected()) { /* ... */ } }
void channel_create(const char * name) { /* ... */ }
void channel_send(const char * name, void const * data, size_t len) { /* ... */ }
void setup() {
Serial.begin(9600);
helium.begin(HELIUM_BAUD_RATE);
channel_create(CHANNEL_NAME);
channel_counter = 0;
}
#define DRY_VALUE 536 // В воздухе (сухо)
#define WET_VALUE 303 // В воде (мокро)
#define HUM_RANGE (DRY_VALUE - WET_VALUE)
void loop() {
float reading = analogRead(A0);
float percent = 100 * (1 - (reading - WET_VALUE) / HUM_RANGE);
Serial.print("Reading - "); Serial.print(reading); Serial.print(" - "); Serial.println(percent);
if (--channel_counter <= 0) {
StaticJsonBuffer jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
root["value"] = reading;
root["percent"] = percent;
char buffer[HELIUM_MAX_DATA_SIZE];
size_t used = root.printTo(buffer, HELIUM_MAX_DATA_SIZE);
channel_send(CHANNEL_NAME, buffer, used);
channel_counter = CHANNEL_SEND_CYCLE;
}
delay(CHANNEL_DELAY);
}
Данные (JSON)
{ "value": 433, "percent": 55.5 }
Калибровка: DRY_VALUE (в воздухе) и WET_VALUE (в воде) подбираются экспериментально для вашей почвы/датчика.
Проверка в Helium Dashboard
- Atom UI → Status & Signal (онлайн/оффлайн, RSSI).
- Event Log — каждая точка данных, статус доставки в Channel.
- Debug — поток чтений в реальном времени (после включения).
Дальнейшие шаги
- Helium Developer Documentation / Slack / Forum.
- Интеграция с IFTTT → SMS/Email при низкой влажности.
- Солнечная панель + LiPo для автономной работы.
- Множественные зонды на один Element.
Производственный процесс
- Датчики влажности почвы: принцип работы и практические применения
- Интегрированная система контроля доступа с QR, RFID и верификацией температуры
- Построение низкобюджетного датчика влажности почвы на Raspberry Pi для умного полива
- Создайте автоматизированную аэропоническую систему с Raspberry Pi и датчиком влажности
- Создание робота на Raspberry Pi и Python: полное руководство
- Устойчивый успех: уроки упорства от Авраама Линкольна и лидерства в ТО
- Интеграция термопары с Arduino Portenta H7 через MAX6675
- Точное управление сервоприводом через MPU6050 (Arduino, SG90, MG996R)
- Модуль GPS u-blox LEA-6H 02: Интеграция с Arduino и Python
- ИИ-усиленные цифровые камеры революционизируют мониторинг влажности почвы