Prethodni korak: početno sastavljanje Arduino modula
Vrijeme je za dodavanje novog DHT11 senzora temperature i vlažnosti. Ovaj korak kao što sam ranije navodio nije skroz nužan, ali želio sam ga provesti za svoj projekt radi preciznijih očitanja i zanimljivosti u programiranju. Senzor sam spojio na već postojeću schemu:
Konkretno spojen izgleda ovako:
Prilikom spajanja također je bitan poredak pinova senzora. Za spajanje DHT11 senzora na Arduino, odabrao sam analogni pin A4 koji će biti input pin za očitanje.
Raspored pinova DHT11 senzora:
Otpornik od 5,6 kΩ sam spojio prema preporuci iz DHT11 datasheeta.
Ovako sastavljen Arduino modul zahtjeva unaprijeđen sketch kojim će se moći očitati temperatura i vlažnost da bi se također ispisali na Serial Monitoru. Korištenje DHT11 u Arduino sketchu očekuje i malo znanje upotrebe libraryja jer se ne može direktno pristupiti očitanju vrijednosti analognog pina. Zbog toga treba malo proučiti i upute na linku http://playground.arduino.cc/Main/DHTLib kako bi se upoznalo korištenje i preuzeo library koji je potrebno importati u Arduino IDE. Prema uputama djeluje komplicirano, ali nije, bitno je preuzeti zadnju verziju libraryja s GitHuba što piše u uputama. Ukoliko se koristi neki drugi senzor temperature i vlažnosti, npr. DHT22, princip je isti, a u sourceu sam dodao komentare prema kojima bi se trebali snaći u pozivu druge funkcije za pristup senzoru. Uglavnom, nije toliko komplicirano kao na prvi pogled. Više informacija vezanih za import libraryja u Arduino IDE možete naći na http://arduino.cc/en/Guide/Libraries.
Source code sketcha:
/************************************************************************************************ * * Inicijalizacija senzora - burn in MQ-3 senzora, očitavanje temperature i vlažnosti zraka * ************************************************************************************************/ #include <dht.h> dht DHT; #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 #define DHT_PIN A4 // pin A4 je input pin DHT senzora int chk; // varijabla provjere očitanja DHT senzora float t; // temperatura float h; // vlažnost zraka void setup() { pinMode(ledPin, OUTPUT); pinMode(pinOUT_MQ, OUTPUT); digitalWrite(ledPin, LOW); digitalWrite(pinOUT_MQ, LOW); Serial.begin(9600); // zaglavlje CSV ispisa na Serial Monitoru Serial.println("DHT temperature;DHT humidity;MQ-3 value"); } void loop() { digitalWrite(pinOUT_MQ, HIGH); delay(10000); chk = DHT.read11(DHT_PIN); // poziva se read11 ako se koristi DHT11, za npr. DHT22 pozvati read22 // ispravno očitanje temperature i vlažnosti if (chk == DHTLIB_OK && !isnan(DHT.temperature)) { t = DHT.temperature; h = DHT.humidity; // ispis u CSV formatu temperatura;vlažnost;vrijednost MQ-e senzora Serial.print(t); Serial.print(";"); Serial.print(h); Serial.println(";" + String(analogRead(pinIN_MQ))); } else { // ispis u CSV formatu samo vrijednosti MQ-3 senzora Serial.println(";;" + 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:
Ovaj sketch također može poslužiti za preheat MQ-3 senzora, odaberite koji bi vam bolje odgovarao. Sketch je unaprijeđen na način da se vrijednosti prema Serial Monitoru šalju u CSV formatu pa ih dalje možete npr. kopirati u Excel ili LibreOffice i po potrebi analizirati, tako se može promatrati recimo promjena temperature i vlažnosti zraka tokom dana.
Source code sketcha sadrži puno komentara prema kojima se može lakše ispratiti što se kojom linijom želi postići. Najvažniji je dio poziv funkcije za očitanje senzora i logička provjera da li je senzor ispravan te da li je očitana vrijednosti temperature ispravna (numerička).