[Projekt] Detektor gazów palnych i dymu oparty o Arduino i czujnik MQ-2
Opisany projekt oparty jest o czujnik MQ-2, pozwalający wykryć w powietrzu gazy takie jak gaz ziemny, wodór, etanol czy dym. Zadaniem detektora jest sygnalizowanie obecności niebezpiecznych gazów w powietrzu za pomocą odpowiedniego koloru diody LED oraz sygnału dźwiękowego.
- Moduł z czujnikiem MQ-2,
- Płytka Maker Nano z wbudowanym buzzerem (albo dowolna inna płytka zgodna z Arduino i zewnętrzny buzzer),
- Prototypowy shield dla Arduino Nano (albo dowolna inna płytka z wyprowadzonym zasilaniem i portami I/O),
- Moduł z diodą RGB WS2812 np. KAmodWS2812-1,
- Przewody połączeniowe F-F.
MQ-2 to czujnik przeznaczony do wykrywania gazów palnych w powietrzu. Znajduje zastosowanie w domowych i przemysłowych detektorach. Moduł czujnika pozwala wykryć butan, propan, metan, LPG, alkohol, wodór i dym. Czujnik zawiera zintegrowaną grzałkę, która utrzymuje sensor czujnika w odpowiedniej temperaturze, co zapewnia stabilniejsze i bardziej dokładne pomiary.
Maker Nano jest płytką zgodną z Arduino Nano, opartą o popularny mikrokontroler Atmega328 i konwerter USB-UART CH340C. Dodatkowo moduł wyposażono w diody LED pokazujące stan portów cyfrowych, programowalny przycisk i wbudowany buzzer.
Płytka prototypowa zastosowana w projekcie, dzięki licznym wyprowadzeniom zasilania oraz portów I/O, znacznie ułatwia podłączanie modułów do Arduino. Na płytce znajduje się również stabilizator liniowy oraz złącze DC-jack pozwalające podłączyć źródło zasilania.
Sprawdzenie działania czujnika
Pierwszym krokiem będzie sprawdzenie działania czujnika. W tym celu należy wpiąć płytkę Maker Nano w prototypowy shield i podłączyć czujnik zgodnie z tabelą poniżej.
Moduł MQ-2 |
Arduino |
AO |
A0 |
DO |
Nie podłączone |
GND |
GND |
VCC |
5V |
Następnie należy napisać kod wyświetlający wynik pomiaru na ekranie komputera przez port szeregowy. Przed funkcją setup() należy zdefiniować stałą Sensor, do której przypisana zostanie wartość A0, czyli numer portu do którego podłączony jest czujnik.
#define Sensor A0
Następnie należy zainicjować zmienną globalną przechowującą wynik pomiaru i ustawić jej wartość na „0”.
int sensorValue = 0;
W funkcji setup() należy zainicjować połączenie z komputerem i ustawić prędkość komunikacji na standardową wartość: 9600 bps.
Serial.begin(9600);
W funkcji loop() zmiennej sensorValue należy przypisać wartość odczytaną z przetwornika ADC konwertującego napięcie analogowe uzyskane z czujnika podłączonego do portu Sensor. Będzie to wyglądać następująco.
sensorValue = analogRead (Sensor);
W kolejnej linii programu należy za pomocą funkcji Serial.println() wysłać do komputera odczytaną wartość.
Serial.println (sensorValue);
Ostatnią czynnością przed wgraniem programu będzie dodanie opóźnienia, co sprawi, że kolejne wartości nie będą na komputerze wyświetlać się zbyt szybko.
delay(100);
Cały kod powinien wyglądać więc następująco.
#define Sensor A0 int sensorValue = 0; void setup() { Serial.begin(9600); } void loop() { sensorValue = analogRead(Sensor); Serial.println(sensorValue); delay(100); }
Jeżeli wszystko przebiegło pomyślnie, to po otwarciu monitora portu szeregowego powinny pokazać się wartości mniejsze niż 100.
Aby lepiej zobrazować wyniki można otworzyć ploter, który przedstawi je w postaci wykresu.
Teraz można przetestować działanie czujnika zbliżając do niego źródło wykrywanego gazu, np. gazu zawartego w zapalniczce. Testy z gazami łatwopalnymi należy przeprowadzać w dobrze wentylowanym pomieszczeniu przy zachowaniu należytej ostrożności. Wynik testu powinien wyglądać mniej więcej tak.