
Интернет-магазин «Неглупый Дом»
MQ-2 реагирует на дым и бытовой газ, а при превышении порога Arduino включает и звуковой сигнал, и реле вытяжного вентилятора.
MQ-2 — газоанализатор на полупроводниковом чувствительном элементе: внутри металлического корпуса датчика находится небольшой нагревательный элемент и слой материала (диоксид олова), электрическое сопротивление которого меняется в присутствии определённых газов — дыма, пропана, бутана, метана и паров некоторых других горючих веществ. Чем выше концентрация газа в воздухе рядом с датчиком, тем сильнее меняется его сопротивление, а значит — меняется и напряжение на аналоговом выходе AO, которое Arduino считывает как число от 0 до 1023.
Важная особенность датчиков серии MQ — им требуется "прогрев": нагревательному элементу нужно какое-то время выйти на рабочую температуру, и в первые минуты после включения показания нестабильны и завышены. Именно поэтому порог срабатывания (`threshold`) нельзя жёстко прописать "на глаз" — его нужно подобрать индивидуально для конкретного экземпляра датчика и условий помещения, уже после прогрева.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
const int gasPin = A0; // аналоговый выход датчика MQ-2
const int buzzerPin = 8; // пин зуммера
const int relayPin = 7; // пин управления реле вентилятора
const int threshold = 400; // подберите под свой датчик после прогрева
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(relayPin, OUTPUT);
Serial.begin(9600); // монитор порта нужен, чтобы подобрать порог threshold
}
void loop() {
int value = analogRead(gasPin); // читаем аналоговое значение с датчика (0-1023)
Serial.println(value); // выводим для подбора порога
if (value > threshold) {
digitalWrite(buzzerPin, HIGH); // превышение — включаем сигнал
digitalWrite(relayPin, HIGH); // и вентилятор
} else {
digitalWrite(buzzerPin, LOW);
digitalWrite(relayPin, LOW);
}
delay(500); // пауза между измерениями
}
Датчику нужно несколько минут прогрева после включения, прежде чем показания станут стабильными — порог `threshold` подбирайте только после прогрева, наблюдая за значениями в Serial-мониторе.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 3 товара сразу в корзину: 292 ₽ 263 ₽ (экономия 29 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.