Kako se koristi MQ-2 Gas Arduino Senzor / modul
U zadnje vrijeme sve više slušamo o pametnim uređajima koji mogu prepoznati (očitati vrijednost) dim, vatru ili plin i izvršiti neku radnju npr. kao upaliti alarm. Također, uz određeni modul ili kontroler, vrlo jednostavno možemo napraviti IoT uređaj i podatak poslati i u Cloud, ali o tome ćemo u nekoj od sljedećih lekcija. MQ-2 senzor pored dima, i vatre može otkriti i koncentraciju LPG, alkohol, propan, vodik, metan i ugljični monoksid u zraku.
U ovoj lekciji ćemo objasniti:
- Šta je to MQ-2 Gas senzor?
- Šema povezivanja i kod za kontrolu MQ-2 gas senzora
- Specifikacija materijala
Šta je to MQ-2 Gas senzor?
U većini Arduino projekata, MQ-2 senzor se koristi za otkrivanje plina ili dima i stoga je ovaj senzor popularan među početnicima. Također, ovo su jeftini senzori, jednostavni za korištenje, sa širokim rasponom mjerenja koji se može smanjiti kako bi se prilagodila osjetljivost. U ovom tutorijalu se nećemo previše baviti najsitnijim detaljima modula (senzora), jer bi u tom slučaju Tutorijal bio jako dug. U nastavku ćemo objasniti samo najonosvnije karakteristike i kako da pravilno izmjerite vrijednosti sa prethodno navedenim senzorom. Nemojte zanemariti da senzor možete kupiti i odvojeno od modula i direktno ga lemiti na svoju PCB ploču.
Senzor plina MQ-2 treba grijaći element kako bi ispravno mjerio, ali grijaći element u blizini zapaljivih plinova mogao bi biti katastrofalan, stoga je senzor proizveden s protueksplozijskom mrežom izrađenom od dva tanka sloja nehrđajućeg čelika. Mrežu kao što možete vidjeti na slici iznad. Grijaći element nalazi se unutar mreže od nehrđajućeg čelika. Ova mrežasta struktura također pruža otpornost na prašinu i druge suspendirane pojedinosti i propušta samo plinovite elemente iz atmosfere.
Senzor plina MQ2 jednostavan je za korištenje i ima dva različita izlaza. Ne samo da pruža digitalnu indikaciju prisutnosti zapaljivih plinova, već i analogni prikaz njihove koncentracije u zraku. Analogni izlazni napon senzora (na pinu A0) varira proporcionalno koncentraciji dima / plina. Što je veća koncentracija, to je veći izlazni napon, a što je niža koncentracija, niži je izlazni napon.
Prije samog korištenja iz fabričkih tabela vidljivo je da je potrebno 24 sata rada kako bi bio postigao maksimalnu preciznost. U slučaju da Vam nije potrebna maksimalna preciznost, dovoljno je da senzor pustite u radi više od 10-15 minuta i senzor će se dovoljno zagrijati i očitavat će dosta precizno.
U ovom tutorijalu koristit ćemo primjer sa Analognim očitanjem, jer želimo očitati koncentraciju dima u zraku.
Šema povezivanja i kod za kontrolu dugmeta
Pa da krenemo sa Šemom i kodom. U slučaju da ne želite prepisivati kod sa slike, kliknite na ovaj GITHUB link i preuzmite kod iz ovog tutorijala, kao i od ostalih Tutorijala.
Nakon što smo povezali senzor sa kontrolerom kao na semi bacimo se na kod:
U opisnom dijelu senzora rekli smo da je potrebno barem 10-15 minuta kako bi se senzor zagrijao na približno radnu temperaturu, ali ako ipak želite što prije početi sa očitavanjem, u kodu smo predvidjeli 20 sekundi prije prvog očitanja.
Klikom na serial monitor, počet će se prikazivati ispisi vrijednosti vrijednosti sa senzora. Prethodno smo spomenuli da koncentracija dima povećava broj očitanja, pa je u ovom slučaju najniža vrijednost 342, dok je maksimalna 909.
Napomena: osjetljivost senzora se može podešavati na malom plavom potenciometru koji se nalazi na poleđini senzora senzora.
Nakon što je senzor proradio tj. nakon što smo dobili očitanje senzora, iskoristimo znanje iz prethodnih tutorijala i učinimo ovaj tutorijal još interesantnijim!
Napravit ćemo funkciju (Tutorijal: Arduino Funkcija) za alarm ili upozorenje (Tutorijal: Buzzer zvono).
Prethodno smo rekli da je u ovom primjeru minimalno očitanje 342, a maksimalno 909. Napravit ćemo If uslov da u slučaju ako je očitana vrijednost jednaka ili veća od 500 (sensorValue >= 500) da se aktivira funkcija alarm i ispiše tekst kako bi lakše pratili izvršavanje koda.
Buzzer ili Alarm ćemo povezati sa pinom 13 kao na semi ispod.
Nakon što smo sve povezali kao na šemi iznad, pređimo na kod.
Kao što možete vidjeti na slici iznad, kod savršeno radi! Nadam se da Vam zvuk alarma nije previše jak. Ako malo bolje pogledate, ovaj kod ima jednu malu manu. Pogledajte na vrijeme očitavanja. Sve dok se uslov ne ispuni, tj. sve dok je vrijednose senzora ispod 500, mjerenje se izvršava svake sekunde (delay (1000)). U momentu kada se uslov ispuno očitavanje se vrši svako 2 sekunde.
Zašto je to tako?
Odgovor leži u funciji alarm. Nakon što se ispuni uslov tj. nakon što je očitana vrijednost senzora iznad 500, pokrene se funkcija. u funkciji koristimo komande za buzzer tone i noTone. U funkciji imamo dvije varijable koje nose vrijednosti delay-a. Prva vrijednost onVrijeme odnosi se koliko će Buzzer biti upaljen, dok druga varijabla offTime nosi vrijednost koliko će biti buzzer ugašen.
Eh sada, kako bi lakše shvatili, u našem primjeru, kada je uslov ispunjen upali se buzzer 500ms, pa se ugasi buzzer 500ms, pa krene delay od 1000ms. Ako saberemo onTime + offTime + delay dobit ćemo 2000ms odgode do sljedećeg očitanja.
Kako bi dobili brže i bolje očitanje ili brži alarm, možete se igrati sa brojevima delay-a, onTime i offTime i sve dok su projekti jednostavni ovo će savršeno dobro raditi. Onoga momenta kada Vam u igri bude više senzora, kao i više uslova delay će Vam predstavljati problem. Ako ikada budete radili sa više senzora, tada ćete morati naučiti raditi sa millis(). Kada naučite raditi sa millis() tek tada ćete biti spremni za ozbiljniji rad i otvorit će Vam se prozor u IoT svijet.
Specifikacija materijala:
- 1x Arduino Uno
- 1x Breadboard
- 1x Arduino Mini Zvučnik – Buzzer
- 5x Komunikacijski kablovi
Napomena: Nakon što pročitate bilo koji Tutorijal na internetu, uvijek pogledajte Datasheet bilo koje komponente ili senzora, jer se tu nalaze svi bitni fabrički detalji!