ESP8266 NodeMCU і датчик вологості грунту: розумна рослина просить воду через telegram

В даній статті описую як підключити датчик вологості грунту до мікроконтролера ESP8266 NodeMCU і налаштовую сповіщення через telegram бот у випадку зниження показників вологості.

Ідея

Задум полягає в тому, щоб розробити автономний IoT пристрій, який буде мати доступ до мережі інтернет та може моніторити покази датчика вологості грунту домашньої рослини, і при необхідності надсилатите повідомлення мені в telegram, нагадуючи про те, що потрібно полити рослинку. Моя реалізація це компіляція кількох проектів, посилання на які можна знайти в кінці публікації.

Компоненти для проекту

ESP8266 NodeMCU

ESP8266 NodeMCU – це популярна платформа для розробки проектів Інтернету речей (IoT) на базі мікроконтролера ESP8266. Вона призначена для підключення пристроїв до Wi-Fi мереж та Інтернету. Основні переваги цієї платформи:

  1. Вбудований Wi-Fi: Наявність вбудованого Wi-Fi дозволяє легко підключати пристрої до мереж та керувати ними віддалено через Інтернет.
  2. Компактний розмір: Невеликий розмір плати NodeMCU дозволяє використовувати її в малих пристроях та вбудованих системах.
  3. Підтримка Arduino IDE: Платформа підтримує Arduino IDE, що робить розробку програмного забезпечення зручною та доступною.
  4. Низька вартість: ESP8266 NodeMCU – це бюджетний варіант для створення IoT-проектів, що робить його доступним для широкого кола розробників.
  5. Широкі можливості: Платформа має велику кількість цифрових та аналогових входів/виходів, що дозволяє підключати різноманітні датчики, виводити інформацію на дисплеї та керувати актуаторами.

ESP8266 NodeMCU є популярним інструментом для розробки різноманітних IoT-проектів завдяки своїм функціональним можливостям, легкості використання та доступності.

Датчик вологості грунту

Датчик Capacitive Soil Moisture Sensor v1.2 – це електронний датчик, призначений для вимірювання вологості ґрунту за допомогою ємнісного методу. Він широко використовується в сільському господарстві, садівництві, тепличних умовах та інших додатках, де важливо контролювати рівень вологості ґрунту для оптимального зростання рослин.

Основні характеристики датчика Capacitive Soil Moisture Sensor v1.2:

  1. Принцип роботи: Датчик вологості грунту використовує принцип зміни ємності конденсатора, що утворюється між двома металевими пластинами. Чим більше вологи у ґрунті, тим більше ємність конденсатора.
  2. Аналоговий вихід: Датчик має аналоговий вихід, який може бути підключений до мікроконтролера, такого як Arduino або ESP8266 NodeMCU, для зчитування значень вологості та подальшої обробки даних.
  3. Низька енергоспоживання: Датчик використовує невелику кількість енергії, що дозволяє йому працювати довгий час від батарейного живлення.
  4. Проста установка: Його можна легко встановити у ґрунт або контейнер для рослин, і він почне надсилати дані про вологість.
  5. Калібрування: Датчик може бути калібрований для конкретних типів ґрунту, що дозволяє отримати більш точні результати вимірювань.
  6. Надійність: Датчик вологості грунту Capacitive Soil Moisture Sensor v1.2 відомий своєю надійністю та стабільністю в роботі.

Цей датчик є корисним інструментом для тих, хто займається вирощуванням рослин та хоче забезпечити їх оптимальну вологість для здорового росту. Завдяки його простоті використання та надійності вимірювань, він знаходить широке застосування у сільському господарстві та садівництві.

Підключаємо датчик вологості грунту

Схема підключення датчика вологоств грунту до мікроконтролера є простою і наведена нижче.

nodemcu Capacitive Soil Moisture Sensor v1.2

Програмне забезпечення

Створення телеграм-бота

Для початку нам потрібно створити чат-бот і отримати його токен. Як це зробити я описував у публікації по Rarspberry Pi і ви можете знайти деталі тут. Потім підставимо токен у програмному коді для параметра BOTtoken.

Також нам потрібен ідентифікатор свого користувача у телеграм. Для цього в пошуку додатка telegram напишіть IDBot і в чаті напишіть /start та /getid.

telegram user id

Цей ідентифікатор підставимо у параметр CHAT_ID в програмному коді.

Необхідні бібліотеки

Я використовував Universal Telegram Bot Library створену Brian Lough. Бібліотека надає простий інтерфейс до Telegram Bot API. Після завантаження бібліотеки імпортував її у Arduino IDE за допомогою Sketch Include Library > Add.ZIP Library... Також нам необхідна ArduinoJson. Інсталювати її можна в Arduino IDE: Sketch Include Library > Manage Libraries, набрати в пошуку “ArduinoJson” та інсталювати бібліотеку.

Програмний код

/*
 * This ESP8266 NodeMCU code was developed by newbiely.com
 *
 * This ESP8266 NodeMCU code is made available for public use without any restriction
 *
 * For comprehensive instructions and wiring diagrams, please visit:
 * https://newbiely.com/tutorials/esp8266/esp8266-soil-moisture-sensor
*/
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>

#define AOUT_PIN A0 // The ESP8266 pin ADC0 that connects to AOUT pin of moisture sensor
#define THRESHOLD 530 // CHANGE YOUR THRESHOLD HERE

// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

// Initialize Telegram BOT
#define BOTtoken "XXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" // your Bot Token (Get from Botfather)

// Use @myidbot to find out the chat ID of an individual or a group
// Also note that you need to click "start" on a bot before it can
// message you
#define CHAT_ID "XXXXXXXXXX"

X509List cert(TELEGRAM_CERTIFICATE_ROOT);
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);

void setup() {
  Serial.begin(115200);
  configTime(0, 0, "pool.ntp.org"); // get UTC time via NTP
  client.setTrustAnchors(&cert); // Add root certificate for api.telegram.org

  // Attempt to connect to Wifi network:
  Serial.print("Connecting Wifi: ");
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  bot.sendMessage(CHAT_ID, "Bot started up", "");

}

void loop() {
  int value = analogRead(AOUT_PIN); // read the analog value from sensor

  if (value > THRESHOLD) {
    Serial.print("The soil is DRY (");
    bot.sendMessage(CHAT_ID, "The soil is DRY!! Please water Me!", "");
  }
  else {
    Serial.print("The soil is WET (");
    bot.sendMessage(CHAT_ID, "The soil is WET. I'm good, thanks :)", "");
  }

  Serial.print(value);
  Serial.println(")");
  delay(20000);
}

Результат

датчик вологості грунту

telegram bot notifications

esp8266 NodeMCU датчик вологості грунту

telegram

Наступним етапом може бути автоматичне поливання рослини, але це вже тема для нової статті 🙂

Мені були дуже корисними публікації:
https://newbiely.com/tutorials/esp8266/esp8266-soil-moisture-sensor
https://randomnerdtutorials.com/telegram-esp8266-nodemcu-motion-detection-arduino/

 

Spread the love

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *