Pro sérii článku o práci s Raspberry Pi jsem jako další oblíbený modul pro měření teploty a vlhkosti vybral DHT11.
Tento senzor jste mohli vidět v tomto starším článku pro Arduino. Dnes si tedy vyzkoušíme, jak se liší přístup v používání s Raspberry Pi, kdy použitý způsob podporuje také senzory DHT22 a AM2302.

Raspberry Pi: Teplotní senzor DHT11

Pro zapojení senzoru DHT11 s Raspberry Pi nám budou stačit tři propojovací vodiče a jeden rezistor o velikosti 4,7k nebo 10k ohmů. Vodiče zapojíme dle schématu, kdy zleva je to napájecí pin na 3,3V, dále datový pin na pin 4, třetí pin nezapojujeme a poslední čtvrtý pin zapojíme na GND. Odpor pak slouží jako pull-up a je zapojen mezi piny VCC a DATA.

Raspberry Pi: Teplotní senzor DHT11

Nyní se můžeme přesunout na stažení a instalaci knihovny pro práci s DHT senzory. Otevřete Terminál a postupujte následovně.
Prvním příkazem zkontrolujeme, že máme k dispozici všechny potřebné programy, které se případně doinstalují.

sudo apt-get install -y build-essential python-dev python-openssl

V dalším kroku si stáhneme z GIT repozitáře knihovnu Python_DHT, která je od firmy Adafruit.

git clone https://github.com/adafruit/Adafruit_Python_DHT.git

Po úspěšném stažení knihovny se prvním příkazem přesuneme do stažené složky s knihovnou. Druhý příkaz pak slouží ke spuštění skriptu, který provede instalaci knihovny a my pak budeme moci volat skripty z libovolného místa.

cd Adafruit_Python_DHT
sudo python setup.py install

Pokud jste předchozí kroky provedli bez problémů, měli byste mít vše potřebné nastaveno. Můžete se tedy přesunout do složky s příklady a rovnou senzor otestovat. To uděláme pomocí spuštění skriptu „AdafruitDHT.py“, kdy jako jeden parametr zadáme „11“ pro senzor DHT11 a druhý parametr „4“, což odpovídá číslu propojovacího datového pinu.

cd examples
sudo ./AdafruitDHT.py 11 4

Pokud máte senzor správně propojen, měli byste nyní vidět v Terminálu výpis teploty (Temperature) a vlhkosti (Humidity) jako na obrázku níže. Měření trvá delší chvíli, protože v programu je použita funkce, která se pokouší ve dvousekundových intervalech vyčítat informace ze senzoru, přičemž těchto pokusů je maximálně 15. Pokud se tedy do 30 sekund nepodaří načíst data, program vypíše chybovou hlášku a bude ukončen.

Raspberry Pi: Teplotní senzor DHT11

Pro jednoduší přehled, jak vlastně program funguje, jsem jeho zjednodušenou verzi upravil s českými komentáři. Jak tedy vidíte níže, na začátku programu se nachází připojení knihoven a nastavení typu senzoru společně s číslem propojovacího pinu. Pokud byste tedy chtěli použít například senzor DHT22, stačí ho na příslušeném řádku přepsat místo DHT11.
Dále vidíme samotné načtení teploty a vlhkosti do příslušných proměnných, kdy proběhne maximálně 15 pokusů o čtení, jak jsem již zmínil dříve. Na konci programu pak vidíme podmínku if, v které se nachází kontrola obou údajů, kdy se kontroluje, jestli nejsou nulové. Pokud tedy máme naměřené údaje, vytiskneme je do Terminálu. Pokud by se ale načtení údajů nepodařilo, dostaneme o tom taktéž informaci.

# DHT11 Raspberry Pi Test

# Nacteni knihoven
import sys
import Adafruit_DHT

# Nastaveni typu senzoru a cisla propojovaciho pinu
sensor = Adafruit_DHT.DHT11
pin = 4

# Nacteni vlhkosti a teploty do promennych,
# provede se az 15 pokusu o mereni s intervalem 2 sekundy
vlhkost, teplota = Adafruit_DHT.read_retry(sensor, pin)

# Pokud jsou oba udaje nenulove, vytiskneme je,
# pokud ne, vytiskneme informaci o chybe.
if vlhkost is not None and teplota is not None:
    print('Teplota: {0:0.1f} stC, vlhkost: {1:0.1f} %RH.'.format(teplota, vlhkost))
else:
    print('Chyba pri cteni udaju, zkuste znovu!')
    sys.exit(1)

Pokud si tedy překopírujete uvedený kód do nového skriptu v programu Python 2 (IDLE), můžete přejít ke spuštění. To můžete udělat buď pomocí tlačítka F5 nebo zavoláním příkazu v nabídce „Run-Run Module“. Poté můžete vidět v konzoli Python Shell informaci o restartu skriptu, po které se nám vypíšou informace o teplotě a vlhkosti v okolí senzoru DHT11.

Raspberry Pi: Teplotní senzor DHT11

Díky tomuto návodu jste nyní schopni připojit svůj senzor DHT11, 22 či AM2302 s Raspberry Pi a vyčítat z něj údaje. A jak Vás jistě napadlo, můžete zapojit senzorů i více najednou, ale je nutné pro každý použít nový pin. Můžete tak z Raspberry Pi vytvořit například meteostanici či díky těmto údajům o teplotě ovládat klimatizaci v místnosti.

 

Zmíněné Raspberry Pi desky na eshopu:

Raspberry Pi 3 B:
https://arduino-shop.cz/arduino/1385-raspberry-pi-3-model-b-quad-core-1-2-ghz-64bit-cpu-1gb-ram-wifi-bluetooth-4-1-1473147122.html

Raspberry Pi 3 B+:
https://arduino-shop.cz/arduino/3067-raspberry-pi-3-model-b-64-bit-1gb-ram.html

Raspberry Pi Zero:
https://arduino-shop.cz/arduino/3106-raspberry-pi-zero-h.html

FB gp tw

Další podobné články