Lekce 6 – čidlo DHT11 – teplota, vlhkost

Dnes použijeme opět náš displej a k Arduinu si připojíme čidlo vlhkosti a teploty DHT11. Jedná se o jednodrátové digitální čidlo jehož podrobnou specifikaci nebudeme zkoumat. Jeho cena se pohybuje i pod 2$. Nevýhodou je docela malá přesnost, avšak pro naše zkoumání naprosto dostačuje. Kdo by chtěl přesnost vyšší, může si objednat čidlo DHT22 s daleko větší přesností a rychlostí. Cena je však někde jinde. Datasheet ke stažení zde.

Parametry DHT11

  • Měřený rozsah: 20-90%RH; 0-50℃
  • Přesnost měření vlhkosti: ±5%RH
  • Přesnost měření teploty: ±2℃

 

Zapojení s mikroprocesorem

Zapojení pinů na DHT11

 

Teď něco málo k samotnému programu. Protože chytré hlavy již vymyslely a napsali potřebnou knihovnu pro komunikaci s DHT11, ušetřili nám tím hodně práce. Nám bude stačit, když si knihovnu stáhnete zde (vzhledem k tomu, že tento web nepodporuje soubory s příponou *.rar a *.zip, nahrál jsem to na ulozto.cz – v případě, že by tento soubor byl na odkaze nedostupný, napiště na mail a já vám ho pošlu nebo uplouduji znova). Poté rozbalíte a nakopírujete adresář “DHT11” do adresáře “libraries” do místa kde máme nainstalované prostředí Arduino. Samotný program je vysvětlen v komentářích ke každému řádku.

Program

!!! Upozornění !!! 
Vzhledem k tomu, že čidlo je napojeno na pin 0, který slouží při programování ke komunikaci, odpojete propojovací vodič z pin 0 vedoucí do DHT11 při nahrávání programu do Arduina. V opačném případě počítač při programování ukáže chybovou hlášku. Toto platí i pro Arduino UNO. Další možností je připojit datový vývod z DHT11 k jinému pinu např. 10 a upravit program. 

Pokud jste vše udělali správně není důvod, aby něco nefungovalo. Za domácí úkol si na LCD můžete vypisovat i další data z Adruina např. vlhkost. Tuto hodnotu vrací proměná:

int vlhkost = MojeCidlo.humidity; // zapíše hodnotu vlhkosti do proměné vlhkost

 

1 Komentář

  1. Xoanon

    Dobrý den,
    začal jsem se učit s Arduinem a zjistil, že někdo definuje proměnné v hlavičce (např. v 5. lekci http://www.arduino8.cz/lekce-5-lcd-displej/) a někdo např. ve funkci loop jako v tomto případě.
    Co je výhodnější a proč?
    Nemám na mysli žádný složitý program, kde by bylo potřeba průběžně uvolňovat paměť a kde by hrozily problémy s globální viditelností proměnných.
    Díky.

Napsat komentář

Translate »