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-бота — это доступный способ организовать удалённое управление и мониторинг ваших устройств без сложных серверов и облачных платформ. Такой подход можно легко масштабировать: добавить новые команды, подключить датчики, расширить систему безопасности. Даже новичок сможет собрать работающий проект за один вечер.
Стабилитроны: принцип работы, характеристики и применение в электронике
Стабилитрон: что это и как он работает Стабилитрон (англ. Zener diode) — это полупр..
ESP32 WiFi плата контроллера с винтовыми клеммниками
Плата микроконтроллера ESP32-WROOM-32 с винтовыми клеммниками. Разработана для обеспечения быстрого ..
486.45грн.
Обмен данными между двумя Arduino при помощи программного UART
Обмен данными между двумя Arduino при помощи программного UARTКоммуникация по последовательному порт..
Оптопара EL817 SMD
Оптопара с транзистором на выходеПрименяется для гальванической развязки дискретного сигнала, а так ..
4.28грн.
Датчик напряжения сети 220В
Гальванически изолированный датчик наличия напряжения в сети 220ВНапряжение питания логики 3 ... 5 В..
106.67грн.




