Skip to main content

4.6.1 Senzory DHT11/DHT22

Senzory DHT sú už klasikou, i keď v dnešnej dobe výrazne zaostalou. Umožňujú merať teplotu a vlhkosť, líšia sa len presnosťou a rozsahom:

  • DHT11 (modrý) meria teplotu v rozsahu 0 až 50 °C (±2 °C, rozlíšenie 1 °C) a vlhkosť v rozsahu 20 až 80 % (±5 %, rozlíšenie 1 %), čas medzi meraniami je aspoň 1 sekunda, cena modulu je približne 1 € (CN) / 4 € (SK);
  • DHT22/AM2302 (biely) má rozsah teploty -40 až 80 °C (±0,5 °C, rozlíšenie 0,1 °C) a vlhkosti 0 až 100 % (±2 %, rozlíšenie 0,1 %), čas medzi meraniami aspoň 2 sekundy, cena modulu je približne 2 € (CN) / 12 € (SK).

Tieto senzory komunikujú po jedinom kábli proprietárnym protokolom, ktorý je však zahrnutý v MicroPython - objekty DHT11 a DHT22 v module dht. Okrem dátového vodiča pripájame aj zem a napätie (3,3 V). Dátový pin by mal mať pull-up rezistor, väčšina senzorových modulov ho však už má na plošnom spoji implementovaný, preto to obvykle nie je potrebné riešiť.

Senzory DHT zo sady D1 Mini kit sú pripojené k D4 (na ESP32 D1 Mini zodpovedá GPIO 16).

Ukážkový program

Práca so senzorom DHT11 je v MicroPythone veľmi jednoduchá:

from machine import Pin
from dht import DHT11
from time import sleep

teplomer = DHT11(Pin(16)) # ESP32 D1 Mini
while True:
    try:
        teplomer.measure()
    except Exception:
        print("Nastala chyba pri meraní! ")
    else:
        teplota = teplomer.temperature()
        vlhkost = teplomer.humidity()
        print(f"Teplota: {teplota} °C, vlhkosť: {vlhkost} %")
    sleep(1)

A podobne je na tom aj DHT22 - jediným rozdielom je vyššia presnosť:

from machine import Pin
from dht import DHT22
from time import sleep

teplomer = DHT22(Pin(16)) # ESP32 D1 Mini
while True:
    try:
        teplomer.measure()
    except Exception:
        print("Nastala chyba pri meraní! ")
    else:
        teplota = teplomer.temperature()
        vlhkost = teplomer.humidity()
        print(f"Teplota: {teplota:.1f} °C, vlhkosť: {vlhkost:.1f} %")
    sleep(2)