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-бота — это доступный способ организовать удалённое управление и мониторинг ваших устройств без сложных серверов и облачных платформ. Такой подход можно легко масштабировать: добавить новые команды, подключить датчики, расширить систему безопасности. Даже новичок сможет собрать работающий проект за один вечер.
ATtiny обзор контроллеров
Обозначение Память программ (FLASH) [Kбайт] Память данных [байт] Kол-во линий ввода/..
Защита входов и аналоговых сигналов: как не спалить Arduino/ESP32 и получить стабильные измерения
Защита входов и аналоговых сигналов: как не спалить Arduino/ESP32 и получить стабильные измерения ..
ESP32: Высокоточные измерения сигналов с помощью таймеров
ESP32: Высокоточные измерения сигналов с помощью таймеров ESP32 оснащён мощными аппаратными тайме..
Монтажный шилд для NodeMcu ESP8266
Монтажный модуль расширения для WiFi контроллера NodeMcu ESP8266Позволяет выполнять монтаж прое..
90.58грн.
Двигатель 12В с редуктором 10RPM
Коллекторный двигатель постоянного тока с сильным редуктором для использования в различной робототех..
517.43грн.





