Capteur de température connecté

De Wiki LOGre
Aller à : navigation, rechercher


Cette page a pour but de documenter la réalisation ainsi que la mise en oeuvre d'un réseau de capteurs de température connectés. Le but est d'obtenir un capteur précis, peu couteux (< 10euros), autonome avec une durée de vie > 6 mois et pleinement documenté pour pouvoir etre reproduit et améliorer par tout un chacun. Chaque capteur sera composé au moins d'un capteur de température (et d'humidité), d'un afficheur, d'un micro controlleur, d'une batterie (ou pile) et d'un module de communication 433MHz.

Capteur de temperature

Pour l'instant le capteur de temperature utilisé est un DHT22 (aussi dénommé AM2302) produit par l'entreprise chinoise Aosoung. On peut aisément se procurer ce capteur pour environ 3 euros en recherchant "DHT22 ou "AM2302" sur nos sites marchands préférés. Ce capteur dans son écrin de plastique blanc intègre :

  • Un capteur de température basé sur une thermistance NTC (à coefficient thermique négatif). Cependant, dans une des différentes versions de datasheets que l'on trouve sur le web, il semble que le capteur intègre un DS18B2, mais je n'ai pas ouvert de capteur pour vérifier.
  • Un capteur d'humidité capacitif utilisant une capacité polymer.
  • Un micro-contrôleur 8 bits pour lire et communiquer de manière digitale les resultats des mesures sur une seule pin DATA.

On trouve une video sur la chaine youtube "electronupdate" où le videaste ouvre un capteur et le dissoud à l'acide laissant apparaitre ce qu'il renferme : https://www.youtube.com/watch?v=C7uS1OJccKI

Precision de mesure du capteur

En ce qui concerne la precision de mesure :

    • Humidité relative : +/- 2%
    • Temperature : <+/- 0.5 DegC

Granularité de la mesure :

    • Humidité relative : 0.1%
    • Temperature : 0.1 DegC

Il semble que ces capteurs soient en effet plutot précis comme le confirme les mesures effectués par robert smith présentées sur [son site oueb]

Charactéristiques electriques du capteur

Parametre Condition Min Typ Max Unité
Tension d'alimentation DC 3.3 5 6 V
Courant d'alimentation pendant la mesure 1 - 1.5 mA
Courant d'alimentation stand by 40 - 50 uA
Temps de mesure - 2 - s
Temps de démarrage 1 - - s

Protocole de communication du capteur

La capteur bien qu'il possède quatre pins n'en utilise que 3 :

  • Vdd
  • DATA
  • NULL
  • Gnd

Le capteur communique avec son hote via la seule pin data et les données sont envoyées "MSB first" sous le format :

DATA=8 bit integral RH data+8 bit decimal RH data+8 bit integral T data+8 bit decimal T data+8 bit check-sum

Le check-sum devant etre les 8 derniers bits correspondant à "decimal T data"

Le protocole de communication entre le capteur et l'hote tel que decrit dans la datasheet se deroule comme ceci :

  1. Le capteur est par defaut en mode "veille" et se reveil lorsque l'utilisateur tire la PIN data, qui doit possèder une resistance de "pull-up", à la masse pendant au moins 1ms.
  2. Le capteur Tire la pin DATA à 0 durant 80us puis à 1 durant 80us ce qui signifie qu'il est pret à emetre les données.
  3. Les 40 bits constituant la trame sont envoyés en commencant à chaque fois par tirer la pin DATA à 0 durant 50us puis en relachant la pin DATA à 1 durant 26 à 28 us si le bit vaut 0 ou 70 us si le bit a transmettre vaut 1.

librairie arduino

IL existe plusieurs librairies C++ developpées pour la plateforme arduino permettant de communique avec les capteurs DHT 22.

Je ne vais pas les decrire ici.

J'utilise (à l'instant ou j'ecris) la librairie fournie par l'equipe d'adafruit que vous pouvez trouver ici : https://github.com/adafruit/DHT-sensor-library

Afficheur

L'afficheur se doit d'etre de taille reduite, sobre energetiquement et économique, j'ai choisi d'utiliser ce type de module dénomé module LCD 3.5 digits que l'on trouve pour un peu plus de 2 euros sur internet.

Ce module permet d'afficher 3 chiffres et un chiffre après la virgule, le premier chiffre etant necessairement un 1. On peut donc afficher une température ou une humidité relative précise au 10ème de degré comprise entre -9.9 et 199.9 DegC. On peut étendre la plage de valeurs affichées en reniant sur la decimale et ainsi obtenir une plage de valeur comprises entre -99 et 1999.

Ces modules integrent un controlleur de LCD HT1621 et s'interfacent facilement avec un microcontrolleur via 3 pins d'alimentation et 3 pins digitales uniquement.

J'ai trouvé la librairie fournit pas le vendeur ( telechargable ici ) peu intuitive et contraignante à utiliser et j'ai donc developpé une nouvelle librairie que vous pouvez trouver ici