Prethodni korak: potreban software
Krenimo odmah s materijaliziranjem liste korištenog hardwarea. Spojimo prvi senzor bez puno objašnjenja. Prema ovoj schemi potrebno je spojiti samo Arduino Nano na breadboard i MQ-3 senzor (MQ-3 senzor koji je korišten nema pripadnu sliku u Fritzingu pa je korištena slika običnog MQ-3):
Bitno je paziti na raspored pinova senzora i na koje ćemo digitalne i/ili analogne pinove Arduina spojiti senzor. Odabrao sam analogni pin A2 kao izlazni prema senzoru i analogni pin A1 kao ulazni iz senzora. Pošto ću izlazni pin koristiti u digitalnom modu, može se iskoristiti i neki drugi digitalni pin, ali koristio sam analogni A2 samo zbog položaja na breadboardu.
Uz ovako spojen MQ-3 senzor sam Arduino nema puno mogućnosti, ali za sada one nisu ni potrebne. MQ-3 senzor ionako još nije spreman za upotrebu jer Arduino nema uploadan nikakav sketch. Za prvi sketch u Arduino IDE-u koji ćemo izraditi potrebno je kratko objašnjenje njegove svrhe. Naime, prema MQ-3 datasheetu, potreban je burn in ili preheat senzora u trajanju od preko 24 sata (vrijeme može varirati o korištenom senzoru, ali datasheet ovdje korištenog senzora navodi preheat time od preko 24 sata). Stoga sam napisao sketch koji će samo upaliti senzor i periodički (svakih 10 sekundi) očitavati te ispisati očitanu vrijednost na Serial Monitoru. Za potrebe indikacije rada, iskoristio sam i interni LED Arduina na pinu broj 13 kako bi periodički LED-icom signalizirao da se program izvršava.
Source code sketcha:
/***************************************************************** * * Inicijalizacija senzora - burn in MQ-3 senzora * *****************************************************************/ #define ledPin 13 // indikator rada na internom LED-u #define pinOUT_MQ A2 // A2 je output pin za 5V za MQ-3 senzor #define pinIN_MQ A1 // A1 je input pint za očitanje MQ-3 senzora void setup() { pinMode(ledPin, OUTPUT); pinMode(pinOUT_MQ, OUTPUT); digitalWrite(ledPin, LOW); digitalWrite(pinOUT_MQ, LOW); Serial.begin(9600); } void loop() { digitalWrite(pinOUT_MQ, HIGH); delay(10000); // ispis vrijednosti MQ-3 senzora Serial.println("DHT value: " + String(analogRead(pinIN_MQ))); // blink internog LED-a - indikator rada digitalWrite(ledPin, HIGH); delay(500); digitalWrite(ledPin, LOW); }
Nakon verifikacije koda i uploada na Arduino, evo i nekih od očitanih vrijednosti vidljivih u Serial Monitoru:
Pošto se uploadani program izvršava u petlji dokle Arduino ima napajanja, ovako složeni modul potrebno je ostaviti u pogonu preko 24 sata kao što navodi preheat time. Nakon tog vremena očitanja senzora bi trebala biti realnija. Tokom izvršavanja programa, ukoliko se iz senzora počne osjetiti miris ili počne dimiti, bolje odmah odspojiti Arduino s napajanja! Prema člancima na netu može se saznati da je to većinom normalno, ali ne bi riskirao. Bolje odspojiti i ponovo pokrenuti nakon nekog vremena što se ohladi.