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