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.
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"); }