KKM: DHT22

Početnik si s Croduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala e-radionice na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Croduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.
UVOD
DHT22 ili AM2303 je kapacitativni senzor relativne vlažnosti zraka i temperature zraka. Senzor je izvrsne kvalitete, vrlo precizan, ali i nešto skuplji te sporiji (2 sekunde). Osim uređaja za mjerenje, modul se sastoji i od 8-bitnog mikrokontrolera i OTP memorije preko kojih ide kalibriranje svakog očitanja. Male dimenzije, mala potrošnja i prijenos podataka na velike udaljenosti (>20m) čini ga primjenjivim mnoštvu uređaja.
Karakteristike:
Napon: 3.3 – 5.5V (preporučeno 5V)
Struja: 300uA (prosječno)
Raspon mjerenja: 0-100%RH; -40~80 °C
Točnost: +-2%RH; +-0.5 °C
Dugotrajna stabilnost: +-0.5%RH/godišnje
Vrijeme mjerenja: 2s
Dimenzije: 14x18x5.5mm
Dijagrami dolje prikazuju točnost očitanja u ovisnosti o mjerenjima.
Za više pogledaj datasheet.
KAKO RADI DHT22?
Croduino i DHT22 komuniciraju preko SDA (serial data) pina na DHT-u i I/O pina na Croduinu, te tako čini pojednostavljenu single-bus (one-wire) komunikaciju. Zbog svoje master/slave strukture, SDA pinu je potreban vanjski pull-up otpornik. Vrijednost otpornika ovisi o duljini kabela između mikrokontrolera i senzora. Preporuka je koristiti 5.1k otpornike za 5V napon, dok za duljine kabela >20m nije potreban otpornik. Ukoliko koristite 3.3V napon duljina kabela može biti do 1m maksimalno.
Postupak mjerenje izgleda ovako:
Mikrokontroler šalje start signal na SDA pin DHT-a koji prelazi iz stanja štednje u running mode. Signal obično traje 1ms, nakon koje se I/O mikrokontrolera postavlja u input. DHT mu uzvrača s 40bitnim podacima koji predstavljaju relativnu vlažnost i temperaturu zraka.
KAKO POVEZATI S CRODUINOM?
ARDUINO KOD
Za očitanja s DHT22 koristiti ćemo library kojeg možete preuzeti na GitHubu. Ako ste nesigurni kako instalirati novi library pratite ovaj tutorial. Primjer koda, kao i uvijek, nakon instalacije library-a možete pronaći pod File – Examples. Ispod je naša verzija koja daje očitanja vlage i temperature zraka, te feels like temperature.
///////////////////////////////////////////////////////////////////////////////
/* */
/* */
/* (c) e-radionica.com 2015 - http://e-radionica.com/hr/faq/#privatnost */
/* [email protected] */
/* */
/* */
/* DHT22 - KKM tutorial */
///////////////////////////////////////////////////////////////////////////////
#include "DHT.h"
int
pinDHT = A0;
// pin na koji smo spojili SDA pin DHT-a
int
tipDHT = DHT22;
// možete se koristiti i s DHT11 i DHT21 modulima
// S LIJEVA NA DESNO SPOJITE PINOVE:
// prvi pin na +5V
// drugi pin gdje god je pinDHT
// treći pin ostavit prazan
// četvrti pin na gnd
//
// spojite 10k pull-up otpornik između drugog(SDA) pina i +5V
DHT dht(pinDHT, tipDHT);
void
setup
() {
Serial.begin(9600);
dht.begin();
Serial.println(
"DHT test\n"
);
}
void
loop
() {
// interval između mjerenja mora biti barem 2sekunde
// također, prije prvog mjerenja je potreban delay
delay
(2000);
// očitaj vlagu
float
h = dht.readHumidity();
// očitaj temperaturu u Celziusima
float
t = dht.readTemperature();
// za očitanje temperature u Fahrenheitima koristite:
// float f = dht.readTemperature(true);
// provjera indeksa topline u Celziusima
float
hic = dht.computeHeatIndex(t, h,
false
);
// za provjeru u Fahrenheitima koristite:
// float hif = dht.computeHeatIndex(f, h);
// provjera uspješnosti mjerenja..
if
(isnan(h) || isnan(t)) {
Serial.println(
"Neuspješno čitanje s DHT-a"
);
return
;
}
// ako je sve uredu, ispiši očitanja:
Serial.print(
"Relativna vlaga zraka: "
);
Serial.print(h);
Serial.print(
"%\t"
);
Serial.print(
"Temperatura: "
);
Serial.print(t);
Serial.print(
"*C "
);
Serial.print(
"Feels like: "
);
Serial.print(hic);
Serial.println(
"*C"
);
}