DHT22 sur raspberry
Posted on 29 novembre 2017
in Raspberry
Le capteur DHT22 (blanc) permet de mesures la température et humidité.
Les différences sont:
|
Plage utilisation humidité |
Plage utilisation température |
DHT11 |
0-100% avec 2-5% de précision de 5% |
0-50°C avec une précision de ±2°C |
DHT22 |
0-100% avec 2-5% de précision 2-5% |
-40 to 80°C avec une précision de ±0.5°C |

En python, il existe une très bonne bibliothèque sur Adafruit.
https://github.com/adafruit/Adafruit_Python_DHT
Installez là :
wget https://github.com/adafruit/Adafruit_Python_DHT
gunzip Adafruit_Python_DHT-master.zip
cd Adafruit_Python_DHT
sudo python setup.py install
Le principe d’utilisation dasn votre script python
#importer la biblothèse
import Adafruit_DHT
# definir le capteur Adafruit_DHT.DHT22, ou Adafruit_DHT.AM2302.
sensor = Adafruit_DHT.DHT22;
#lecture
humidity, temperature = Adafruit_DHT.read_retry(sensor, PIN_DHT22)
Utilisez la de la façon suivante. Ce programme mesure la température et l’humidité et l’enregistre toutes les 10mn dans une base de donnée SQLite3.
import RPi.GPIO as GPIO;
import os;
import time, datetime;
import Adafruit_DHT
import sqlite3
# Adafruit_DHT.DHT22, or Adafruit_DHT.AM2302.
sensor = Adafruit_DHT.DHT22
#Configuration PI-PIN en input
PIN_LED=17;
PIN_DHT22=18;
def setup():
GPIO.setmode(GPIO.BCM);
GPIO.setwarnings(False);
GPIO.setup(PIN_LED, GPIO.OUT, initial=GPIO.HIGH);
GPIO.setup(PIN_DHT22, GPIO.IN);
conn = sqlite3.connect('example.db')
if __name__ == '__main__': # Program start from here
setup();
conn = sqlite3.connect('temperatures.db')
c = conn.cursor()
while True:
today = time.time()
GPIO.output(PIN_LED, GPIO.HIGH)
humidity, temperature = Adafruit_DHT.read_retry(sensor, PIN_DHT22)
#print('Temp={0:0.1f}C Humidity={1:0.1f}%'.format(temperature, humidity))
requete="INSERT INTO temperature VALUES ("+str(time.strftime('%Y'))+","+str(time.strftime('%m'))+","+str(time.strftime('%d'))+","+str(time.strftime('%H'))+","+str(time.strftime('%M'))+","+str(time.strftime('%S'))+",'"+str(round(humidity,2))+"','"+ str(round(temperature ,2))+"')"
c.execute(requete)
# Save (commit) the changes
conn.commit()
time.sleep(600)
juste une petite erreur: le dht11 est bleu et non le dht22
Merci, corrigé.