KY-015 Capteur de t° et d'humidité DHT11

De SensorKit X40 Wiki

Aller à : navigation, rechercher

Photo

ky-015.jpg

Données techniques / Description sommaire

Capteur de t° et d'humidité basé sur le DHT11. Il communique via une liaison 1-Wire:
- plage de mesure humidité: 20-90% HR
- plage de mesure température: 0-50 ° C

L'avantage de ce capteur est la combinaison de la mesure de la température et de l'humidité dans un boîtier compact. Cependant, l'inconvénient est le faible taux d'échantillonnage de la mesure, de sorte qu'un nouveau résultat de mesure est disponible seulement toutes les 2 secondes. Ce capteur est donc très bon pour les mesures sur la durée.

Brochage

3 G V S.png

Exemple de code pour Arduino

La sortie de ce capteur n'est pas analogique mais numérique. 

Pour contrôler ce capteur, nous utiliserons la librairie Adafruit_DHT publiée sous la licence open source [htthttps://github.com/adafruit/Adafruit_Python_ADS1x15/blob/master/LICENSEp:// Licence MIT].

L'exemple ci-dessous utilise cette librairie et nous recommandons de décompresser le dossier dans le dossier des librairies Arduino, qui par défaut se trouve dans C:\Users\[nom d'utilisateur]\Documents\Arduino\libraries. La librairie est également incluse dans le pack à télécharger ci-dessous.

// Insertion de la librairie Adafruit_DHT
#include "DHT.h"

// déclaration de la broche d'entrée
#define DHTPIN 2     

// initialisation du capteur
#define DHTTYPE DHT11   // DHT 11
DHT dht(DHTPIN, DHTTYPE);

void setup() 
{
  Serial.begin(9600);
  Serial.println("Test du module KY-015 Test - Temperature et humidite:");

  // début de la mesure
  dht.begin();
}

// Boucle de programme principale
// Début du programme et lecture des mesures
// Une pause de 2 secondes est insérée entre 2 mesures
void loop() {

  // délai de 2 secondes entre 2 mesures
  delay(2000);

  // mesure de l'humidité
  float h = dht.readHumidity();
  // mesure de la température
  float t = dht.readTemperature();
  
  // on vérifie si les mesures sont exécutées sans faute
  // Lors de la détection d'une erreur, affichage d'un message d'erreur
  if (isnan(h) || isnan(t)) {
    Serial.println("Erreur de lecture du capteur");
    return;
  }

  // Envoi dans la console série
  Serial.println("-----------------------------------------------------------");
  Serial.print("Humidite: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(char(186)); //Affiche le symbole <°>
  Serial.println("C ");
  Serial.println("-----------------------------------------------------------");
  Serial.println(" ");
}

Ce capteur donne des mesures toutes les 2 secondes et convient pour des mesures à long terme.

Exemple de programme à télécharger:

KY-015.zip

Affectation des broches Arduino:

GND = [Pin GND]
+V = [Pin 5V]
Signal = [Pin D2]

Exemple de code pour Raspberry Pi

Ce programme utilise la librairie Adafruit_Python_DHT de la société Adafruit pour faire fonctionner le capteur. Elle est téléchargeable Librairie python sous licence MIT.

La librairie doit être installé au préalable en suivant la procédure ci-dessous:

Il faut d'abord installer le logiciel GitHub dans la Raspberry si ce n'est pas déjà fait: 

sudo apt-get install git

La carte Raspberry Pi doit être connectée à internet. Avec la commande ci-dessous...

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

... la dernière version de la librairie Adafruit_BM085 Library peut être téléchargée et décompressé.

On se rend en suite dans le dossier téléchargé...

cd Adafruit_Python_DHT/

... on vérifie que les dernières mises à jours sont effectuées...

sudo apt-get update
sudo apt-get install build-essential python-dev python-openssl

... et on installe la librairie.

sudo python setup.py install

On peut alors utiliser la librairie.

Pour que la carte Raspberry Pi puisse communiquer en I2C avec le capteur, il faut activer la fonction I2C sur la Raspberry Pi. À cette fin, la ligne suivante doit être ajoutée à la fin du fichier "/boot/config.txt"

    dtparam=i2c_arm=on

 Le fichier peut être modifié avec la commande suivante:

sudo nano /boot/config.txt

Après avoir ajouté la ligne, le fichier sera enregistré et fermé en utilisant la séquence de touches [Ctrl + X -> O -> Entrée].

En outre, des librairies supplémentaires sont nécessaires pour utiliser le bus I2C en Python. On utilise la commande ci-dessous pour les installer:

sudo apt-get install python-smbus i2c-tools -y

Après ces opérations, il est conseillé de redémarrée le Raspberry

reboot

L'exemple de code en Python ci-dessous peut être utilisé.

Le programme démarre la mesure au niveau du capteur et délivre en sortie les valeurs mesurées pour la température et l'humidité.

#!/usr/bin/python
# coding=utf-8

# Les modules nécessaires sont importés et mis en place
import RPi.GPIO as GPIO
import Adafruit_DHT
import time

# instauration d'une pause de 2 secondes entre 2 mesures
sleeptime = 2

# le capteur doit être réglée sur Adafruit_DHT.DHT11,
# Adafruit_DHT.DHT22, or Adafruit_DHT.AM2302.
DHTSensor = Adafruit_DHT.DHT11

# déclaration de la broche de raccordement du capteur
GPIO_Pin = 23

print('Test du module KY-015 Test - Température et humidité')

try:
    while(1):
        # la mesure débute et les résultats sont contenus dans les variables correspondantes
        Humidite, Temperature = Adafruit_DHT.read_retry(DHTSensor, GPIO_Pin)

        print("-----------------------------------------------------------------")
        if Humidite is not None and Temperature is not None:

            # Les résultats sont envoyés dans la console
            print('Température = {0:0.1f}°C  | Humidité relative = {1:0.1f}%'.format(Temperature, Humidite))

        # Étant donné que le Raspberry Pi est désavantagé en raison du système d'exploitation Linux
        # pour les applications en temps réel, il est possible de la communication échoue en raison d'un
        # délai trop long. Dans ce cas, un message d'erreur s'affiche.
        else:
            print('Erreur lors de la lecture - Veuillez attendre le prochain essai!')
        print("-----------------------------------------------------------------")
        print("")
        time.sleep(sleeptime)

# remise en place de tous les GPIO en entrées
except KeyboardInterrupt:
    GPIO.cleanup()

Ce capteur donne des mesures toutes les 2 secondes et convient pour des mesures à long terme.

Brochage Raspberry Pi:

GND = GND [Pin 06]
+V = 3,3V [Pin 01]
Signal = GPIO23 [Pin 16]

Exemple de programme à télécharger

KY-015_RPi_TempHum.zip

Commande pour lancer le programme:

sudo python KY-015_RPi_TempHum.py