Наткнулся на интересный датчик MQ9, с его помощью можно определять в воздухе уровень угарного или углеводородных (пропан, метан, этилен и тд) газов. Использовать его можно в качестве сигнализации при утечках газа. Работать с датчиком очень просто, поэтому я добавил в статью еще и описание 7-сегментного 4-разрядного индикатора TM1637. Индикатор уже имеет микросхему управления, поэтому использовать его тоже очень просто – будем выводить на нем уровень газа в помещении.
Как работает датчик газа MQ9
Датчик MQ9 использует свойство диоксида олова(SnO2), в зависимости от загазованности помещения меняется электропроводимость. Таким образом, используя это свойство можно подавать напряжение на датчик, а потом считывать его. Чем больше напряжение на выходе, тем выше уровень газа в воздухе.
MQ9 имеет 4 ноги, две из которых — это питание (GND и VCC), и две – выходы (цифровой и аналоговый). AO – аналоговый выход, с помощью аналогового пина arduino можно получить значение от 0 до 1024, где 1024 будет максимальный уровень загазованности помещения. DO – это цифровой выход, на который передаются логические 0 или 1, в зависимости от уровня газа. Критический уровень можно регулировать с помощью подстрочного резистора на датчике.
Ниже приведено фото датчика с подписанными ножками.

7-сегментный 4-рязрядный индикатор TM1637
Индикатор TM1637 очень прост в использовании, поскольку уже имеет «на борту» микросхему управления. Поэтому для управления достаточно всего два цифровых пина и питания 5 вольт. Чтобы выводить данные на дисплей индикатора удобно использовать готовую библиотеку, скачать ее можно тут: библиотека для TM1637.
Ниже приведено фото TM1637 с подписанными ножками.

Что использовалось в проекте:
- Arduino (я использовал arduino uno, но можно любую другую). Покупал тут: arduino uno
- Датчик уровня газа MQ9. Покупал тут: MQ9
- Индикатор TM1637. Покупал тут: 7-сегментный 4-разрядный индикатор TM1637
Скетч индикатора газа на arduino с помощью MQ9 и TM1637
Ниже приведен скетч с подробными комментариями, а также его можно скачать себе на компьютер: скачать.
// подключение библиотеки для работы с дисплеем
#include "TM1637.h"
// пины дисплея
#define CLK 3
#define DIO 2
// создание объекта для работы с дисплеем
TM1637 tm1637(CLK,DIO);
// пин для получения аналогового значения с датчика MQ9
#define MQ_PIN A0
// переменная для хранения значения, полученного с датчика MQ9
float mqValue;
// переменная для хранения уровня газа в процентах
float mqPercents;
void setup()
{
// инициализация дисплея
tm1637.init();
tm1637.set(BRIGHT_TYPICAL);
Serial.begin(9600);
}
void loop()
{
// получаем значение от датчика MQ9
mqValue = analogRead(MQ_PIN);
// переводим значение в проценты
mqPercents = mqValue/1024 * 100;
// вывод процентов на дисплей
tm1637.display(mqPercents / 1000);
// вывод данных в консоль
Serial.print("GAS: ");
Serial.print(mqPercents);
Serial.println("%");
// ждем секунду
delay(1000);
}
Послесловие
Видео работающего прототипа можно посмотреть на видео:

А можно полученные проценты сохранить в exel? Чтобы фиксировать показания в зависимости от времени
Можно, вот тут можно посмотреть пример записи данных в эксель http://vk-book.ru/peredacha-dannyx-v-excel-iz-arduino/
Для работы с MQ-9 не надо ни каких библиотек добавлять?
Нет, библиотеки не нужны, значение можно получать с аналогового выхода с помощью функции analogRead
Добрый день, не подскажете как дополнить код добавив в схему пищалку(зуммер) с срабатыванием по пороговому значению.
Добрый день! Пищалку можно включать всего с одного аналогового пина. В коде сделать проверку по критическому уровню и в этот момент пищать
Спасибо! Можно ли узнать из показаний угарный или углеводородный газ?