Les DHT 11, 22, Raspberry ça marche enfin !

Aaahhh, le Raspberry et les DHT de tout type viennent de faire un grand pas car Adafruit met à notre disposition une bibliothèque destinée à faire les acquisitions depuis les DHT11, 22, 2302 QUI FONCTIONNE.

Si, si je vous jure !

un autre article mentionnait ici l’installation et les problèmes liés à l’acquisition des données, c’est du passé.

Voyons ici comment connecter un capteur de température et de % d’humidité DHT11 à notre Raspberry. la procédure est identique pour un DHT22 ou 2302

Un DHT 111

Câblage

  • 1 du DHT au 3.3 V,
  • 2 du DHT au gpio que vous voulez,
  • 3 rien,
  • 4 GND

Un lecteur (cj) fait remarquer que :

D’après les spécifications fabriquant, le DHT22 accepte une alimentation comprise entre 3.3V et 6V. Les DHT11 et AM2302 acceptent quant à eux une alimentation comprise entre 3.3 et 5.5V. On peut donc sans problème brancher ces composants sur le 5V d’un RPi (ce que j’ai d’ailleurs fait avec mon AM2302 pour éviter les interférences créées par sa mauvaise cohabitation avec un DS18B20 connecté sur le 3.3V en 1-wire).

Entre 1 et 2 une résistance 4.7K Ohm-10 K, si ça marche pas avec 4.7K , passez à une 10k.

Attention vérifiez la répartition des pins GPIO suivant votre modèle de Raspberry.

Un tuto en anglais de chez Adafruit : https://learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging/wiring

Software

Les outils Adafruit ont été déplacés sur github et consistent maintenant en une librairie C que nous devrons utiliser dans un script python.

Récupérons les sources et compilons la bibliothèque DHT.

Une fois terminé et pour tester cela, on exécute la commande suivante (pour un  DHT11) , un DHT 22 sera interrogé par Adafruit_DHT 22 XX, XX étant le numéro du GPIO concerné.

J’indique au plus têtus d’entre vous que le sudo EST OBLIGATOIRE pour accéder aux GPIO du Raspi.
Attention : le message d’erreur ci-dessous indique que le mode « device-tree » n’est pas activé sur le Raspberry.

Tapez sudo raspi-config puis dans le point 8 « Advanced Options », faites un « Enable Device Tree » et rebootez.
Vérifiez que tout fonctionne avec :

Le 11 étant le type de DHT que vous avez (11 ,22 ou 2302) et 4 le numéro du GPIO que vous avez câblé.

OK tout est bon on a température et humidité, on passe à la suite.

Attention : Le DHT11 et le  DHT22 ne répondent que 1 fois par seconde, inutile donc de les interroger plus rapidement.

Domoticz

On  va dans l’onglet « Matèriel » pour créer un virtual device puis dans ce virtual device.

On ajoute un virtual sensor Temp+Humidité ,

2014-09-05 19_01_10-Domoticz

Maintenant on revient dans  « Réglages/Dispositifs », on clique sur la flèche verte pour l’ajouter puis on on note l’ IDX Domoticz (44) dans mon cas

2014-09-05 19_03_06-DomoticzLire la suite

raspberry et DHT11

Cet article est ABSOLUMENT, COMPLETEMENT PERIME, OBSOLETE, HS.

NE L’UTILISEZ PAS,

je le conserve par attachement sentimental.

Un nouveau tuto est ici https://easydomoticz.com/?p=3824 qui utilise un nouvelle bibliothèque Adafruit fonctionnelle.

Alors ouste !


Voyons ici comment connecter un capteur de température et de % d’humidité DHT11 à notre Raspberry. la procédure est identique pour un DHT22.

  • Mon expérience de la lecture, des plus délicates de ce composant avec un Raspberry, me fait vous conseiller de ne pas utiliser ce composant avec votre Raspberry, tournez vous vers des Ds18b20 de Dallas pour la température ou alors installez un Arduino dédié au DHT11 car  la lecture y fonctionne bien mieux.
  • We noticed that both examples has a chance to lose data. This is because Raspberry Pi is not running at a real-time system, the delay in the program is not accurate enough, and sometimes that leads to a failure of transmission. Because C is a lower level language, it controls the GPIO pin in a more direct way, so the example in C has less chance to fail.As a work around, we can run the program for several times can pick the correct result.  This should also be possible to be done programmatically.
  • En français : Notons que les deux exemples ont des chances de perdre des données. C’est parce que le Raspberry n’a pas de système temps réel, les délais dans les programmes ne sont pas assez précis, ce qui provoque des incidents de transmission. Parce que le C est un langage de plus bas niveau et contrôle les GPIO de façon plus directe, le programme C aura moins de change d’échouer.
  • En solution de contournement nous pouvons lancer ce programme plusieurs fois en espérant avoir un résultat correct.

Vous voyez donc que la lecture des DHT n’est pas, loin s’en faut, facile et reproductible.

L’exemple de script shell ci dessous tente de contourner les problèmes de lecture en interrogeant plusieurs fois le DHT jusqu’a obtenir un résultat de température. Cette méthode surcharge le Raspbery, parfois jusqu’a saturation du CPU.

Ces précautions étant prises et pour les téméraires, voici l’explication de la mise en place.

Merci de ne pas utiliser les commentaires pour dire « Ca marche pas, ça marche pas bien » , vous êtes prévenus.

Un DHT 111

 

Connexion d’un DHT11 au raspberry

    Câblage

  • 1 du DHT au 3.3 V,
  • 2 du DHT au gpio que vous voulez,
  • 3 rien,
  • 4 GND

Entre 1 et 2 une résistance 4.7K Ohm-10 K

300px-RaspberryPiDHT11

http://www.wurst-wasser.net/wiki/index.php/RaspberryPi_Humidity_and_Temperature_Sensor

Lire la suite