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).
