Рассмотрим еще один датчик для обнаружения утечки газа. Это датчик угарного газа MQ-7 (рис. 4.29).
Рис. 4.29. Датчик угарного газа MQ-7.
Основным источником выделения угарного гоза СО, является сгорание углеродного топлива при недостаточном количестве кислорода. Углерод "не догорает" и вместо углекислого газа CO2, в атмосферу выбрасывается угарный газ CO. Источником СО в доме, при неправильной эксплуатации, могут выступать дровяные печи, газовые конфорки, газовые котлы и прочая отопительная техника, работающая на углеродном топливе. В выхлопе бензинового двигателя автомобиля содержание СО может быть до 3%, а по гигиеническим нормам его должно быть не более 20 мг/м³ (около 0,0017%).
Угарный газ (CO) чрезвычайно ядовит, но при этом не обладает ни цветом, ни запахом. Попав в помещение с угарным газом, вы только по косвенным симптомам поймете, что подвергаетесь воздействию яда. Сначала головная боль, головокружение, одышка, сердцебиение, потом посинение трупа. Угарный газ соединяется с гемоглобином крови, отчего последний перестает переносить кислород тканям вашего организма, и первым страдает головной мозг и нервная система.Во-вторых, при определенных концентрациях он образует взрывоопасную смесь.
Поэтому датчик угарного газа – важный и необходимый компонент при построении "умного дома".
Рассмотрим подключение датчика MQ-7 к плате Arduino Mega и модулю NodeMcu ESP8266.
4.6.1. Подключение датчика MQ-7 к плате Arduino Mega
Подключение датчика MQ-7 к плате Arduino Mega мы будем производить по аналоговому входу. Питание для датчика берем также с платы Arduino. Схема соединений представлена на рис. 4.30.
Рис. 4.30. Схема подключений датчика MQ-7 к плате Arduino Mega
Загрузим на плату Arduino Mega скетч получения данных с датчика MQ-7 и вывода в последовательный порт Arduino. Процедуры определения по данным, приходящим с аналогового входа ppmcarbonmonoxide().
Содержимое скетча представлено в листинге 4.12.
Листинг 4.12
// библиотека для работы с датчиками MQ
#include <TroykaMQ.h>
#define INTERVAL_GET_DATA 2000 // интервала измерений, мс
// пин, к которому подключен датчик
#define MQ7PIN A11
// создаём объект для работы с датчиком
MQ7 mq7(MQ7PIN);
// переменная для интервала измерений
unsigned long millis_int1=0;
void setup() {
// открываем последовательный порт
Serial.begin(9600);
// калибровка
mq7.calibrate();
mq7.getRo();
}
void loop() {
if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
// получение данных c датчика mq7
float carbonmonoxide= get_data_ppmcarbonmonoxide();
// выводим значения газа в ppm
Serial.print("carbonmonoxide=");
Serial.print(carbonmonoxide);
Serial.println(" ppm ");
// старт интервала отсчета
millis_int1=millis();
}
}
// получение данных с датчика MQ7
float get_data_ppmcarbonmonoxide() {
Serial.println(mq7.readRatio());
// получение значения
float value=mq7.readCarbonMonoxide();
return value;
}
Загрузим скетч на плату Arduino Mega, откроем монитор последовательного порта и увидите вывод данных о содержании угарного газа CO.
Рис. 4.31. Вывод данных датчика MQ-7 в монитор последовательного порта.
Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке.
4.6.2. Подключение датчика MQ-7 к модулю NodeMcu ESP8266
Теперь рассмотрим подключение датчика MQ-7 к модулю NodeMcu ESP8266. Датчик MQ-7 подключаем к входу y3 мультиплексора. Для выбора аналогового входа мультиплексора используем контакты D5, D7, D8 модуля Node Mcu. Схема соединений представлена на рис. 4.32.
Рис. 4.32. Схема подключений датчика MQ-7 к NodeMcu ESP8266
Загрузим на модуль NodeMcu скетч получения данных с датчика MQ-7 и вывода в последовательный порт Arduino. Для выбора аналогового входа мультиплексора y3 подаем на контакты D5, D7 высокого уровня HIGH, на контакт D8 сигнал низкого уровня LOW. Процедура определения содержание угарного гоза СО в ppm – ppmcarbonmonoxide().
Содержимое скетча представлено в листинге 4.13.
Листинг 4.13
// библиотека для работы с датчиками MQ
#include <TroykaMQ.h>
#define INTERVAL_GET_DATA 2000 // интервала измерений, мс
// аналоговый пин
#define MQ7PIN A0
// создаём объект для работы с датчиком
MQ7 mq7(MQ7PIN);
// переменная для интервала измерений
unsigned long millis_int1=0;
void setup() {
// входы подключения к мультиплексору D5, D7, D8 (GPIO 14, 13, 15)
// как OUTPUT
pinMode(14,OUTPUT);
pinMode(13,OUTPUT);
pinMode(15,OUTPUT);
// открываем последовательный порт
Serial.begin(9600);
// выбор входа мультиплексора CD4051 – y3 (011)
digitalWrite(14,HIGH);
digitalWrite(13,HIGH);
digitalWrite(15,LOW);
// калибровка
mq7.calibrate();
mq7.getRo();
}
void loop() {
if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
// выбор входа мультиплексора CD4051 – y3 (011)
digitalWrite(14,HIGH);
digitalWrite(13,HIGH);
digitalWrite(15,LOW);
// получение данных c датчика mq7
float carbonmonoxide= get_data_ppmcarbonmonoxide();
// выводим значения газа в ppm
Serial.print("carbonmonoxide=");
Serial.print(carbonmonoxide);
Serial.println(" ppm ");
// старт интервала отсчета
millis_int1=millis();
}
}
// получение данных с датчика MQ7
float get_data_ppmcarbonmonoxide() {
Serial.println(mq7.readRatio());
// получение значения
float value=mq7.readCarbonMonoxide();
return value;
}
Загрузим скетч на модуль Node Mcu, откроем монитор последовательного порта и видим вывод данных, получаемых с датчика MQ-7 (рис. 4.33).
Рис. 4.33. Вывод данных датчика MQ-7 в монитор последовательного порта
Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .