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-бота — це доступний спосіб організувати віддалене керування та моніторинг ваших пристроїв без складних серверів чи хмарних платформ. Такий підхід можна легко масштабувати: додати нові команди, підключити датчики, розширити систему безпеки. Навіть початківець зможе зібрати робочий проєкт за один вечір.
Arduino повернення більше однієї змінної функції
Привіт друзі! З відео Arduino функції ми вже знаємо, що в функцію можна передавати багато змінних, а..
Універсальна плата під мікросхеми SOP20, SSOP20
Універсальна монтажна плата, дозволяє проводити монтаж різноманітних мікросхем з поверхневим монтаже..
17.36грн.
SIM800 Arduino автоматичні команди
Привіт друзі! Минулого відео ми розібрали ручне управління GSM-модулем набираючи команди в моніторі ..
Гвинт М2х20мм оцинкований
Гвинт оцинкований з різьбою М2 для кріплення елементів любительських проектівДовжина різьби 20 мм..
3.68грн.
SMD світлодіод 0603
SMD світлодіоди видимого діапазону для поверхневого монтажу на плату Типорозмір 0603 Червоний 619 ..
2.10грн.





