Vlhkost a teplota jsou běžnými parametry pro měření podmínek prostředí. V tomto projektu založeném na Arduinu budeme měřit okolní teplotu a vlhkost a zobrazovat je na 16x2 LCD obrazovce. Kombinovaný snímač teploty a himidity DHT11 se používá s Arduino uno k vývoji tohoto projektu měření teploty a stupnice Celsia a měření vlhkosti. V jednom z mých předchozích projektů jsem také vyvinul digitální teploměr využívající teplotní senzor LM35.
Tento projekt se skládá ze tří částí - jedna snímá vlhkost a teplotu pomocí snímače vlhkosti a teploty DHT11. Druhá část čte výstup modulu DHTsensor a extrahuje hodnoty teploty a vlhkosti do vhodného počtu v procentech a stupních Celsia. A třetí část systému zobrazuje vlhkost a teplotu na LCD.
Práce na tomto projektu je založena na jednovodičové sériové komunikaci. Nejprve arduino pošle startovací signál do modulu DHT a poté DHT dá signál odezvy obsahující údaje o teplotě a vlhkosti. Arduino shromažďuje a extrahuje ve dvou částech, jedna je vlhkost a druhá teplota a poté je odesílá na 16x2 LCD.
Zde v tomto projektu jsme použili senzorový modul, jmenovitě DHT11. Tento modul je vybaven komplexem vlhkosti a teploty s kalibrovaným výstupem digitálního signálu, což znamená, že modul snímače DHT11 je kombinovaný modul pro snímání vlhkosti a teploty, který poskytuje kalibrovaný digitální výstupní signál. DHT11 nám dává velmi přesnou hodnotu vlhkosti a teploty a zajišťuje vysokou spolehlivost a dlouhodobou stabilitu. Tento snímač má odporovou součást pro měření vlhkosti a součást pro měření teploty typu NTC s vestavěným 8bitovým mikrokontrolérem, který má rychlou odezvu a je efektivní z hlediska nákladů a je k dispozici ve 4kolíkovém jednořadém balení.
Modul DHT11 pracuje na sériové komunikaci, tj. Jednovodičové komunikaci. Tento modul odesílá data ve formě sledu pulzů konkrétního časového období. Před odesláním dat na arduino potřebuje nějaký inicializační příkaz s časovým zpožděním. Celá doba procesu je asi 4 ms. Kompletní přenos dat je 40bitový a datový formát tohoto procesu je uveden níže:
8bitová integrální data RH + 8bitová desetinná data RH + 8bitová integrální data T + 8bitová desetinná data T + 8bitový kontrolní součet.
Dokončit proces
Nejprve arduino vyšle signál DHT11 od vysoké do nízké se zpožděním 18 µs, aby byla zajištěna detekce DHT. A pak Arduino vytáhne datovou linku a počká na 20 - 40 µs na odpověď DHT. Jakmile DHT detekuje spouštěcí signál, vyšle signál odezvy nízké úrovně napětí na arduino s časovým zpožděním asi 80µs. A pak řadič DHT vytáhne datovou linku a udrží ji po dobu 80 µs pro uspořádání odesílání dat DHT.
Když je datová sběrnice na nízké úrovni napětí, znamená to, že DHT11 odesílá signál odpovědi. Jakmile je hotovo, DHT opět provede vytažení datové linky po dobu 80 µs pro přípravu přenosu dat.
Datový formát, který odesílá DHT na arduino pro každý bit, začíná 50µs nízkou úrovní napětí a délka signálu vysoké úrovně určuje, zda je datový bit „0“ nebo „1“.
Jednou důležitou věcí je zajistit hodnotu pull up rezistoru, protože pokud umisťujeme senzor DHT do vzdálenosti <20 metrů, doporučuje se 5k pull up rezistor. Pokud umístíte DHT na déle než 20 metrů, použijte odpor s odpovídající hodnotou.
Schéma zapojení a vysvětlení
K zobrazení teploty a vlhkosti se používá displej z tekutých krystalů, který je přímo připojen k arduino ve 4bitovém režimu. Kolíky LCD, jmenovitě RS, EN, D4, D5, D6 a D7, jsou připojeny k digitálnímu kolíku arduino číslo 2, 3, 4, 5, 6 a 7. A senzorový modul DHT11 je také připojen k digitálnímu kolíku 12 arduino s 5k pull-up rezistor.
Popis programování
V programování použijeme předem připravené knihovny pro senzor DHT11 a modul LCD displeje.
Pak jsme vytvořili definované piny pro LCD a DHT senzor a inicializovali všechny věci v nastavení. Pak ve smyčce pomocí funkce dht načte snímač DHT a poté pomocí některých funkcí dht extrahujeme vlhkost a teplotu a zobrazíme je na LCD.
Zde je symbol stupně vytvořen pomocí vlastní metody znaků.