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

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

ESP32 та Telegram-бот: віддалене керування через інтернет Мікроконтролер ESP32 має вбудований W..

HTTP запит через GSM GPRS модуль NEOWAY M590

HTTP запит через GSM GPRS модуль NEOWAY M590

Постановка задачі. В цьому проекті подивимося на практичний приклад відправлення http get запиту за..

Лінійний кроковий двигун - що це?

Лінійний кроковий двигун - що це?

Лінійний кроковий двигун Привіт друзі! Мені випала вдала можливість познайомити вас з, що розрива..

Arduino SIM800 управління реле за вихідним дзвінком

Arduino SIM800 управління реле за вихідним дзвінком

Пропоную вашій увазі приклад простого застосування можливостей SIM800 під час вихідного дзвінка. В р..

Автоматичне керування твердопаливним котлом Arduino Nano

Автоматичне керування твердопаливним котлом Arduino Nano

Предмет проекту домашньої автоматики Вашій увазі пропонується великий проект - автоматичний щит..