Как самостоятельно собрать систему оповещения о задымлении с отправкой пуш-уведомления на смартфон через ESP32 и датчик дыма?
Сборка системы оповещения о задымлении на базе ESP32 — это реальный проект для начинающего IoT-разработчика. Ниже описан полный процесс от выбора компонентов до получения уведомления на смартфон.
## Необходимые компоненты
— Плата ESP32 (например, ESP32 DevKit v1)
— Датчик дыма MQ-2 или MQ-135 (аналоговый/цифровой выход)
— Резистор 10 кОм (при необходимости)
— Макетная плата и провода
— Блок питания 5В (USB или внешний)
## Схема подключения
Датчик MQ-2 имеет четыре вывода: VCC, GND, DO (цифровой) и AO (аналоговый).
— VCC → 3.3В или 5В ESP32
— GND → GND ESP32
— AO → GPIO34 (аналоговый вход ESP32)
— DO → GPIO26 (цифровой вход, опционально)
Если используется только цифровой выход, порог срабатывания регулируется потенциометром на плате датчика.
## Сервис пуш-уведомлений
Для отправки уведомлений удобнее всего использовать **Telegram Bot API** или сервис **Pushover**. Рассмотрим Telegram как бесплатный вариант:
1. Создайте бота через @BotFather и получите токен.
2. Узнайте свой chat_id через @userinfobot.
3. Установите библиотеку **UniversalTelegramBot** и **ArduinoJson** в Arduino IDE.
## Код для ESP32 (Arduino IDE)
cpp
#include
#include
#include
const char* ssid = «ВАШ_WIFI»;
const char* password = «ВАШ_ПАРОЛЬ»;
const char* botToken = «ВАШ_ТОКЕН»;
const String chatId = «ВАШ_CHAT_ID»;
#define SMOKE_PIN 34
int threshold = 1500; // порог срабатывания
bool alarmSent = false;
WiFiClientSecure client;
UniversalTelegramBot bot(botToken, client);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setInsecure();
Serial.println(«WiFi подключён»);
}
void loop() {
int smokeLevel = analogRead(SMOKE_PIN);
Serial.println(smokeLevel);
if (smokeLevel > threshold && !alarmSent) {
bot.sendMessage(chatId, «⚠️ ВНИМАНИЕ! Обнаружено задымление!», «»);
alarmSent = true;
}
if (smokeLevel < threshold — 200) {
alarmSent = false; // сброс после нормализации
}
delay(2000);
}
## Калибровка датчика
Перед использованием датчик MQ-2 нужно прогреть 24–48 часов. Откройте Serial Monitor и запишите показания в чистом воздухе — это ваш базовый уровень. Порог задымления обычно в 2–3 раза выше базового значения.
## Советы по надёжности
— Добавьте сторожевой таймер (watchdog) для перезагрузки при зависании.
— Используйте глубокий сон ESP32 для экономии энергии при питании от батареи.
— Разместите датчик ближе к потолку — дым поднимается вверх.
— Для критичных применений используйте два датчика для исключения ложных срабатываний.
Система полностью рабочая, не требует облачных подписок и легко расширяется: можно добавить сирену, реле, датчик температуры или веб-интерфейс.
