DHT22 (AM2302) Temperatuursensor aansluiten op een Raspberry Pi

Op een Raspberry Pi kun je een groot aantal verschillende sensoren aansluiten, wil je gaan experimenteren met sensoren dan kun je starten met een DHT11 of een DHT22 luchtvochtigheid- en temperatuursensor.

De DHT22 is een meer geavanceerde uitvoering van de DHT11. De sensor kan de waardes van temperatuur en luchtvochtigheid uitlezen tot op een tiende, hierdoor is deze nauwkeuriger dan de DHT11 welke alleen hele waarden kan registreren.

De DHT22 sensoren worden ook verkocht als AM2302 een complete module met de benodigde weerstanden. In dit stappenplan gebruiken we een AM2302 variant.

Componenten voor dit project

AM2302 (DHT22) temperatuur- en luchtvochtigheidssensor
• 3x Dupont verbindingskabel (female/female)

Aansluitschema voor luchtvochtigheid- en temperatuursensor

DHT22 Raspberry Pi sensor

Raspberry Pi A+/B+, 2 en 3

Verbind de pinnen van AM2302 (DHT22) sensor met de Raspberry Pi volgens het onderstaand schema:

Sensor Pin VCC -> Raspberry Pi pin (1) 3.3v
Sensor Pin DAT -> Raspberry Pi pin (7) GPIO 4
Sensor Pin GND -> Raspberry Pi pin (6) Ground

Wanneer je een losse DHT22 sensor gebruikt dan kun je deze aansluiten volgens de instructies van de DHT11 deze kun je hier terugvinden.

Python library installeren

Om te kunnen communiceren met de temperatuursensor hebben we de speciale Python library van Adafruit nodig, deze kun je installeren met behulp van de onderstaande twee stappen:

sudo apt-get install python-dev
git clone https://github.com/adafruit/Adafruit_Python_DHT
cd Adafruit\_Python\_DHT && sudo python setup.py install

Python script

# Raspberry Pi Tips & Tricks - https://raspberrytips.nl

import Adafruit_DHT

humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 4)

humidity = round(humidity, 2)
temperature = round(temperature, 2)

if humidity is not None and temperature is not None:

  print 'Temperatuur: {0:0.1f}*C'.format(temperature)
  print 'Luchtvochtigheid: {0:0.1f}%'.format(humidity)

else:

  print 'Geen data'

Je kunt het Python script heel eenvoudig downloaden op je Raspberry Pi met behulp van het commando:

wget https://raspberrytips.nl/files/dht22temp.py

De DHT22 (AM2302) sensor uitlezen

Nadat het Python script is gedownload kunnen we de waarden van de sensor gaan uitlezen, dit doe je door het Python script met root rechten te starten:

sudo python dht22temp.py

Na het uitvoeren van het script zal de gemeten temperatuur en luchtvochtigheid worden weergeven.

DHT22 temperature humidity terminal

20 gedachten over “DHT22 (AM2302) Temperatuursensor aansluiten op een Raspberry Pi”

  1. Na het uitvoeren van dht22.py script krijg ik de volgenden melding:

    sudo python dht22.py
    Traceback (most recent call last):
    File “dht22.py”, line 5, in
    humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 4)
    File “/home/pi/Adafruit_Python_DHT/Adafruit_DHT/common.py”, line 90, in read_retry
    humidity, temperature = read(sensor, pin, platform)
    File “/home/pi/Adafruit_Python_DHT/Adafruit_DHT/common.py”, line 76, in read
    platform = get_platform()
    File “/home/pi/Adafruit_Python_DHT/Adafruit_DHT/common.py”, line 51, in get_platform
    from . import Raspberry_Pi_2
    File “/home/pi/Adafruit_Python_DHT/Adafruit_DHT/Raspberry_Pi_2.py”, line 22, in
    from . import Raspberry_Pi_2_Driver as driver
    ImportError: cannot import name Raspberry_Pi_2_Driver

    Wat kan hier aan de hand zijn?

    Beantwoorden
  2. @richard ik de commando’s opnieuw gedaan en dit lijkt correct te zijn uitgevoerd.
    Zou het kunnen dat ik dit op een RPI3 doe? Omdat hij verwijst naar een driver voor RPI2.

    Beantwoorden
    • @jos waarschijnlijk heeft je voorbeeldscript de naam dht22.py, dit geeft een conflict met de Python library. Als je benaming zoals hierboven beschreven gebruikt werkt het zonder problemen.

      Beantwoorden
  3. @ richard.
    mm, ik ben bang dat het script bij mij dht22temp.py heet zoals beschreven, maar toch krijg ik de foutmelding zoals wim die ook beschreven heeft.
    ik run het script in de root (tenminste ik do eerst sudo su)

    enig idee?
    Jos

    Beantwoorden
  4. Hoi,

    Ik gebruik een pi3 ook.
    Hij errort helaas

    “temp.py” 16 lines, 418 characters writtenpi@raspberrypi:~$ sudo python temp.py File “temp.py”, line 5 humidity = round(humidity, 2) ^SyntaxError: invalid syntax

    Het pijltje staat onder laatste letter humidity

    Beantwoorden
  5. Als de sensor niet goed is aangesloten geeft dit script een floaring error op de regel met round onder het uitlezen. Dat deed mij de code aanpassen, terwijl de code op zich goed was, maar de schakeling was dat niet.

    Het zou beter zijn deze error op te vangen en dan te printen “sensor niet goed bedraad? “.
    Try:
    lees sensor
    rond variabelen af
    Except
    print “geen waarde uitgelezen, check de bedrading?

    Beantwoorden
  6. Prima script.

    Overigens : in het datasheet van AM2302 staat dat de 1-Wire interface incompatibel is met de Dallas/Maxim. Daar kwam ik achter toen ik een breakout board voor de RaspberryPi had geïnstalleerd en de AM2302 in het circuit opnam. OWFS ondersteunt het protocol NIET !

    Beantwoorden
  7. Als na deze handleiding het script niet draait en je de melding ” No module named Adafruit_DHT” krijgt, kun je het oplossen door onderstaande uit te voeren (ik heb een Pi 2 model B)

    cd Adafruit_Python_DHT
    sudo apt-get update
    sudo apt-get install build-essential python-dev python-openssl
    sudo python setup.py install

    Vervolgens van deze handleiding verder gaan met:

    wget https://raspberrytips.nl/files/dht22temp.py
    sudo python dht22temp.py

    Beantwoorden
  8. Je kunt voor de DHT22 inderdaad ook een andere GPIO gebruiken, bijvoorbeeld GPIO #22 (pin #15)

    In het script vervang je de regel:

    humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 4)
    door:
    humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 22)

    Beantwoorden
  9. Ik krijg steeds onderstaande foutmelding, maar ik krijg deze niet opgelost.
    Sensor is aangesloten op een Raspberry PI 4B.

    Iemand enig idee?

    sudo python /home/pi/Desktop/dht22temp.py
    Traceback (most recent call last):
    File “/home/pi/Desktop/dht22temp.py”, line 7, in
    humidity = round(humidity, 2)
    TypeError: a float is required

    Beantwoorden
  10. Op de Pi4B het zelfde probleem.

    Echter alle stappen opgevolgd op een Pi Zero W geen probleem.
    Meet nu de temperatuur op drie locaties, nog wel 3*PiZero mogelijk te integreren etc. volgende stappen. Eerst meer kennis van Python opbouwen.

    Weet iemand hoe de uitlezing te combineren met een P1meter monitor van ZTATZ?
    is heel mooi, ook binnen temperatuur te integreren in schaal en dashboard.

    Beantwoorden

Plaats een reactie