Teploměr a vlhkoměr DHT11 a DHT22

Teploměr a vlhkoměr DHT11 a DHT22 je snadno použitelný Arduino modul, který obsahuje vše potřebné již ve svém pouzdře. Stačí ho tedy pouze připojit třemi vodiči k Arduino desce a dále už jen vyčítat nové informace o okolí, které se obnovují přibližně každé dvě vteřiny. Rozdíl mezi typem DHT11 a DHT22 je v rozsahu měření a jeho citlivosti, kdy levnější typ DHT11 měří teplotu v rozsahu 0 – 50 stupňů Celsia s přesností ±1 °C a vlhkost v rozmezí 20 – 90 % s přesností ±4 %. Pokročilejší měřící modul DHT22 umožňuje měřit teplotu v rozsahu -40 až +80 stupňů Celsia s přesností ±0,5 °C a vlhkost vzduchu v rozsahu 0-100 % s přesností ±2 %.

Pro úspěšné propojení s Arduino deskou je třeba propojit 3 vodiče a jeden odpor o velikosti 10k ohmů. Propojíme tedy první vodič VCC s +5 V a čtvrtý vodič se zemí Arduina. Druhý vodič datový s pinem 5 a odpor spojíme na jednom konci s datovým vodičem a +5V na konci druhém, jak je vidět na schématu níže. Místo pinu 5 na Arduino desce můžeme samozřejmě využít jiný volný datový pin, ale je nutné tuto volbu provést i v programu pro Arduino desku.

Pro správné přeložení a nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu DHT, návod jak na to je uveden zde. Ukázkový kód obsahuje na začátku připojení zmíněné knihovny DHT a dále definování čísla pinu, na kterém je připojen datový vodič modulu DHT. Poté je uvedeno definování typu připojeného modulu DHT, kdy pro tento program byl použit modul DHT11. V případě použití modulu DHT22 stačí pouze odkomentovat řádek níže. Jako další následuje už jen vytvoření instance mojeDHT z knihovny DHT s uvedeným pinem a typem modulu DHT. V podprogramu setup je nejprve nastavena komunikace přes sériovou linku a poté zapnuta komunikace modulu DHT s Arduinem. V nekonečné smyčce loop je na jejím začátku vždy vytvořena proměnná a do ní načtena hodnota teploty a poté vlhkosti z připojeného modulu a poté jsou tyto hodnoty zkontrolovány, zda obsahují číselné hodnoty. V případě chyby je vypsána hláška po sériové lince. Pokud jsou uloženy v proměnných číselné hodnoty, jsou tyto poté vypsány po sériové lince a po prodlevě dvou vteřin se celá smyčka opakuje.

// Teploměr a vlhkoměr DHT11/22

// připojení knihovny DHT
#include "DHT.h"
// nastavení čísla pinu s připojeným DHT senzorem
#define pinDHT 5

// odkomentování správného typu čidla
#define typDHT11 DHT11     // DHT 11
//#define typDHT22 DHT22   // DHT 22 (AM2302)

// inicializace DHT senzoru s nastaveným pinem a typem senzoru
DHT mojeDHT(pinDHT, typDHT11);

void setup() {
  // komunikace přes sériovou linku rychlostí 9600 baud
  Serial.begin(9600); 
  // zapnutí komunikace s teploměrem DHT
  mojeDHT.begin();
}

void loop() {
  // pomocí funkcí readTemperature a readHumidity načteme
  // do proměnných tep a vlh informace o teplotě a vlhkosti,
  // čtení trvá cca 250 ms
  float tep = mojeDHT.readTemperature();
  float vlh = mojeDHT.readHumidity();
  // kontrola, jestli jsou načtené hodnoty čísla pomocí funkce isnan
  if (isnan(tep) || isnan(vlh)) {
    // při chybném čtení vypiš hlášku
    Serial.println("Chyba při čtení z DHT senzoru!");
  } else {
    // pokud jsou hodnoty v pořádku,
    // vypiš je po sériové lince
    Serial.print("Teplota: "); 
    Serial.print(tep);
    Serial.print(" stupnu Celsia, ");
    Serial.print("vlhkost: "); 
    Serial.print(vlh);
    Serial.println("  %");
  }
  // pauza pro přehlednější výpis
  delay(2000);
}

Po nahrání programu do Arduino desky s připojeným modulem DHT dostaneme například tento výpis:

Teplota: 26.00 stupnu Celsia, vlhkost: 34.00  %
Teplota: 26.00 stupnu Celsia, vlhkost: 34.00  %
Teplota: 27.00 stupnu Celsia, vlhkost: 35.00  %
Teplota: 27.00 stupnu Celsia, vlhkost: 37.00  %
Teplota: 27.00 stupnu Celsia, vlhkost: 37.00  %

Teploměr a vlhkoměr DHT11 či DHT22 je oblíbený pro své jednoduché použití. Drobnou nevýhodou oproti DS18B20 je ale nemožnost připojit více těchto modulů na jeden pin. Tato nevýhoda je vyvážena poměrně dobrou přesností v poměru s cenou nebo také možností měřit dvě veličiny, tedy teplotu a vlhkost okolního vzduchu. Modul je tedy vhodný pro různá zařízení a zapojení, kde je nutno měřit teplotu a vlhkost v okolí a případně tyto hodnoty dále zpracovávat.

 

Seznam použitých komponent:

http://dratek.cz/arduino/829-arduino-teplomer-a-vlhkomer-digitalni.html

http://dratek.cz/arduino/1188-arduino-dht22-teplomer-a-vlhkomer-digitalni-1455993178.html

http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

http://dratek.cz/arduino/1227-7-ks-mini-nepajive-pole-25-kontaktu-1458405292.html

http://dratek.cz/arduino-kabelaz-propoje-rozsireni/1214-arduino-vodice-samice-samice-40-kusu-1457705007.html

Další podobné články