Угарный газ (монооксид углерода) - очень опасный газ, так как не имеет ни вкуса, ни запаха, прозрачен и при этом смертельно токсичен.
При этом им довольно легко отравиться, например из-за плохой тяги в дымоходе камина или неправильной эксплуатации газового оборудования.
В частном доме настоятельно рекомендуется установка датчика угарного газа, который громко сообщит владельцам о наличии CO, разбудит их ночью и тем самым убережет от отравления или даже от смерти.
Сейчас продается много как готовых датчиков-измерителей угарного газа и дыма (в том числе и для интеграции в умный дом):
так и отдельных модулей:
Я покупал большинство из них и все они хорошо справляются с поставленной задачей - вовремя предупреждать об опасной концентрации газа CO.
Но бывают ситуации, когда хочется расширить функционал этих устройств. Например, у вас установлен хаб умного дома и вы бы хотели получать уведомление на телефон в ваше отсутствие. Или вы хотели бы установить датчик в дом пожилых родственников и иметь к нему удаленный доступ. Либо организовать питание не от батареек, а от блока питания.
В таких случаях вы можете довольно просто собрать такое устройство на базе Arduino и сенсора MQ-7. При необходимости его можно интегрировать в экосистему умного дома или расширить его функционал как захочется.
К разработке своего датчика стоит отнестись очень серьезно, потому что от работы этого прибора может зависеть ваша жизнь. Стоит заранее продумать:
- вопрос питания - если это батарейки или аккумуляторы, то необходимо сигнализировать когда их нужно поменять
- подтверждение работы датчика, например, ненавязчивый зеленый светодиод, мигающий раз в минуту
- перед размещением датчика в помещении проверить его работу - например размесить его в большой кастрюле, зажечь в ней свечи/бумагу, и закрыть крышку
Подключается датчик очень просто: разъемы GND и VCC подключаются соответственно к пинам GND и +5V на Arduino, а разъем A0 - к любому свободному аналоговому пину.
Рассмотрим простой код получения данных с сенсора:
#define MQ7_A A3
void setup()
{
Serial.begin(9600);
pinMode(MQ7_A, INPUT);
}
void loop()
{
int ppm = analogRead(MQ7_A);
Serial.print("ppm = ");
Serial.println(ppm);
delay(5000);
}
Открыв консоль сериального порта, каждые 5 секунд мы увидим значение показания сенсора.
Как развивать код далее - уже зависит от вас. Самый простой вариант - подключить к плате спикер и кнопку. Сравниваем полученное с сенсора значение, и если оно превышает пороговое (обычно используется 150) - воспроизводим звуковой сигнал до тех пор, пока не нажмем на кнопку.
Как подключить кнопку без использования сопротивления можно посмотреть в заметке "Использование простой кнопки".
Ну а пример работы со спикером есть в проектах "Простой будильник на Arduino Uno" и "Интерактивная елочная игрушка".