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 функції ми вже знаємо, що в функцію можна передавати багато змінних, а..

Універсальна плата під мікросхеми SOP20, SSOP20

Універсальна плата під мікросхеми SOP20, SSOP20

Універсальна монтажна плата, дозволяє проводити монтаж різноманітних мікросхем з поверхневим монтаже..

17.36грн.

SIM800 Arduino автоматичні команди

SIM800 Arduino автоматичні команди

Привіт друзі! Минулого відео ми розібрали ручне управління GSM-модулем набираючи команди в моніторі ..

Гвинт М2х20мм оцинкований

Гвинт М2х20мм оцинкований

Гвинт оцинкований з різьбою М2 для кріплення елементів любительських проектівДовжина різьби 20 мм..

3.68грн.

SMD світлодіод 0603

SMD світлодіод 0603

SMD світлодіоди видимого діапазону для поверхневого монтажу на плату Типорозмір 0603 Червоний 619 ..

2.10грн.