Wiring #
Ps. de weerstand is nodig voor de pull-up!
Raspberry Pi pin: | DHT11 pin: |
---|---|
1 (+3.3v) | 1 (+3.3 – 5v) |
7 | 2 (data) |
14 (GND) | 4 (GND) |
Raspberry Pi pin: | DHT22 pin: |
---|---|
1 (+3.3v) | 1 (+3.3 – 5v) |
18 | 2 (data) |
14 (GND) | 4 (GND) |
Scripts (python) #
Library #
https://github.com/adafruit/Adafruit_Python_DHT
Adafruit_Python_DHT (gedownload 2015-03-13).7z #
Onderstaand script leest eenvoudig een DHT 11 sensor uit op GPIO 4, en geeft de waarden weer via de console.
Maak een bestand aan, bijvoorbeeld /usr/src/dht.py (evt onder root, en vergeet niet chmod te gebruiken om het bestand uit te kunnen voeren), voeg deze inhoud daar in toe:
# Importeer Adafruit DHT bibliotheek.
import Adafruit_DHT
humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT11, 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 Luchtvochtigheid = {1:0.1f}%'.format(temperature, humidity)
else:
print 'Kan de sensor niet uitlezen!'
Commandolijn parameters #
Wil je commandolijn parameters gebruiken?, bijvoorbeeld als je meerdere DHT sensors hebt aangesloten via de GPIO pinnen, gebruik deze voorbeeld code.
Start het script met commandolijn: sudo python /usr/src/dht.py [11/22/2302] [GPIO pin]
Het commando sudo python /usr/src/dht.py 22 24 leest bijvoorbeeld een DHT22 sensor uit die aangesloten is op GPIO pin 24 (Broadcom SOC)
# Importeer Adafruit DHT bibliotheek.
import Adafruit_DHT
# Importeer bibliotheek voor systeemfuncties.
import sys
# Commandolijn parameters verwerken.
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]
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
humidity = round(humidity, 2)
temperature = round(temperature, 2)
if humidity is not None and temperature is not None:
print 'Temperatuur = {0:0.1f}*C Luchtvochtigheid = {1:0.1f}%'.format(temperature, humidity)
else:
print 'Kan de sensor niet uitlezen!'
Gegevens wegschrijven naar CSV bestand #
Je kan de gegevens ook opslaan in een CSV bestand, onderstaand script maakt ook gebruik van de commandolijn parameters en slaat gegevens op in een bestand (per maand) in /usr/src/DHT_DATA_[YYYY]_[MM].csv
# Importeer Adafruit DHT bibliotheek.
import Adafruit_DHT
# Importeer bibliotheek voor systeemfuncties.
import sys
# Importeer bibliotheek voor tijdfuncties.
import time
# Importeer bibliotheek voor CSV functies.
import csv
# Definieer variabelen.
DY = time.strftime("%Y")
DM = time.strftime("%m")
DD = time.strftime("%d")
TH = time.strftime("%H")
TM = time.strftime("%M")
# Commandolijn parameters verwerken.
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]
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
humidity = round(humidity, 2)
temperature = round(temperature, 2)
if humidity is not None and temperature is not None:
print 'Temperatuur = {0:0.1f}*C Luchtvochtigheid={1:0.1f}%'.format(temperature, humidity)
else:
print 'Kan de sensor niet uitlezen!'
data = [DY, DM, DD, TH, TM, humidity, temperature]
# Sla gegevens op in een bestand (per maand) in /usr/src/DHT_DATA_[YYYY]_[MM].csv
csvfile = "/usr/src/DHT_DATA_" + DY + DM + ".csv"
# Open het csv bestand en schijf door achter de bestaande inhoud.
with open(csvfile, "a") as output:
writer = csv.writer(output, delimiter=";", lineterminator='\n')
writer.writerow(data)
De inhoud van het CSV bestand ziet er zo uit:
2015;03;13;13;56;35.0;23.0
2015;03;13;13;59;35.0;23.0
2015;03;13;14;06;35.0;23.0
2015;03;13;14;06;35.0;23.0
2015;03;13;14;06;36.0;23.0
2015;03;13;14;06;47.0;29.0
DHT22 script (python) #
Onderstaand script leest eenvoudig een DHT 22 sensor uit op GPIO 18, en geeft de waarden weer via de console.
Maak een bestand aan, bijvoorbeeld /usr/src/dht.py (evt onder root, en vergeet niet chmod te gebruiken om het bestand uit te kunnen voeren), voeg deze inhoud daar in toe:
#!/usr/bin/python
import Adafruit_DHT
gpiopin = 18
HUM = 0.0
TEMP = 0.0
HUM, TEMP = Adafruit_DHT.read(Adafruit_DHT.DHT22, gpiopin)
if HUM >0 and TEMP >0:
HUM = round(HUM, 2)
TEMP = round(TEMP, 2)
print '{0:0.1f}'.format(TEMP) + ';' + '{0:0.1f}'.format(HUM)
else:
print '0;0'
Products #
Source #
https://community.mydevices.com/t/dht11-dht22-with-raspberry-pi/2015