Modius - Techblog

  • Ansible
  • Docker
  • DevOps
  • Gastautor werden
  • Newsletter abonnieren
  • Über Mich
  • Kontakt

Raspberry Pi – Temperatur und Luftfeuchtigkeit

Veröffentlicht am 15. Juni 2017 von Christian Piazzi 4 Kommentare , Aktualisiert am 15. Juni 2017
Geschätzte Lesezeit: 2 Minuten

AM2301Um mit dem Raspberry Pi die Temperatur und die Luftfeuchtigkeit zu messen, habe ich mir einen entsprechenden Sensor zugelegt. Dabei handelt es sich um den AM2301.

Diese ist dem typischen DHT 22 sehr ähnlich und lässt sich auch mit den gleichen Python Libarys ansprechen.

Aufbau des AM2301 in einer Teststellung

Für unsere kleine Teststellung habe ich einen Raspberry Pi 3, einen AM2301, ein Breadboard und ein paar Jumper Kabel verwendet. Alles angeschlossen sieht dann so aus:

RPI-AM2301

Sicherheitshalber habe ich auch nochmal eine kleine Zeichnung erstellt =)

RPI-AM2301Adafruit Python DHT Sensor Library

Zum Ansteuern des AM2301 verwende ich die DHT Sensor Library. Diese steht unter MIT Lizenz und kann einfach von GitHub geladen werden. Vor dem Download sollten wir das System noch darauf vorbereiten. Dafür installieren wir die Pakete build-essentail und python-dev.

Shell
1
2
sudo apt-get update
sudo apt-get install build-essential python-dev

Anschließend können wir das GitHub Repository klonen.

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

Nach dem nun der Quellcode auf unserem System ist, müssen wir diesen konfigurieren. Dafür wechseln wir in den Ordner Adafruit_Python_DHT und führen anschließend den Setup Aufruf durch.

Shell
1
2
cd Adafruit_Python_DHT/
python setup.py install

Nun können wir auf die Library zurückgreifen.

Erster Test mit AdafruitDHT.py

Im Ordner examples gibt es Beispiele für die Verwendung. In diesen wechseln wir nun.

Shell
1
cd examples

Hier verwenden wir die für einen ersten die AdafruitDHT.py. Schauen wir uns das Skript erstmal etwas mit einem Editor an. Für die Übersicht habe ich die ganzen Kommentare erstmal entfernt.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/python
import sys
 
import Adafruit_DHT
 
 
sensor_args = { '11': Adafruit_DHT.DHT11,
                '22': Adafruit_DHT.DHT22,
                '2302': Adafruit_DHT.AM2302 }
if len(sys.argv) == 3 and sys.argv[1] in sensor_args:
    sensor = sensor_args[sys.argv[1]]
    pin = sys.argv[2]
else:
    print('usage: sudo ./Adafruit_DHT.py [11|22|2302] GPIOpin#')
    print('example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO #4')
    sys.exit(1)
 
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
 
if humidity is not None and temperature is not None:
    print('Temp={0:0.1f}*  Humidity={1:0.1f}%'.format(temperature, humidity))
else:
    print('Failed to get reading. Try again!')
    sys.exit(1)

Für uns sind erstmal nur die Zeilen 7 – 9 und 10 – 12 interessant.

In den Zeilen 7 – 9 wird eine Key/Value Liste aufgebaut. Dabei handelt es sich um die Möglichen Sensor Typen (22, 11 und 2302) und dem entsprechenden Verweis in die Library. Das heißt für uns, dass wir mit der Adafruit Python DHT Sensor Library die Sensoren von Typ DHT 22, DHT 11 oder AM2302 ansprechen können.

In den Zeilen 10 – 12 werden nun die entsprechenden Informationen für den Sensor Typ und der GPIO Port an dem der Sensor angeschlossen ist eingelesen. Das ist bei uns der Port 4.

Ein Testaufruf auf dem Terminal sehe dann so aus:

Shell
1
2
root@raspberrypi:~/Adafruit_Python_DHT/examples# ./AdafruitDHT.py 2302 4
Temp=26.2*  Humidity=51.3%

Als Rückgabe bekommen wir die Temperatur und die Luftfeuchtigkeit.

Wichtig hierbei ist, dass der Sensor nicht jede Sekunde abgefragt werden kann. Er hat eine leichte Verzögerung. Dies hat zur folge das man nur alle 2 – 3 Sekunden auch einen Wert zurückbekommt. Dies fällt relativ schnell auf, wenn er versucht den Befehl mehrere male hintereinander auszuführen.

Kategorie: Mikrokontroller, Technik Tags: AM2301, Feuchtichgkeit, Luftfeuchtigkeit, Raspberry Pi, RPI, Temperatur

Über Christian Piazzi

Ich blogge hier über alles, was mir so in meinem ITler Altag über den Weg läuft =)
Man findet mich privat bei Google+ und Twitter

Kommentare

  1. Thomas meint

    3. Dezember 2017 um 16:48

    # Temperaturverleich mit 2 DHT22

    #!/bin/bash

    ZAEHLER=1
    cd /home/pi/adafruit/Adafruit-Raspberry-Pi-Python-Code-master/Adafruit_DHT_Driver/

    while [ $ZAEHLER -le 10000 ]
    do

    DATUM=date '+%d.%m.%Y'
    ZEIT=date '+%H:%M:%S'
    COUNTER1=0
    COUNTER2=0
    LUFT1=““
    LUFT2=““
    TEMP1=““
    TEMP2=““

    while [ „$LUFT1“ == „“ ]; do
    WERTE=$(sudo ./Adafruit_DHT 22 4)
    TEMP1=( $(echo $WERTE | awk ‚{print $13}‘))
    LUFT1=( $(echo $WERTE | awk ‚{print $17}‘))
    let COUNTER1=COUNTER1+1
    done

    while [ „$LUFT2“ == „“ ]; do
    WERTE2=$(sudo ./Adafruit_DHT 22 25)
    TEMP2=( $(echo $WERTE2 | awk ‚{print $13}‘))
    LUFT2=( $(echo $WERTE2 | awk ‚{print $17}‘))
    let COUNTER2=COUNTER2+1
    done

    LUFTDIFF=$(echo „$LUFT1 $LUFT2“ | awk ‚{ print($1 – $2) }‘)
    TEMPDIFF=$(echo „$TEMP1 $TEMP2“ | awk ‚{ print($1 – $2) }‘)

    echo -e „$DATUM \t $ZEIT \t $ZAEHLER \t $TEMP1 \t $TEMP2 \t $TEMPDIFF \t $LUFT1 \t $LUFT2 \t $LUFTDIFF“

    sleep 1s
    ((ZAEHLER++))

    done

    Antworten
    • Christian Piazzi meint

      3. Dezember 2017 um 23:11

      Danke für das Script =)

      Antworten
  2. Andre meint

    23. April 2019 um 08:09

    many thanks for this very good blog article !
    I would like hereby to confirm, all this is working very well in python3, too.
    on some systems (e.g. Raspbian) you only have to install the „python3-dev“ instead of python-dev.
    And install then with:
    cd Adafruit_Python_DHT/
    python3 setup.py install
    The given example is already python3-style.

    Vielen Dank fuer diesen sehr guten Blog-Artikel.
    Ich moechte hier sagen, dass alles oben genannte auch mit Python3 sehr gut funktioniert. Auf manchen Systemen (insbesondere Raspbian) muss man aber das python3-dev – Paket installieren und den Setup-Aufruf ala: python3 setup.py install durchfuehren.
    Das o.g. Beispiel ist schon Python3 kompatibel..

    Cheers,
    Andre

    Antworten

Trackbacks

  1. Raspberry Pi mit DHT21/AM2301 in Betrieb nehmen - Nicks-Technik sagt:
    13. Oktober 2020 um 23:02 Uhr

    […] Beispiel habe ich hier im Internet gefunden. Ein weiteres interessantes Beispiel ist die Anbindung an Google Docs […]

    Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

  • Linux
  • Internet, Bloggen & Co
  • Programmierung
  • Sicherheit
  • Netzwerk & Co
  • Mikrokontroller
  • Windows

Beliebte Artikel

  • Docker Container – anzeigen, starten, stoppen und löschen
  • Nextcloud https mit self-signed Zertifikat einrichten
  • ioBroker auf dem Raspberry Pi installieren und konfigurieren
  • Soft- und Hardlinks unter Linux
  • Arten von Betriebssystemen

Neueste Kommentare

  • Docker Compose Guide - Modius - Techblog bei Docker Compose – Automatisiertes starten von Microservices
  • Keksiminer bei Minecraft Bukkit Server – dynmap installieren und konfigurieren
  • Thorben bei Nextcloud https mit self-signed Zertifikat einrichten
  • Sepp bei Automatisierte Dokumentation von Python Projekten mit sphinx
  • Sascha bei Arduino – 4fach 7-Segmentanzeige mit Schieberegister

Werbung

Archive

Kontakt, Datenschutz und Impressum

  • Kontakt
  • Datenschutz
  • Impressum

Schlagwörter

Anleitung Ansible Apache Apple App Store Automatisierung Blogparade C++ Centos CentOS7 centos 7 Container Datenbank DevOps Docker Dr. Racket Dr. Scheme funktional Gastartikel Google HowTo httpd Icinga2 Icinga 2 Installation itsm Linux Minecraft Monitoring mooc MySQL owncloud PHP Plugin Programmierung python Raspberry Pi Schritt für Schritt Server Sicherheit Tutorial Ubuntu Update Windows Wordpress

Copyright © 2023 · Outreach Pro on Genesis Framework · WordPress · Anmelden