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! Структура програми в Ardu..

Модуль Bluetooth SPP-C

Модуль Bluetooth SPP-C

Протокол зв'язку : Bluetooth специфікація v2.1+EDRРадіус дії : до 10 метрів (рівень потужності 2)Нап..

112.48грн.

Оптопара PC817C

Оптопара PC817C

Оптопара з відкритим колектором в корпусі DIP-4..

3.52грн.

Стійка нейлонова М3 12мм + 6мм

Стійка нейлонова М3 12мм + 6мм

Стійка для кріплення усіляких електронних модулів до корпусу пристроюВисота стійки 12 ммДовжина зовн..

5.18грн.

Цифровий вольтметр + амперметр 100В 10А

Цифровий вольтметр + амперметр 100В 10А

Цифровий вольтметр та амперметр постійного струмуДіапазон вимірювання напруги 0 ...100 ВДіапазон вим..

127.39грн.