Pro svůj plánovaný projekt "ovládání větrání skleníku" jsem potřebovat měřit teplotu a popřípadně i vlhkost. Na základě těchto údajů jsem chtěl spouštět větráky k odvětrání skleníku. Pro měření teploty a vlhkosti jsem si proto objednal čidlo DHT22.
Toto čidlo lze koupit na www.aliexpress.com za 62,- Kč. Je možné také zakoupit čidlo DHT11 za 18,- Kč. V následující tabulce uvádím srovnání obou čidel podle jejich specifikací.
DHT11 | DHT22 | |
---|---|---|
Rozsah měření vlhkosti | 20 .. 90 % | 0 .. 100 % |
Přesnost měření vlhkosti | ± 5 % | ± 2 % |
Rozsah měření teploty | 0 .. 80 °C | -40 .. 80 °C |
Přesnost měření teploty | ± 2 °C | ± 0.5 °C |
Napájení | 3.3 .. 5 V | 3.3 .. 6 V |
Spotřeba proudu při měření | 0.5 .. 2.5 mA | 1 .. 1.5 mA |
Spotřeba proudu v klidu | 100 .. 150 uA | 40 .. 50 uA |
Prodleva mezi měřením | 1 sec | 2 sec |
Cena 7.2.2016 | 18,- Kč | 62,- Kč |
Sensor DHT11 je sice levnější ale teplotu měří s přesností ± 2 °C. Proto jsem si radši objednal sensor DHT22. Čidlo jsem připojil k Arduinu UNO podle následujícího nákresu.
Rezistor který je mezi napájecím vodičem a datovým vodičem má hodnotu 10 kΩ.
Pro čtení čidla je potřeba knihovna DHT.zip. Tuto knihovnu stačí rozbalit do místa kde má arduino IDE uživatelské knihovny. Jednoduchý kód pro čtení dat z čidla vypadá takto.
#include "DHT.h" DHT dht(2, DHT22); void setup() { Serial.begin(9600); dht.begin(); } void loop() { delay(2000); int h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Chyba cteni z DHT22!"); return; } Serial.print("Vlhkost: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Teplota: "); Serial.print(t); Serial.println(" C"); }
Výstup na sériovém portu bude vypadat nějak takto:
Vlhkost: 58 % Teplota: 20.60 C Vlhkost: 65 % Teplota: 20.70 C Vlhkost: 74 % Teplota: 20.80 C Vlhkost: 79 % Teplota: 21.20 C Vlhkost: 82 % Teplota: 21.70 C Vlhkost: 83 % Teplota: 22.20 C Vlhkost: 73 % Teplota: 22.70 C