Lekce 6 - čidlo DHT11 - teplota, vlhkost
04.02.2013 14:36Dnes 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
Schema zapojení
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
———
ZpětDiskusní téma: Lekce 6 - čidlo DHT11 - teplota, vlhkost
Datum | 18.03.2015 |
---|---|
Vložil | filko33 |
Titulek | Nenájdená knižnica |
Mne vypisuje to isté, čo Davidovi, knižnicu som tam dal:
Arduino: 1.6.1 (Windows XP), Vývojová deska: "Arduino Uno"
dht11.ino:2:70: fatal error: dht11.h: No such file or directory
compilation terminated.
Chyba kompilace.
———
Datum | 03.03.2015 |
---|---|
Vložil | David |
Titulek | n |
Ahoj co stím když mi to píše chybuže není žádn takový soubor přitom tam je :D
_1.ino:2:70: fatal error: dht11.h: No such file or directory
compilation terminated.
Chyba kompilace.
———
Datum | 16.02.2015 |
---|---|
Vložil | Chashitsu |
Titulek | Debuging |
Stupeň celsia je možné zapsat takto
MojeLCD1.print((char)223);
Pokud se někomu zobrazují pouze bílé čtverce a text je čitelný pouze ze strany, pak je potřeba zapojit 10K potenciometr mezi LCD pin3 a zem. (lze potom ladit kontrast)
———
Datum | 29.01.2015 |
---|---|
Vložil | Adam |
Titulek | použití čidla dallas |
Lze tento program použit rovněž na čidlo dallas??
———
Datum | 11.01.2015 |
---|---|
Vložil | BJ |
Titulek | Celočíselné hodnoty |
Děkuji za návod. Zajímalo by mě, zda lze z čidla dostat hodnoty s rozlišením na jedno desetinné místo? Nyní, i když nadefinuji proměnné jako float, mi arduino s dht11 zobrazuje celočíselné hodnoty. Nebo to toto čidlo neumí?
———
Datum | 12.05.2015 |
---|---|
Vložil | LuBoss |
Titulek | Re: Celočíselné hodnoty |
Přesně tak, toto čidlo umí jenom teplotu na celá čísla a to ještě jenom nad nulou (nemínusové teploty) v rozsahu 0-50°C. Je potřeba koupit dražší verzi čidla např. DHT22. Bohužel mám zkušenost, že snad u všech čidel (i dražších) je velká chyba v měření relativní vzdušné vlhkosti. Datasheet sice píše o přesnosti 2-5%, ale skutečnost je taková, že chyba 30% není žádná vyjímka :-(
Co se týká měření teploty, tak čidla DHT22 a jeho klon AM2321 mají rozumnou přesnost a u měření teploty není co vytknout.
———
Datum | 02.12.2019 |
---|---|
Vložil | DnD |
Titulek | Re: Celočíselné hodnoty |
Přišly mi teď čidla DHT11 z Aliexpressu. Podle jednoho návodu jsem je zobrazil a úspěšně jsem si do konzole vypisoval celé hodnoty. Protože jsem ale nevěděl, že DHT11 umí jen celé stupně, prošel jsem celou DHT knihovnu, abych pochopil, co dělám špatně. Ve finále jsem dospěl k tomu, že knihovna vyčítá 5 hodnot do pole.
V datasheetu zde https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf
píšou toto: Data consists of decimal and integral parts. A complete data transmission is 40bit, and the sensor sends higher data bitfirst. Data format:8bit integral RH data + 8bit decimal RH data + 8bit integral T data + 8bit decimal T data + 8bit check sum.
Tak jsem si upravil knihovnu, že mi na teplotu vrací ne int pole[2], ale float pole[2]+pole[3]*0.1. A desetinné místo je na světě. Desetinné místo pro vlhkost vrací nulu, ale tam mi to v jednotkách opravdu stačí.
———
Datum | 27.12.2014 |
---|---|
Vložil | Mirek |
Titulek | Chyba |
Dobrý den
při compilaci vyskočí chyba:
temp:9: error: 'dht11' does not name a type
temp.ino: In function 'void loop()':
temp:21: error: 'MojeCidlo' was not declared in this scope
co dělám špatně?
Díky
———
Datum | 11.01.2015 |
---|---|
Vložil | BJ |
Titulek | Re: Chyba |
Postupoval jsi přesně? Máš naimportovanou knihovnu? Restartoval jsi potom arduino-soft?
———
Datum | 22.09.2014 |
---|---|
Vložil | Marvin |
Titulek | DHT22 |
Zdravím Vás a prosím o radu.
Nemohu hodnoty vypsat na sériová port, vždy vyhodí hodnotu 0 a 2 na všech pinech krom 0, tam vypisuje pouze nulové hodnoty.
díky Marvni