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)