Устройство оповещения о наличии газов

0 6

Устройство оповещения о наличии газов

В этой небольшой статьи мы с вами узнаем, как можно использовать различные датчики газа серии MQ совместно с Ардуино. С помощью таких датчиков можно отслеживать наличие различных примесей в воздухе от пропана/бутана до алкоголя и дыма.
Инструменты и материалы:
-Пользовательская печатная плата;
-Arduino Nano;
-ST7789 240×240 IPS дисплей;
-ИК-пульт дистанционного управления и приемник;
-Датчик газа MQ-2;
-Датчик газа MQ-3;
-Датчик газа MQ-4;
-Датчик газа MQ-6;
-Датчик газа MQ-9;
-Зуммер;
-5 мм RGB светодиод с общим анодом;
-Резистор 220 Ом — 7 шт;
-Резистор 20 кОм — 5 шт;
-Разъем питания;
-Внешний аккумулятор 5 В;
Шаг первый: об устройстве
Обычно такие устройства включают один/два датчика. Мастер решил использовать возможности Ардуино по максимуму и установить пять датчиков.
Для управления устройством (настройки,функции и т.д.) выполняется с помощью ИК-пульта дистанционного управления. Чтобы отобразить полученные измерения газа, используется экран IPS ST7789.
В устройстве используется зуммер и 5-миллиметровый светодиод RGB с общим анодом, для сигнализации критической концентрации газов.
Все устройство монтируется на печатной плате выполненной в форме Джокера (Джо́кер (c англ. Joker — шутник, балагур) — суперзлодей вселенной DC Comics, главный и заклятый враг Бэтмена).
Данный газоанализатор он использует на рабочем месте.

Устройство оповещения о наличии газов

Шаг второй: проектирование печатной платы
Перед тем, как создать прототип печатной платы, мастер протестировал устройство на макетной плате.
Затем разработал печатную плату с помощью KiCad и заказал на он-лайн сервисе ее изготовление. Получить файлы для изготовления платы можно здесь.

Устройство оповещения о наличии газов

Шаг третий: монтаж
После изготовления платы мастер произвел монтаж согласно обозначениям.
A1 (Arduino Nano)
S1 (штифты для экрана ST7789 IPS)
IR1 (модуль ИК-приемника)
MQ2 (датчик газа MQ-2)
MQ3 (датчик газа MQ-3)
MQ4 (датчик газа MQ-4)
MQ6 (датчик газа MQ-6)
MQ9 (датчик газа MQ-9)
BZ1 (зуммер)
D1 (светодиод RGB с общим анодом 5 мм)
R1, R2, R3, R4, R5, R6, R7 (резистор 220 Ом)
R8, R9, R10, R11, R12 (резистор 20 кОм)
J1 (разъем питания)
J2 (разъемы для внешней батареи)

Устройство оповещения о наличии газов

Устройство оповещения о наличии газов

Устройство оповещения о наличии газов

Устройство оповещения о наличии газов

Устройство оповещения о наличии газов

Шаг четвертый: программирование Arduino Nano и настройка компонентов
Дальше настраиваем Ардуино.
Сначала нужно загрузить необходимые библиотеки:
для управления модулем ИК-приемника Arduino-IRremote
для использования IPS-экрана ST7789 Arduino_ST7789_Fast и Adafruit_GFX
В коде включаем необходимые библиотеки и определяем контакты и настройки модуля ИК-приемника.

Устройство оповещения о наличии газов

 Показать / Скрыть текст#include <Adafruit_GFX.h>
#include <Arduino_ST7789_Fast.h>
#include <IRremote.h>

// Define the IR receiver module pin and settings.
#define RECV_PIN 2
IRrecv irrecv(RECV_PIN);
decode_results results;
Запускаем файл IRrecvDemo.ino в примерах, получаем необходимые ИК-коды с ИК-пульта дистанционного управления и определяем их.

Устройство оповещения о наличии газов

 Показать / Скрыть текст#define up 0xFF18E7
#define down 0xFF4AB5
#define right 0xFF5AA5
#define left 0xFF10EF
#define ok 0xFF38C7
Определяем настройки дисплея ST7789 240×240 IPS.

Устройство оповещения о наличии газов

 Показать / Скрыть текст#define TFT_DC 10
#define TFT_RST 9
#define SCR_WD 240
#define SCR_HT 240
Чтобы отображать изображения на экране ST7789, преобразовываем их в файлы с помощью конвертера изображений ImageConverter (UTFT)
Включаем преобразованные изображения.

Устройство оповещения о наличии газов

 Показать / Скрыть текст#include "gas.c"
#include "lethal.c"
#include "toxic.c"
Запускаем отображение на ST7789 240×240 IPS

Устройство оповещения о наличии газов

 Показать / Скрыть текстArduino_ST7789 tft = Arduino_ST7789(TFT_DC, TFT_RST);
Включаем модуль ИК-приемника. Запускаем очистку экрана ST7789 240×240 IPS.

Устройство оповещения о наличии газов

 Показать / Скрыть текст irrecv.enableIRIn();

tft.init(SCR_WD, SCR_HT);
tft.fillScreen(RGBto565(235, 46, 0));
В функции read_IR_controls сканируем ИК-коды с ИК-пульта

Устройство оповещения о наличии газов

 Показать / Скрыть текстvoid read_IR_controls(){
// Read received IR codes from the IR remote control.
if(irrecv.decode(&results)){
IR_codeValue = results.value;
irrecv.resume();
delay(500);
}else{
IR_codeValue = 0;
}
}
В функции collect_Data получаем переменные, генерируемые датчиками газа MQ.

Устройство оповещения о наличии газов

 Показать / Скрыть текстvoid collect_Data(){
// Get variables generated by the gas sensors.
mq_2_val = analogRead(mq_2);
mq_3_val = analogRead(mq_3);
mq_4_val = analogRead(mq_4);
mq_6_val = analogRead(mq_6);
mq_9_val = analogRead(mq_9);
}
Распечатываем интерфейс с параметрами меню
void interface(){

Устройство оповещения о наличии газов

 Показать / Скрыть текст // Print interface with menu options.
tft.setTextColor(RGBto565(0, 38, 153), RGBto565(235, 46, 0));
tft.setTextSize(4);
tft.setCursor(75, 25);
tft.println("MQ-2");
tft.setCursor(75, 65);
tft.println("MQ-3");
tft.setCursor(75, 105);
tft.println("MQ-4");
tft.setCursor(75, 145);
tft.println("MQ-6");
tft.setCursor(75, 185);
tft.println("MQ-9");
}
В функции change_menu_options увеличьте или уменьшите номер параметра с помощью кнопок ИК-пульта ДУ — вверх и вниз — для переключения между опциями меню в интерфейсе.

Устройство оповещения о наличии газов

 Показать / Скрыть текстvoid change_menu_options(){
// Increase or decrease the option number using the IR remote control buttons.
if(IR_codeValue == up) selected—;
if(IR_codeValue == down) selected++;
if(selected < 0) selected = 5;
if(selected > 5) selected = 1;
delay(100);

// Depending on the selected option number, change the boolean status.
switch(selected){
case 1:
mq2 = true;
mq3 = false;
mq4 = false;
mq6 = false;
mq9 = false;
break;
case 2:
mq2 = false;
mq3 = true;
mq4 = false;
mq6 = false;
mq9 = false;
break;
case 3:
mq2 = false;
mq3 = false;
mq4 = true;
mq6 = false;
mq9 = false;
break;
case 4:
mq2 = false;
mq3 = false;
mq4 = false;
mq6 = true;
mq9 = false;
break;
case 5:
mq2 = false;
mq3 = false;
mq4 = false;
mq6 = false;
mq9 = true;
break;
}
}

Устройство оповещения о наличии газов

Устройство оповещения о наличии газов

Устройство оповещения о наличии газов

Устройство оповещения о наличии газов

Шаг пятый: отображение наличия газов
Для обнаружения опасных газов в устройстве используются пять датчиков серии MQ:
Датчик газа MQ-2 имеет высокую чувствительность к бутану, пропану и водороду, а также может использоваться для обнаружения метана и задымленности.
Датчик газа MQ-3 обладает высокой чувствительностью к алкоголю, бензину, дыму. Этот датчик может обнаруживать алкоголь с разными концентрациями.
Датчик газа MQ-4 имеет высокую чувствительность к метану, пропану и бутану.
Датчик газа MQ-6 имеет высокую чувствительность к пропану, бутану и сжиженному нефтяному газу, а также реагирует на природный газ.
Датчик газа MQ-9 имеет высокую чувствительность к угарному газу, метану и сжиженному нефтяному газу. Этот датчик может обнаруживать различные газы, содержащие CO, и горючие газы.
Как и ожидалось, после подключения к Arduino Nano каждый датчик генерирует разные диапазоны значений в зависимости от количества обнаруживаемых опасных газов.
После тестирования мастер примерно настроил эти уровни для каждого датчика.

Устройство оповещения о наличии газов

 Показать / Скрыть текстmq_2_val < 600 — Low
600 < mq_2_val < 700 — Moderate
mq_2_val >= 700 — Dangerous

mq_3_val < 650 — Low
650 < mq_3_val < 800 — Moderate
mq_3_val >= 800 — Dangerous

mq_4_val < 450 — Low
450 < mq_4_val < 600 — Moderate
mq_4_val >= 600 — Dangerous

mq_6_val < 500 — Low
500 < mq_6_val < 650 — Moderate
mq_6_val >= 650 — Dangerous

mq_9_val < 700 — Low
700 < mq_9_val < 850 — Moderate
mq_9_val >= 850 — Dangerous
Выбираем параметры меню с помощью кнопок «Вверх» и «Вниз». После выбора активируем с помощью кнопки OK. Дальше происходить сбор информации с датчиков.
Если измеренное значение газа низкое в соответствии с назначенными уровнями, на светодиоде горит зеленый свет.
Если измеренное значение газа среднее светодиод горит желтым цветом.
Если измеренное значение газа превысило уровень, светодиод горит красным цветом и срабатывает зуммер.

Устройство оповещения о наличии газов

 Показать / Скрыть текст if(mq2){
do{
tft.setTextColor(RGBto565(0, 38, 153), WHITE);
tft.setTextSize(4);
tft.setCursor(75, 25);
tft.println("MQ-2");
if(IR_codeValue == ok){
activated = true;
tft.fillScreen(WHITE);
while(activated){
read_IR_controls();
// Print data:
collect_Data();
tft.setCursor(75, 25);
tft.setTextColor(BLACK, WHITE);
tft.setTextSize(4);
tft.print(F("MQ-2"));
tft.drawImageF(30, 80, 40, 40, gas);
tft.drawImageF(100, 80, 40, 40, lethal);
tft.drawImageF(170, 80, 40, 40, toxic);
tft.setCursor(60, 160);
tft.setTextSize(7);
tft.print(mq_2_val);
// Check gas status:
if(mq_2_val < 600){ adjustColor(0, 255, 0); }
else if(mq_2_val >= 600 && mq_2_val < 700){ adjustColor(255, 255, 0); }
else if(mq_2_val >= 700){ adjustColor(255, 0, 0); tone(buzzer, 500, 1000); }
// Exit and Close:
if(IR_codeValue == left){ activated = false; tft.fillScreen(RGBto565(235, 46, 0)); adjustColor(0, 0, 0); noTone(buzzer); }
}
}
}while(!mq2);
}

Устройство оповещения о наличии газов

Устройство оповещения о наличии газов

Устройство оповещения о наличии газов

К сожалению, при использовании удаленной библиотеки IR и библиотеки звуков Arduino IDE выдает ошибку timer0_pin_port . Ошибка возникает из-за того, что обе библиотеки пытаются использовать таймер, объявив одно и то же имя — Timer2 .
Чтобы решить эту проблему, открываем файл boarddefs.h или IRremoteBoardDefs.h в зависимости от версии удаленной библиотеки IR. Изменяем IR_USE_TIMER2 на IR_USE_TIMER1 для Arduino Nano.

Устройство оповещения о наличии газов

Шаг шестой: подключения и регулировка
Завершив пайку и загрузив код, мастер подключил все остальные компоненты к плате.
Несмотря на то, что Arduino Nano работает при 5 В, этого недостаточно, чтобы пять газовых датчиков серии MQ нагрелись и генерировали точные измерения газа. Для питания датчиков мастер добавил печатной плате разъем питания (J1) и разъем (J2) для питания датчиков от внешней батареи (5 В).
Подключение по следующей схеме.
Arduino Nano — Модуль ИК-приемника
D2 —-S
— ST7789 240×240 IPS
GND— GND
3,3 В — VCC
D13 — SCL
D11 — SDA
D9 — RES
D10 — DC
— Датчик качества воздуха MQ-2
A0 — S
— MQ-3
A1 —S
— MQ-4
A2 — S
— MQ-6
A3 — S
-MQ-9
A4 —-S
-Светодиод RGB
D3 —-R
D5 —G
D6 — B
-Зуммер
D7 — +

Устройство оповещения о наличии газов

Устройство оповещения о наличии газов

Шаг седьмой: режимы и функции
Устройство показывает пять различных датчиков серии MQ в меню интерфейса для отображения результатов измерений газа.
Устройство позволяет пользователю переключаться между датчиками с помощью ИК-пульта дистанционного управления:
Кнопка вверх
Кнопка вниз
Кнопка ОК
Кнопка «Влево» позволяет пользователю вернуться к интерфейсу.

Параметры меню.
Если опция MQ выбрана и активирована, прибор показывает измеренное значение газа.
В зависимости от назначенных уровней измерения для выбранного датчика устройство активирует светодиод RGB:
Зеленый — Низкий уровень
Желтый — Средний уровень
Красный — Высокий уровень
Устройство активирует зуммер, если измеренное значение опасного газа является опасным в соответствии с заданными уровнями.

Устройство оповещения о наличии газов

Устройство оповещения о наличии газов

Устройство оповещения о наличии газов

Шаг восьмой: схема,код, файл для платы
Схему, код и файлы для изготовления платы можно скачать здесь.

Устройство оповещения о наличии газов

Устройство оповещения о наличии газов

Устройство оповещения о наличии газов

На видео представлена демонстрация работы устройства.

(Source)

Подборки: Датчик газа Ардуино

Источник

Оставьте ответ

Your email address will not be published.