
Интернет-магазин «Неглупый Дом»
MQ-6 — датчик из семейства MQ, но в отличие от более универсального MQ-2 (дым, горючие газы общего назначения) он специально чувствителен к пропану, бутану и изобутану — то есть к бытовому газу, баллонам и аэрозолям. В этом проекте показания сенсора выводятся в реальном времени на LCD1602 через нераспаянный I2C-переходник, а не просто включают зуммер по порогу, как в типичных газовых сигнализациях.
MQ-6, как и остальные датчики серии MQ, — это резистивный химический сенсор: внутри находится чувствительный слой оксида металла, сопротивление которого падает при контакте с молекулами целевых газов. Arduino не измеряет сопротивление напрямую, а считывает напряжение на делителе, в который включён сенсор — поэтому значение `analogRead()` растёт при увеличении концентрации пропана/бутана в воздухе вокруг датчика, но само по себе число от 0 до 1023 — это относительный уровень, а не готовая концентрация в ppm. Для точного перевода в ppm нужна калибровка по известной концентрации газа с построением кривой по паспорту датчика, поэтому в этом проекте показания честно представлены как сравнительный индикатор ("выше/ниже обычного фона"), а не как точный газоанализатор.
Важная особенность датчиков MQ — встроенный нагревательный элемент, которому требуется время на прогрев: первые секунды и минуты после включения показания нестабильны и завышены, а полная стабилизация чувствительности у датчиков этого семейства обычно происходит ощутимо дольше (производители указывают десятки часов "прожига" для самой точной работы, но для демонстрации принципа достаточно нескольких минут прогрева перед тем, как ориентироваться на показания).
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int MQ6_PIN = A0;
LiquidCrystal_I2C lcd(0x27, 16, 2); // адрес на шине I2C может отличаться, проверьте скетчем-сканером I2C
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("MQ-6 прогрев...");
delay(2000); // символический прогрев для демонстрации — для точных показаний нужно больше времени
lcd.clear();
}
void loop() {
int raw = analogRead(MQ6_PIN); // 0-1023, относительный уровень, НЕ калиброванный ppm
lcd.setCursor(0, 0);
lcd.print("Gas lvl: ");
lcd.print(raw);
lcd.print(" "); // стираем "хвост" от более длинного числа на предыдущем кадре
// Простая текстовая шкала на второй строке: число делений пропорционально уровню
int bars = map(raw, 0, 1023, 0, 16);
lcd.setCursor(0, 1);
for (int i = 0; i < 16; i++) {
lcd.print(i < bars ? "#" : "-");
}
Serial.print("MQ-6 raw: ");
Serial.println(raw);
delay(500);
}
Библиотека LiquidCrystal_I2C ставится через Менеджер библиотек Arduino IDE. Если дисплей не откликается — проверьте адрес на шине I2C отдельным скетчем-сканером (часто это 0x27 или 0x3F), а если "скачут" значения газа — дайте датчику больше времени на прогрев в чистом воздухе перед использованием.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 348 ₽ 313 ₽ (экономия 35 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.