#376СреднийIoT

IoT-полив растений на ESP32 (датчик почвы + насос)

Пусть насос включается сам, когда земля в горшке пересыхает, а влажность почвы видна на телефоне вживую. Этот проект — пошаговое руководство к IoT-шаблону «Влажность почвы + насос» в приложении, собранному на ESP32, датчике влажности почвы, реле и мини-помпе для воды. Открой Мастерская › Устройства › Добавить устройство; Ohmi подготовит код с твоим собственным ключом устройства. Код на этой странице — пример: ключ и данные Wi-Fi в нём заглушки.

0.0(0)
IoT-полив растений на ESP32 (датчик почвы + насос)
Если не хочешь, чтобы растения страдали от жажды, пока тебя нет, этот проект для тебя. Датчик измеряет, насколько влажная почва; когда влажность падает ниже заданного порога, реле включает насос, а когда земля достаточно увлажнится, он останавливается. На телефоне из влажности складывается график, и оттуда же можно менять порог или запускать насос. Насос питается от собственных батареек, а не от платы, так что ты учишься разделять воду и электронику и безопасно подключать.
IoT · удалённое управлениеПервое устройство бесплатно

Управляй этим устройством из приложения

Подключи ESP32 или Raspberry Pi Pico W к Wi-Fi — и включай, выключай и смотри показания в реальном времени с телефона. Код готовит Ohmi, тебе остаётся ввести данные Wi-Fi и загрузить его.

Шаблон в приложении: Влажность почвы + насос

  • Где это в приложении?Добавь новое устройство на вкладке «Утилиты» или в разделе «Мастерская › Устройства» и выбери этот шаблон.
  • Библиотека ArduinoОткрой менеджер библиотек в Arduino IDE, найди BlueGraysIoT и установи её.
Скачать приложение бесплатно

В бесплатном плане — 1 устройство, 1 график и история за 24 часа. С Premium — больше устройств и графиков и более длинная история.

Схема

IoT-полив растений на ESP32 (датчик почвы + насос) - Circuit

Исходный код

C++ (Arduino IDE)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   IoT-полив растений на ESP32 (датчик почвы + насос)
4// ─────────────────────────────────────────
5// IoT-шаблон "Влажность почвы + насос" из приложения BlueGrays: датчик
6// влажности почвы измеряет каждые 2 секунды и отправляет значение в
7// приложение, реле запускает насос, когда влажность падает ниже порога
8// полива, и останавливает его на 10 пунктов выше; насосом и порогом можно
9// также управлять с телефона. Настоящий код Ohmi готовит в приложении с
10// твоим собственным ключом устройства (Мастерская › Устройства › Добавить
11// устройство); код здесь — пример, ключ устройства и данные Wi-Fi —
12// заглушки. Library Manager: BlueGraysIoT (с зависимостями). Плата
13// подключается только к сетям Wi-Fi 2.4 GHz. Реле срабатывает по LOW.
14// Безопасность: питай насос от собственного батарейного отсека (4 x AA), а
15// не от платы; держи плату, реле и батарейки подальше от воды в закрытой
16// коробке; никогда не включай насос всухую.
17//
18// Пины:
19//   GPIO34 -> AO датчика влажности почвы
20//   3V3, GND -> Датчик влажности почвы VCC, GND
21//   GPIO26 -> IN модуля реле
22//   5V, GND -> Модуль реле VCC, GND
23//   Реле COM -> батарейный отсек (+), NO -> насос (+), насос (-) -> батарейный отсек (-); насос
24//   работает от собственных 4 x AA Pico W: датчик влажности AO GP26, реле IN GP15
25
26/*
27 * Влажность почвы + насос · BlueGrays IoT
28 * BlueGrays · bluegrays.com
29 * Не делись этим кодом: в нём ключ твоего устройства и пароль Wi-Fi.
30 */
31
32#include <BlueGraysIoT.h>
33
34const char *DEVICE_KEY = "YOUR_DEVICE_KEY";
35const char *WIFI_NAME = "YOUR_WIFI_NAME";
36const char *WIFI_PASSWORD = "YOUR_WIFI_PASSWORD";
37
38BlueGraysIoT bg(DEVICE_KEY);
39
40const int RELAY_PIN = 26;
41const bool RELAY_ACTIVE_LOW = true;  // большинство модулей реле включаются по LOW
42void setRelay(bool on) { digitalWrite(RELAY_PIN, (on != RELAY_ACTIVE_LOW) ? HIGH : LOW); }
43const int SOIL_PIN = 34;
44const int SOIL_DRY = 3200;  // показание в сухой почве
45const int SOIL_WET = 1300;  // показание во влажной почве
46int threshold = 30; bool pump = false; unsigned long lastReadMs = 0;
47
48void setup() {
49  Serial.begin(115200);
50  pinMode(RELAY_PIN, OUTPUT);
51  setRelay(false);
52  analogReadResolution(12);
53  bg.onSwitch("pompa", [](bool on) { pump = on; setRelay(on); });
54  bg.onNumber("esik", [](float v) { threshold = (int)v; });
55  bg.setDeadband("toprak", 1.0);
56  bg.setDebug(Serial);
57  bg.setLanguage(BG_LANG_EN);
58  bg.begin(WIFI_NAME, WIFI_PASSWORD);
59}
60
61void loop() {
62  bg.loop();  // избегай здесь долгих вызовов delay()
63  if (millis() - lastReadMs >= 2000) {
64    lastReadMs = millis();
65    int pct = constrain(map(analogRead(SOIL_PIN), SOIL_DRY, SOIL_WET, 0, 100), 0, 100);
66    bg.send("toprak", pct);
67    // Включать насос ниже порога, выключать на 10 пунктов выше
68    if (pct < threshold && !pump) { pump = true; setRelay(true); bg.send("pompa", true); }
69    if (pct > threshold + 10 && pump) { pump = false; setRelay(false); bg.send("pompa", false); }
70  }
71}
72

Частые вопросы

Можно ли загрузить код с этой страницы прямо на плату?

Можно, но подключения не будет: ключ устройства и данные Wi-Fi в нём — заглушки. В приложении открой Мастерская › Устройства › Добавить устройство и выбери шаблон «Влажность почвы + насос»; Ohmi подготовит код с твоим ключом, именем сети и паролем. Скопируй этот код и загрузи его. Полный код позже можно посмотреть в разделе Устройство › Код и ключ.

Работает ли это с Pico W?

Да. При добавлении устройства выбери плату Pico W; код остаётся тем же, меняются только пины и значения калибровки: датчик влажности идёт к GP26 (аналоговый вход), а реле — к GP15. В Arduino IDE установи пакет «pico» из менеджера плат. Схема и фото на этой странице сделаны с ESP32.

Почему у насоса свои батарейки?

Ток, который потребляет насос, и помехи от его мотора могут перезапустить плату. Поэтому насос питается от отсека на 4 x AA и проходит только через клеммы COM и NO реле; проводами с платой он не связан. Держи плату, реле и батарейный отсек подальше от воды в закрытом корпусе, а места соединения проводов — сухими. Насос должен работать только под водой; всухую он нагревается и выходит из строя за несколько минут. Вынимай батарейки, пока надеваешь шланг или достаёшь насос из воды.

Когда работает насос и что будет, если переключить его вручную?

Плата измеряет влажность каждые 2 секунды. Когда она падает ниже «Порога полива» в приложении (сначала 30%), насос включается, а выключается на 10 пунктов выше порога; этот промежуток не даёт насосу щёлкать туда-сюда. Переключатель «Насос» можно нажать и вручную, но побеждает автоматическое правило: если выключить его, когда почва ниже порога, он снова включится в течение 2 секунд, а если включить, когда почва на 10 пунктов выше порога, он сразу выключится. Подбери порог под свой горшок.