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 размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Калькулятори для електронщиків та радіоаматорів

Калькулятори для електронщиків та радіоаматорів

Онлайн-калькулятори для розрахунку напруги, струму, опору, дільника напруги, резистора для світлодіо..

Що таке широтно-імпульсна модуляція (ШІМ) і як вона використовується в Arduino?

Що таке широтно-імпульсна модуляція (ШІМ) і як вона використовується в Arduino?

Що таке широтно-імпульсна модуляція (ШІМ) і як вона використовується в Arduino? Широт..

Монтажний модуль драйвера A4988 або DRV8825

Монтажний модуль драйвера A4988 або DRV8825

Модуль для встановлення одного з самих розповсюджених драйверів A4988 або DRV8825&nbs..

97.23грн.

3 безкоштовні MQTT-сервери для тестування ESP32

3 безкоштовні MQTT-сервери для тестування ESP32

3 безкоштовні MQTT-сервери для тестування ESP32 Під час розробки IoT-проєктів на ESP32 майже за..

Уроки Arduino константи для початківців

Уроки Arduino константи для початківців

Привіт, друзі! Я радий презентувати вам новий урок під назвою Arduino константи! Конста..