Raspberry Pi Meteostanice - čidlo vlhkosti DHT-22

Další veličinou, kterou měří každá meteostanice, je vlhkost. K tomuto účelu se dá s Rasberry Pi využít čidlo DHT-22. Toto čidlo obsahuje kromě měřiče vlhkosti i teploměr. Jak toto čidlo připojit k Raspberry Pi?

Čidlo DHT-22 je možné koupit třeba na alza.cz, takže jsem provedl objednávku a příští den jsem měl senzor doma. I toto čidlo má výrazně lepší parametry pro měření teploty než Sense Hat.

Místo čidla DHT-22 je také možné použít čidlo DHT-11 (modré). Celý návod je stejný, jen na konci se v programu musí použít 11 místo 22. Čidlo DHT-11 má trochu horší parametry, ale je levnější. Je ho možné koupit například na gme.cz.

Jak tedy připojit čidlo DHT-22 k Raspberry Pi?

Obrázky se nestihly načíst.
Prosím opakujte akci zachvilku.


Pro připojení je potřeba k čidlu připájet rezistor 4k7. Tento rezistor se připájí mezi napájení a datový vodič. Připojení je znázorněno na obrázku

První výstup zleva je napájení. Čidlo je opět možné napájet napětím 3,3V i 5V (piny 1, 17 i 2 a 4). Druhý výstup je datový, který je možné připojit k libovolnému GPIO pinu. Třetí výstup není potřeba k ničemu připojovat. Čtvrtý výstup je uzemnění a je ho potřeba připojit k pinu s označením Ground (6, 9, 14, 20, 25, 30, 34 nebo 39).

Načtení hodnoty z čidla

Nejjednodušší možností, jak otestovat zda čidlo funguje a je správně připojeno, je použít python knihovnu od Adafruitu. Instalace této knihovny se provádí následujícími příkazy.

sudo apt-get update
sudo apt-get install build-essential git python-dev python-openssl
cd ~
git clone https://github.com/adafruit/Adafruit_Python_DHT
cd Adafruit_Python_DHT
sudo python setup.py install


Nyní máme knihovnu nainstalovanou a zkompilovanou a můžeme zkusit zda čidlo funguje.

Funkčnost ověříme pomocí skriptu AdafruitDHT.py, který se nachází v adresáři examples. Tento script příjmá dva parametry.
První parametr je typ čidla. V případě, že používáte DTH-22, tak se jako hodnota prvního parametru použije číslo 22. Pokud místo čidla DHT-22 používáme čidlo DHT-11, tak hodnotou parametru je číslo 11.
Hodnotou druhého parametru je číslo pinu, ke kterému je připojen datový vodič čidla. Pokud tedy máme čidlo připojené podle obrázku výše, tak je druhý parametr číslo 7.

sudo ./AdafruitDHT.py 22 7


Pokud je všechno zapojeno a nastaveno správně, tak výstupem tohoto scriptu je aktuální teplota a vlhkost.

Temp=22.6*  Humidity=38.6%



Program v Pythonu

Takže známe způsob jak z čidla načíst údaje a můžeme doplnit script pro meteostanici. Potřebujeme opět cyklické načítání hodnot a jejich zápis do databáze.

import subprocess
import re
import time

def read_temp_and_humidity(gpio, sensor):
  adafruit = "/home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py"

  sensorReadings = subprocess.check_output(['sudo','python',adafruit,sensor,gpio])

  try:
    # try to read neagtive numbers
    temperature = re.findall(b"Temp=(-\d+.\d+)", sensorReadings)[0]
  except:
    # if negative numbers caused exception, they are supposed to be positive
  try:
    temperature = re.findall(b"Temp=(\d+.\d+)", sensorReadings)[0]
  except:
    pass

  humidity = re.findall(b"Humidity=(\d+.\d+)", sensorReadings)[0]
  intTemp = float(temperature)
  intHumidity = float(humidity)

  return intTemp, intHumidity


while True:
  print(read_temp_and_humidity("7", "22"))
  time.sleep(60)


Tento script cyklicky načítá hodnoty z čidla a vypisuje je na obrazovku. Pokud jste python knihovnu od Adafruitu nainstalovali do jiného umístění, je potřeba změnit cestu na začátku scriptu. Cesta musí vést ke scriptu AdafruitDHT.py.

Příklad se zápisem hodnot do databáze

Specifikace čidla:
Napájení 3.3 – 6V
Vlhkostní rozsah 0 – 100%
Přesnost měření vlhkosti +-2%
Teplotní rozsah -40 – 80 °C
Přesnost měření teploty +- 0,5 °C

Zdroje:
http://www.instructables.com/id/Raspberry-PI-and-DHT22-temperature-and-humidity-lo/
https://github.com/adafruit/Adafruit_Python_DHT

Nefunkční knihovna AdafruitDHT.py na nejnovějším kernelu Raspberry Pi

Na nejnovějším kernelu Raspberry Pi knihovna od Adafruitu pro DHT, kterou v tomto scriptu využívám, nefunguje. Je tedy potřeba v případě problémů provést downgrade kernelu.

Postup, jak provést downgrade a znovu zprovoznit knihovnu, je popsán v Issue 63.

Meteostanice, Python

- (10. 2. 2020)

Jsem programátor, horolezec a tak trochu FlexiBee fanatik :-).
Na CharlieBlogu sepisuji své nápady a poznatky už od roku 2006.

Powered by CharlieBlog Engine v2.3 - Login