21. díl o Arduinu – připojujeme senzor DHT-11

V minulém díle jsme načali sériový monitor a dnes se na něm pokusíme zobrazit první data z čidla. Čidlo, které budeme pro náš pokus používat má označení DHT-11. Tento typ čidla je velmi oblíbený, protože měří teplotu a vlhkost.

IMG_4580

Čidel je pro Arduino celá řada, většina z nich ale potřebuje své vlastní knihovny, které se naštěstí dají stáhnout na mnoha různých webových stránkách, nicméně knihovnu pro dnešní díl jsme si pro vás připravili my. To z toho důvodu, abyste dělali se stejnou knihovnou, protože některé se liší funkcemi či volání funkcí a také proto, že tuto jsme otestovali a je plně funkční.

Knihovny se importují přímo v IDE Arduina. Nahoře v IDE tedy zvolíte z lišty Projekt/import knihovny/přidat knihovnu a vyberete stažený soubor. Pokud byste importovali knihovnu z jiného webu, dbejte na to, aby byla ve formátu .ZIP. Jiný formát Arduino IDE neumí, a tak import není možný.

Čidlo se připojuje velmi jednoduše. Má čtyři piny, ze kterých se používají jen tři. Když se tedy na čidlo podíváte z přední strany, tak od leva jsou to piny pro napájení z 5V, vedle něj pin pro data, třetí pin je neobsazený a poslední, tedy čtvrtý je uzemnění. Ten se tedy připojuje do místa, kde má Arduino GND.

Tedy první pin čidla se připojí na Arduino do místa označené jako 5V, data do některého z digitálních pinů a GND na GND Arduina. Tímto je připojení tedy hotovo a můžete si jej také prohlídnout na fotografiích.

Nyní se ale pustíme do programování. Jako první tedy budeme muset přidat knihovnu pro čidlo DHT a definovat několik vlastností. Tyto první řádky budou umístěny ještě před funkcí loop() či setup(). Je tedy vhodné je umístit hned na začátek souboru.

Code!

#include <DHT.h>

#define DHTPIN 50

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

Pokud budete používat desku Arduino, která je rychlejší, jako je třeba DUE, tak je zapotřebí poslední řádek trochu změnit a to na tento

Code!

DHT dht(DHTPIN, DHTTYPE, 30);

Je to z toho důvodu, že deska DUE má rychlejší čip a pokud se tato změna neprovede, budete získávat špatná data ze senzoru, či dokonce žádné nezískáte. Nyní už jen naplníme funkci setup() dvěma řádky, které zahájí sériovou komunikaci a načtou senzor DHT.

Code!

Serial.begin(9600);

dht.begin();

Po tomto už jen vypíšeme hodnoty ze senzoru do sériového monitoru. Následující řádky budou umístěny ve funkci loop()

Code!

delay(500);

int h = dht.readHumidity();

int t = dht.readTemperature();

if (isnan(h) || isnan(t)) {

Serial.println("Chyba čtení z DHT senzoru!");

return;

}

Serial.print("Vlhkost: ");

Serial.print(h);

Serial.print(" %\t");

Serial.print("Teplota: ");

Serial.print(t);

Serial.print(" *C ");

Serial.println();

Procedura začíná sice trochu netradičně, nicméně první čekání je zapotřebí k načtení dat z čidla. Pokud bychom se rozhodli, že data z čidla budeme číst rychleji, buď odpověď nezískáme anebo data budou špatná. Z tohoto důvodu se vyplatí si na data počkat. Čidlo DHT-11 sice moc přesné není, v teplotě měří s přesností na dva stupně celsia a ve vlhkosti může být rozdíl až 10%. Nicméně pro základní a rychlé údaje je více než dostačující. Ale i přes to se v příštím díle podíváme na čidlo DHT-22, které je skoro stejné, jako toto, jen je o dost přesnější.

„Líbil se Vám tento článek? Sdílejte ho prosím na sociálních sítích, ať se o něm dozvědí i Vaši kamarádi. Děkuji!“
Share on FacebookShare on Google+Tweet about this on TwitterShare on TumblrEmail this to someone