IDLabs-IoT Le site dédié aux objets connectés

Un site des laboratoires pédagogiques de l'école CampusID

Présentation et mise en œuvre d’une sonde 1-Wire DS18B20 sur Raspberry Pi

Posted on 8 juillet 2018  in Non classé

Présentation de la sonde

La sonde de température DS18B20 est une sonde de température 1-Wire, (bus conçu par Dallas Semiconductor)c’est-à-dire qu’elle n’as besoin que d’un seul fil, (en plus de l’alimentation et de la masse) pour renvoyer des données au Raspberry Pi. C’est une sonde numérique, et contrairement à une sonde analogique, elle est directement utilisable sur le Raspberry pi.

De plus, cette sonde, ainsi que toutes  les sondes et capteurs de type 1-Wire sont particulièrement adaptés au Raspberry Pi. En effet, le Raspberry Pi intègre un bus 1-Wire, qui est basé sur un système maître esclave.

Bien sur, dans notre cas, il n’y aura que la sonde, donc l’utilité du bus 1-Wire ne sera pas exploitée.

Le schéma ci-dessous représente le branchement de la sonde

 

 

Une résistance de tirage est placée entre l’alimentation en 3.3v de la sonde et son fil de data. C’est ensuite en mettant a la masse la sortie de la sonde que l’on envoie les données au maitre du bus 1-Wire.

Ainsi, le maître initialise le bus, qui commence par forcer le bus à zéro pendant 480 µs, à la suite de quoi l'esclave renvoi son identifiant unique.

Ensuite, chaque esclave renverra les informations sur le bus lorsqu'il sera activé,

 

 

Exemples de code

 

Avant de pouvoir utiliser la sonde,, il faut ajouter deux modules, w1-gpio et w1-therm,.

 

Ensuite, après un redémarrage du Pi, on s'assure que la sonde soit bien reconnue par le Raspberry Pi. Pour cela, on lance 2 commande,s :

 


 cd /sys/bus/w1/devices

 /sys/bus/w1/devices $ ls

 28-0000054c2ec2 w1_bus_master 1

 

On voit ici que le code unique de la sonde nous est renvoyé, commence par deux chiffres, qui correspondent à la famille de capteurs à laquelle appartient la sonde. Suite à cette vérification, un dossier à son nom aura été créé, et c'est à cet endroit qu'il faut récupérer les informations concernant la température.

Dans ce dossier, un fichier w1_slave contient le code correspondant au numéro de la sonde sur la première ligne, et la température en hexadécimal et en millième de degrés Celsius sur la seconde.

La sonde ayant une précision de 0,5°C, on peut arrondir la température à un chiffre après la virgule.

Pour lire la température, on utilise donc la commande :

 

find /sys/bus/w1/devices/ -name "28-*" -exec cat {}/w1_slave \; | grep "t=" | awk -F "t=" '{print $2/1000}' 	

Cette commande peut aussi être retranscrite dans un script, pour une utilisation plus facile:

 

 

Ce script à été trouvé sur le site framboise314.fr.

Il permet d’enregistrer la température dans un fichier, qui peut être ainsi lu par un autre programme, et affiché.

Les utilisations qui seront faite de cette sonde peuvent être varié, mais elle auront toutes en commun la récupération de l'info de la sonde, comme présenté ci-desssus.

 

Sources

framboise314.fr

pihomeserver.fr

blogmotion.fr

planète-domotique.com

daniel.menesplier.free.fr

0 thoughts on “Présentation et mise en œuvre d’une sonde 1-Wire DS18B20 sur Raspberry Pi”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *