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

22 commentaires publiés.

Cédric, le 27/07/2019 à 14h37
bonjour le tuto est clair est j'ai réussi sans problème "en trouvant la bonne resistance du premier coup j'aurais était plus vite..."
Je voulais savoir si l'un de vous avez déjà pensé ou fait un programme pour compiler les températures de sorte à faire un graphique qui suit l'évolution des températures... ?
EspaceRaspberryFrancais, le 27/07/2019 à 15h42
Bonjour Cédric,
Content que tout ai fonctionné pour vous !
Concernant votre question, un tutoriel sur comment enregistrer et faire des courbes de températures est disponible sur le site à cette adresse :)

Bonne continuation !
cédric, le 28/07/2019 à 12h32
Bonjour à tous comme j'ai dis dans un autre commentaire j'ai réussi à tout faire fonctionner "content pour mon premier projet" le seul soucis que j'ai est que quand je demande la temperature de la sonde via l'invite de commande j'ai cette réponse :
python: can't open file 'temperature.py' : [Errno 2] No such file of directory

Par contre je réussi à l'avoir depuis python est ce cela peut être dû au nom du fichier que j'ai donné à la programmation ?


gipet, le 14/07/2019 à 22h11
Excellent tuto
je l'ai appliqué différemment et partiellement, (passerelle 1wire-USB, récupération des valeurs en script, jusqu'à l'affichage des données 1wire sur une page web), le tout sur Rpi3
j'essaierai l'affichage des courbes plus tard....
Loic moumou, le 28/06/2019 à 11h32
Bonjour,
Je souhaite installer cette sonde dans ma piscine avec un raspberry situé dans le local technique qui est à une distance de 20-25 mètres. Pour relié la sonde je ne sais pas trop quel câble utiliser ?
J'ai un câble éléctrique de courant "classique" en rabe. Cela fonctionnerait bien ou dois-je utiliser un cable RJ45 ?

Merci pour votre aide
EspaceRaspberryFrancais, le 02/07/2019 à 10h29
Bonjour @Loic,
J'ai cherché un peu sur Google, pas mal de personnes se posent la même question que vous, et la solution serait de câbler la sonde ainsi :
Utiliser un câble RJ45 pour faire passer les 3 fils de la sonde, alimenter la sonde en +5V (au lieu de 3.3V) et laisser le pont des données au +3.3V.
Je vous ai fait un schéma pour mieux illustrer le tout :

La valeur de la résistance reste à trouver, le mieux est de faire des tests avec un potentiomètre, mais d'après certains forum, une valeur de 2.2k? conviendrai.

Il ne reste plus qu'à tester et ça devrait marcher d'après les retours que j'ai lu.

Tenez-moi au courant !
EspaceRaspberryFrancais.

Liens :
https://raspberrypi.stackexchange.com/questions/41234/max-length-of-wire-w-3-3v-or-other-issue
https://www.raspberrypi.org/forums/viewtopic.php?t=36163#p303756
Loic moumou, le 02/07/2019 à 11h05
Super merci pour ta réponse. Je vais essayer ça.
-Pour l'alimentation 5V je peux me brancher directement sur l'alim externe (lien en dessous) ou il vaut mieux directement sur le rapsberry ?
https://www.amazon.fr/gp/product/B07FQ7NR5N/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1
-Je peux brancher une deuxième sonde (pour le local avec un fils de 1 mètre) sur cette alim de 5v et cette résistance de 2.2K sur le même principe que la partie VI ?

En tout cas merci à toi
EspaceRaspberryFrancais, le 02/07/2019 à 13h41
Tu peux brancher directement le +5V de la sonde à l'alim directement, ça ne pose pas de soucis.
Pour ce qui est de la deuxième sonde, j'aurai laissé 4.7K comme préconisé (ajouter ~2.5K en série avec la résistance de 2.2K précédemment utilisée).

Après il faut surtout tester :)
Loic moumou, le 13/07/2019 à 17h00
J'ai ca qui s'affiche :
00-600000000000 00-e00000000000 w1_bus_master1
une idée ?
Tommy_Vasek, le 21/04/2019 à 11h47
Bonjour et merci pour ce tuto,
J' ai 3 sondes, j 'en vois 2.
Alors j'ai fouillé dans "w1_bus_master1" mais j'ai rien trouvé de probant.
Est que j'aurais mal fait quelque chose?
Merci

Vac17180, le 12/03/2019 à 09h17
Bonjour , je travaille sur Un projet de term Sti2d Sin dans lequel j'ai une sonde avec laquelle je doit envoyer via Xbee des données de type température et des données visuel issu d'un caméra . Je cherche un code me permettant de relevé les donnée et de les convertir pour les envoyée à une autre Raspberry ou un ordinateur via Le Xbee . Mon inexpérience des Raspberrys me porte à ne pas savoir de quel façon faire pour réaliser cela , donc si vous pourriez m'aider et me renseignée un code me permettant de récupérer , convertir et envoyée ces données via Xbee
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)
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.
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.
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.
Loic moumou, le 13/07/2019 à 16h51
J'ai testé le montage, ça ne marche pas :(
Je n'arrive pas à afficher ma sonde dans /sys/bus/w1/devices/
Fred, le 18/08/2019 à 15h41
Bonjour Loïc,

Moi, j'ai testé, ça marche.


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 Connexion au Raspberry Pi en SSH
Interaction par bouton poussoir Test & tuto : Ecran LCD 7" tactile Communication série entre Arduino et Raspberry Pi
Servo Moteur
Capteur de présence HC-SR501
Module RFID-RC522
Caméra sur Raspberry Pi
Module L298N : Contrôle de moteurs à courant continu

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.

Espace Raspberry Français - 2014 Textes soumis au droit d'auteur