Tutoriel Raspberry Pi
Lire la température à l'aide d'une ou plusieures sondes DS18B20


Mis à jour le : 09/08/2017


La sonde de température DS18B20 est la sonde la plus utilisée pour mesurer la température avec un Raspberry Pi. Ce tutoriel montre comment l'utiliser afin de lire une température dans un premier temps, puis de deux par la suite.

I. Prérequis

Pour mesurer la température à l'aide d'un Raspberry Pi, il faut :

Une fois tous les éléments réunis, on peut passer au branchement.

II. Branchements de la sonde

On branche ensuite la sonde au Raspberry en suivant le schéma ci-dessous.


Shéma de branchement d'une DS18B20 sur Raspberry Pi 3
Shéma de branchement d'une DS18B20 sur Raspberry Pi B rev 2

III. Lecture via la commande du Raspberry

Une fois que la sonde est branchée correctement, on peut la lire en utilisant l'invite de commande du Raspberry comme ceci : (en remplaçant les 'x' par le numéro donné par le Raspberry). Le Raspberry Pi peut, dans certains cas, ne pas détecter la sonde, si c'est le cas, lire le cadre Attention ci-dessous.

Invite de commande DS18B20 Raspberry PI

sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices/
ls
cd 28-xxxxxxxxxx
cat w1_slave


Attention

Sonde non detectée ?

Il peut arriver que le Raspberry ne détecte pas la sonde de température. Pour qu'il la détecte, il faut modifier deux fichiers système :

Ajouter les lignes suivantes au ficher qui se trouve dans /etc/modules :

w1-therm
w1-gpio pullup=1


Ajouter la ligne suivante au fichier qui se trouve dans /boot/config.txt :

dtoverlay=w1-gpio

Redémarrer le Raspberry Pi.

Information

Rappel

Pour modifier un fichier, on tape dans la console :

sudo nano /.../...

Pour modifier le fichier qui se trouve dans /etc/modules, on tape donc :

sudo nano /etc/modules

IV. Afficher la température clairement avec un script Python

Pour afficher la température plus clairement, on peut créer un programme qui affiche la température au millième.

On obtient, en lançant le programme python ceci :

Capture d'écran programme lecture DS18B20 Raspberry

V. Enregistrer les températures dans un fichier texte

Maintenant que l'on peut lire la température clairement à l'aide du script python, on peut enregistrer la température dans un fichier externe.
On ajoute donc une ligne dans un fichier à chaque prise de température avec la date, suivi de la température.
Pour changer l'intervalle de lecture, modifier le time.sleep() qui est en seconde. Dans l'exemple, on relève la température toutes les minutes.

VI. Afficher la température de plusieurs sondes

Il peut être intéressant de lire la température de plusieurs sondes en simultané. Pour se faire, rien de bien compliqué. Il faut brancher les sondes à la suite comme le montre le schéma suivant.


Schéma de branchement de deux DS18B20 sur Raspberry Pi 3
Schéma de branchement de deux DS18B20 sur Raspberry Pi B rev 2


On relance ensuite la détéction des sondes avec les commandes comme quand il n'y en a qu'une mais on dervait voir apparaître quelque chose comme ca :

Capture Plusieurs DS18B20 Raspberry

On applique ensuite le programme Python précédemment créé aux deux sondes. Il permet d'afficher la température correctement et proprement.

On obtient sensiblement la même chose si tout va bien :

Res Python Plusieurs DS18B20 Raspberry

VII. Afficher la moyenne de deux sondes de température

Maintenant que l'on sait lire plusieurs sondes de température simultanément, on peut faire une moyenne des deux valeurs obtenues. Il suffit d'ajouter les deux lignes suivantes au programme Python précedemment rédigé.

Voilà, le tutoriel est fini, on sait donc maintenant lire une ou plusieures sondes de température DS18B20 sur Raspberry Pi.


Commentaires

David, le 08/05/2018 à 21h57
Bonsoir et merci pour ce tuto,
J'envisage de construire un système de relevé de température à plusieurs endroits de ma maison et je me pose quelques questions auxquelles vous pouvez peut-être répondre.
Y-a-t-il une distance maximale pour utiliser la sonde ?
Peut-on brancher plusieurs sondes à des distances différentes sur une même résistance, ou faut-il prévoir une résistance différente par longueur de sonde ?
Par avance, merci pour votre retour.
David

EspaceRaspberryFrancais, le 19/05/2018 à 15h13
Bonjour David,
J'ai fait quelques recherches sur la distance maximale d'utilisation de la sonde et... j'ai pas vraiment trouvé de réponse précise. Le mieux serait encore d'expérimenter tout ça, mais je ne suis pas sur qu'il soit faisable de prendre la température de différentes pièces de cette manière.. et c'est bien dommage car ce projet est très interessant.

Ce qui pourrait fonctionner serait de relier chaque sonde à un Arduino Nano (2€ pièce si on commande de Chine) puis transférer la température par Wifi au Raspberry (2€ aussi pour le module Wifi sur chaque Arduino) ou par un système de transfert autre que le 1-Wire.

D'autres solutions doivent aussi être envisageables !

Tenez-moi au courant quant à la solution que vous choisirez,
Bonne Journée,
EspaceRaspberryFrancais

David, le 19/05/2018 à 19h55
Bonjour, merci pour votre aide.
J'ai lu sur le site de vente de la sonde dans les commentaires qu'un client préconise d'augmenter la taille de la résistance en fonction de la longueur du cable. Ce n'est pas tres précis mais ça veut dire qu'on peut le faire.
Reste à tester. J'ai commandé 2 sondes, des cables, des résistances.
Le projet consiste à mesurer la température au niveau des Bouches d'aération d'une vmc double flux, de par les combles. Donc il n'y a pas tant de complexité, si ce n'est cette problematique des distances.
Je vous ferai un retour.

BeeckmansO, le 28/06/2018 à 15h27
Tout d'abord merci pour ce tuto.
Mais n'y aurait-il pas une erreur dans le branchement en effet aucune des pin orange n'est jamais branchée sur aucun des schémas seul le le 3.3v et le GROUND sont connectés.
Ni dans l'explicatif de branchement avec une sonde ou ceux avec plusieurs sondes.
Certains fils ne même d'ailleurs nulle part.
Ce serait sympa de corriger.
Concernant les longeurs, c'est compliqué selon la topologie, cette explicatif devrait aider.

https://www.maximintegrated.com/en/app-notes/index.mvp/id/148

Merci


Yelsen, le 02/07/2018 à 08h20
Même constat que BeeckmansO. Si ce n'est pas une erreur, une petite explication du branchement serait sympa. Pour ma part, je ne comprends pas les pins orange sur les 2 schémas et 2 des fils blanc après la résistance sur le deuxième schéma.

EspaceRaspberryFrancais, le 04/07/2018 à 16h17
Bonjour @BeeckmansO et @Yelsen,
Merci de m'avoir signalé que le schéma n'était pas bien expliqué. En fait, la sonde DS18B20 possède trois entrées/sorties :
- Le 3.3V en rouge,
- Le GND en noir,
- Le "Data" en blanc sur les schémas, et certaines fois en jaune sur les sondes.

C'est ce fil là qu'il faut connecter au 3.3V avec une résistance ainsi qu'au Pin 7 du Raspberry Pi.

En espérant avoir répondu à votre question,
EspaceRaspberryFrancais.

Clem, le 07/09/2018 à 12h57
Bonjour,
est-il possible d'utiliser différentes GPIO pour récupérer la température ? Ma problématique est que j'aimerais pouvoir lire au même instant chacun des capteurs.

Merci par avance.

Cordialement,
Clem

EspaceRaspberryFrancais, le 09/09/2018 à 13h01
Bonjour Clem,
Il n'est pas possible à ma connaissance d'utiliser différentes GPIO pour récupérer la température. Cependant, la section VI montre comment lire la température de plusieurs sondes en même temps.

En espérant avoir répondu à votre question,
EspaceRaspberryFrancais.

Luluberlu , le 08/11/2018 à 12h07
Bonjour
tuto clair et concis bravo
problème : à partir de 2 sondes et sur des appareils différents invariablement au bout de quelques centaines de lectures voire moins les sondes disparaissent, ce problème a déjà été évoqué sur d'autres tuto mais sans réponse ( variations testés : temporisation , alimentation 3 v3 séparé, w1-pullup=1)

Commenter
Votre adresse mail ne sera pas visible sur le site.

Seuls les commentaires jugés corrects seront mis en ligne.



Composants Bien débuter sur le Raspberry PI Configurer le Raspberry Pi
Ecran LCD 16x02 Accessoires indispensables sur Raspberry Pi Connexion sans login ni mot de passe au Raspberry
Capteur de température DS18B20 Première installation et démarage Changer le Hostname du Raspberry Pi
Afficheurs 7 segments Création et execution d'un programme Python Connexion Ethernet Raspberry/ordinateur
Capteur distance HC-SR04 Connexion au bureau depuis Windows
Bouton
Servo Moteur
Capteur de présence HC-SR501
Module RFID-RC522
Caméra sur Raspberry Pi

EspaceRaspberryFrançais |
Contact | Facebook



En tant que Partenaire Amazon, je réalise un bénéfice sur les achats remplissant les conditions requises.

Espace-raspberry-francais.fr est hebergé par SARL LWS.