ESP32 та Telegram-бот: віддалене керування через інтернет

Мікроконтролер ESP32 має вбудований Wi-Fi та дозволяє легко підключати пристрої до інтернету. Одним із найзручніших способів взаємодії з «розумним домом» або IoT-пристроями є використання Telegram-бота. У цій статті ми створимо простий проєкт, який дозволить керувати ESP32 за допомогою команд у Telegram.

Необхідне обладнання

  • Плата ESP32 DevKit (WROOM або WROVER)
  • Реле-модуль на 5 В (для керування навантаженням)
  • Світлодіод і резистор 220 Ом (для індикації)
  • Живлення 5 В для ESP32
  • Wi-Fi мережа з доступом в інтернет
  • Обліковий запис Telegram і створений бот через @BotFather

Принцип роботи

ESP32 підключається до Wi-Fi та за допомогою бібліотеки UniversalTelegramBot отримує команди від користувача. Команди надсилаються в Telegram-бот, бот передає їх на ESP32, а той вмикає або вимикає навантаження (реле чи світлодіод).

Компонент Підключення до ESP32
Світлодіод GPIO 2 через резистор 220 Ом
Реле-модуль GPIO 5 (IN), VCC 5 В, GND

Приклад коду


// Приклад ESP32 + Telegram Bot
// Бібліотеки: WiFi, WiFiClientSecure, UniversalTelegramBot, ArduinoJson

#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>

const char* ssid     = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

// Токен, отриманий у BotFather
#define BOT_TOKEN "123456789:AA..."

// ID чату (можна дізнатися, написавши боту через @userinfobot)
#define CHAT_ID "987654321"

WiFiClientSecure secured_client;
UniversalTelegramBot bot(BOT_TOKEN, secured_client);

const int ledPin = 2;
const int relayPin = 5;
unsigned long lastTimeChecked;

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
  pinMode(relayPin, OUTPUT);

  // Підключення до Wi-Fi
  WiFi.begin(ssid, password);
  Serial.print("Підключення до WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi підключено!");
  secured_client.setInsecure(); // Вимикаємо перевірку TLS-сертифіката
}

void handleNewMessages(int numNewMessages) {
  for (int i = 0; i < numNewMessages; i++) {
    String chat_id = bot.messages[i].chat_id;
    String text = bot.messages[i].text;

    if (chat_id != CHAT_ID) continue; // Ігноруємо чужі чати

    if (text == "/led_on") {
      digitalWrite(ledPin, HIGH);
      bot.sendMessage(chat_id, "Світлодіод увімкнено", "");
    } 
    else if (text == "/led_off") {
      digitalWrite(ledPin, LOW);
      bot.sendMessage(chat_id, "Світлодіод вимкнено", "");
    } 
    else if (text == "/relay_on") {
      digitalWrite(relayPin, HIGH);
      bot.sendMessage(chat_id, "Реле увімкнено", "");
    } 
    else if (text == "/relay_off") {
      digitalWrite(relayPin, LOW);
      bot.sendMessage(chat_id, "Реле вимкнено", "");
    }
  }
}

void loop() {
  if (millis() - lastTimeChecked > 2000) { // Перевірка раз на 2 секунди
    int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    while (numNewMessages) {
      handleNewMessages(numNewMessages);
      numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    }
    lastTimeChecked = millis();
  }
}

Застосування та розширення проєкту

  • Керування світлом і побутовою технікою з будь-якої точки світу
  • Запит температури або вологості з датчиків через команду
  • Відправка сповіщень про тривогу (наприклад, при спрацюванні датчика руху)
  • Створення простого «розумного дому» на базі ESP32
  • Можливість додати авторизацію по ID чату для безпеки

Висновок

Зв’язка ESP32 та Telegram-бота — це доступний спосіб організувати віддалене керування та моніторинг ваших пристроїв без складних серверів чи хмарних платформ. Такий підхід можна легко масштабувати: додати нові команди, підключити датчики, розширити систему безпеки. Навіть початківець зможе зібрати робочий проєкт за один вечір.

<< Проекти << Усі товари >> Статті, уроки >>

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Драйвер крокового двигуна DRV8825 під шилд RAMPS

Драйвер крокового двигуна DRV8825 під шилд RAMPS

Драйвер DRV8825 крокового двигуна для системи RAMPS. Приєднується до спеціального шилду Arduino для ..

104.31грн.

Трансформатор струму 0-30А

Трансформатор струму 0-30А

Аналоговий датчик змінного струму силою до 30А. Це роз'ємний трансформатор струму з діаметром отвору..

261.79грн.

Припой-паста для пайки SMD-компонентів

Припой-паста для пайки SMD-компонентів

Паста-припой у шприці XG-Z40Намазується на контактні ділянки плати, плавиться при температурі > 1..

196.14грн.

Штекер Micro USB 2.0 розбірний

Штекер Micro USB 2.0 розбірний

Розбірний штекер мікро-USB з виводами під пайкуКолір чорний..

12.78грн.

Розумний дім #2: Wi-Fi керування лампочкою через реле

Розумний дім #2: Wi-Fi керування лампочкою через реле

Розумний дім #2: Wi-Fi керування лампочкою через реле Один із найпростіших і наочних проєкт..