
Интернет-магазин «Неглупый Дом»
В другом проекте на сайте KY-026 только подаёт звуковой сигнал при обнаружении огня. Здесь датчик идёт дальше — через реле он немедленно обесточивает сам потенциально опасный прибор (например, обогреватель или паяльник на подставке), а не просто предупреждает человека, который может не успеть среагировать.
Принцип обнаружения тот же, что и в проекте с зуммером: KY-026 реагирует на характерный ИК-спектр открытого пламени (760-1100 нм) и выдаёт на цифровом выходе простое "огонь обнаружен / не обнаружен". Разница этого проекта — не в датчике, а в том, что происходит при срабатывании: вместо включения звука код снимает питание с реле, которое держит включённым контролируемый прибор в обычном режиме, то есть логика инвертирована относительно привычной "нормально выключено, включаем по сигналу" — здесь "нормально включено, выключаем по тревоге".
Как и в проекте с защитой по превышению тока на INA226, здесь важно решение держать прибор отключённым до вмешательства человека, а не включать его автоматически обратно сразу после пропадания сигнала огня — пожароопасная ситуация должна быть осмотрена, а не просто подождать, пока датчик перестанет видеть пламя (например, если огонь просто на мгновение скрылся из поля зрения датчика, а не был потушен).
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему. Полярность сигнала
// (огонь = HIGH или LOW) проверьте на своём экземпляре платы. Это учебный
// проект, демонстрирующий принцип, а не сертифицированная противопожарная защита.
const int SENSOR_PIN = 2;
const int RELAY_PIN = 4;
bool tripped = false;
void setup() {
Serial.begin(9600);
pinMode(SENSOR_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH); // прибор включён в обычном режиме
}
void loop() {
if (tripped) {
digitalWrite(RELAY_PIN, LOW); // держим прибор отключённым после срабатывания
return;
}
bool flameDetected = (digitalRead(SENSOR_PIN) == LOW); // у большинства модулей LOW = огонь обнаружен
if (flameDetected) {
tripped = true;
digitalWrite(RELAY_PIN, LOW);
Serial.println("ОГОНЬ! Прибор отключён.");
}
delay(100);
}
Дополнительных библиотек не требуется — только `digitalRead()`. Как и в похожих защитных проектах на сайте, после срабатывания прибор остаётся отключённым до перезагрузки Arduino — осознанное решение безопасности, а не ошибка в коде.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 178 ₽ 160 ₽ (экономия 18 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.