Raspberry Pi : Mesurer la température avec un capteur DS18B20

Le capteur DS18B20 est un capteur à coût réduit (10 € les 5 capteurs étanches avec câble de 1 mètre ou 8 € les 10 capteurs de base), qui utilise le protocole 1-wire. On peut connecter plusieurs capteurs DS18B20 en série sur un même port du Raspberry Pi. Nous allons voir ici comment connecter un seul thermomètre et en écrire la valeur dans un fichier txt par un script Shell ou PHP.

Connecter le capteur DS18B20

Câblage d'un capteur de température DS18B20 à un Raspberry PiUne description détaillée du capteur DS18B20 est disponible en anglais ici. Le capteur peut mesurer des températures entre -55°C et +125°C et reste précis à 0.5°C sur l’intervalle -10°C à +85°C. Chaque capteur a un numéro de série unique (64 bits) et peut donc être identifié précisément.

Pour une seule sonde, on câble comme dans le schéma de droite.

On peut mettre plusieurs capteurs en série (en théorie autant qu’on veut, en pratique il semble qu’il vaille mieux se limiter à 10 capteurs). Dans ce cas, on connecte une seule résistance 4.7 K et plusieurs sondes selon le schéma ci-dessous.

Câblage de plusieurs DS18B20 en série

Paramétrer le Pi pour lire la / les températures

Editer /boot/config.txt pour qu’il contienne la ligne suivante puis redémarrer le Pi :

Tester le/les capteurs

En ligne de commande, taper les lignes suivantes

Si le capteur est correctement câblé, on voit apparaître quelque chose qui ressemble à ce qui suit, où t=20187 signifie que la température est 20.187°C :

S’il y a plus d’un capteur de température,  ls dans /sys/bus/w1/devices affichera plusieurs répertoires.

Installer les drivers sur le Pi

modprobe w1-gpio et modprobe w1-therm sont les drivers pour les capteurs de température. Ils doivent démarrer lorsque le Pi démarre. Pour celà, ajouter les lignes suivantes à /etc/modules  :

On redémarre le Pi et les drivers sont maintenant chargés.

Un script PHP pour lire les différentes températures

Noter que pour exécuter un script PHP en ligne de commande, il faut avoir préalablement installé PHP-CLI, avec la commande apt-get install php5-cli .

Le script read-temperature.php (exécutable) contient :

On l’exécute avec la commande en ligne  php read-temperature.php .

Dans mon cas, il affiche 20.875 ▒C.

Un script Shell pour lire la température

Voir ce projet, en anglais. Il lit plusieurs températures à la fois et les affiche à l’écran du Pi sous la forme 28-0000046766b0=20.937 .

Pour ma part, je n’ai qu’une seule température à lire et je veux l’écrire dans un fichier texte que j’enverrai ultérieurement à un serveur distant.

Je crée le script read-status.sh, (avec encodage UTF8 sans BOM, retours chariot UNIX et droits d’accès 744) qui contient :

Attention, ce script ne lit que le dernier des capteurs de température.

On l’exécute avec la commande en ligne ./read-status.sh OK  .

Dans le répertoire temp, j’ai maintenant un fichier piname-status.txt, qui contient :

Et maintenant ?

Je peux lire la température mesurée par le Pi et la noter dans un fichier texte à chaque fois que j’exécute  ./read-status.sh OK  en commande en ligne.

La prochaine étape sera d’envoyer les informations du fichier texte à un serveur externe de manière automatique. J’ai déjà décrit l’utilisation d’un cron job dans l’article « Cron Job sur un hébergement mutualisé OVH » mais je vais le réaliser sur un Raspberry Pi. Cest l’objet de l’article « Raspberry Pi : envoyer en ftp un fichier à un serveur, par Cron Job ».

2 commentaires


  1. Bonjour e cherche à lancer une alarme si la sonde dépasse une température fixé je brancherai un haut-parleur sur la sortie son du raspberry quelqu’un à il une idée? Merci d’avance

    Répondre

    1. Bonjour Sebastien, je pense que depuis tu as trouvé la solution …
      sinon au lieu d’afficher la temperature dans le fichier comme au dessus , si superieur a Xdegré : execute omxplayer tonFichier.mp3

      Répondre

Laisser un commentaire

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