KKM: DHT22

KKM: DHT22-Uncategorized

Početnik si s Dasduinom. 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 tvrtke soldered 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 Dasduinom 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?

Dasduino i DHT22 komuniciraju preko SDA (serial data) pina na DHT-u i I/O pina na Dasduinu, 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 DASDUINOM?

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      */
/* techsupport@e-radionica.com                                               */
/*                                                                           */
/*                                                                           */
/* 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");
  
}