L’une des nombreuses applications d’un Raspberry Pi est la mesure de la température. Dans des projets comme les stations météorologiques, vous voulez connaître la valeur exacte. L’utilisation d’un capteur de température de Raspberry Pi 1-Wire permet une lecture très facile et vous n’aurez besoin que d’une seule broche GPIO.
Dans ce tutoriel, il est décrit comment utiliser le capteur de température DS18B20 Raspberry Pi et quel logiciel vous aurez besoin. Dans d’autres projets, vous pourriez même utiliser ce capteur comme déclencheur pour refroidir votre étui Raspberry Pi et allumer un ventilateur.
Composants
Pour ce tutoriel, j’ai utilisé les pièces suivantes :
Le capteur de température DS18B20 est également disponible en version imperméable.
Si vous voulez un capteur plus avancé, qui peut également mesurer l’humidité, vous devriez jeter un coup d’œil au capteur DHT11 ou DHT22, qui mesure à la fois- température et humidité.
Description du capteur de température Raspberry Pi 1-Wire
Le capteur de température renvoie une valeur de 9 à 12 bits qui peut être lue et convertie. Cependant, ceci n’est possible (jusqu’à présent) que sur la broche GPIO 4 (broche 7). Mais vous pouvez également commuter plusieurs capteurs en série (car il est basé sur le protocole de 1-Wire).
Câblage du capteur de température
Le câblage du capteur de température DS18B20, y compris une résistance, est illustré. J’ai pris une pré-résistance de 4,7k Ω :
Si tout est câblé en conséquence, nous pouvons activer le protocole 1-Wire avec ça :
sudo modprobe w1-gpio
sudo modprobe w1-therm
Nous pouvons découvrir si cela a fonctionné en entrant ce qui suit :
lsmod
Les modules devraient maintenant être listés, si une broche GPIO autre que 4 n’est pas utilisée ou si une erreur s’est produite lors de l’activation.
Pour que les modules soient chargés à chaque démarrage, nous les entrons dans le dossier /etc/modules :
sudo nano /etc/modules
et enfin ajoutez les deux lignes suivantes :
w1_gpio w1_therm
Pour l’étape suivante, nous avons d’abord besoin de l’ID du capteur. Si vous prévoyez d’en connecter plusieurs en série, il est préférable de tester chacun individuellement et de faire une note de l’ID afin de ne pas la confondre par la suite.
Nous changeons le répertoire et imprimons les fichiers
cd /sys/bus/w1/devices/ ls
L’un des fichiers s’appelle 10-00080802b4ba0e (différent pour vous) et est l’ID que nous utilisons pour interroger le capteur (veuillez ajuster l’ID) :
cat /sys/bus/w1/devices/10-000802b4ba0e/w1_slave
Dans la sortie on voit la dernière indication de la température (en « milli degré »)
31 00 4b 46 ff ff 05 10 1c : crc=1c YES 31 00 4b 46 ff ff 05 10 1c t=24437
Divisé par 1000, ça fait 24,437 ° C.
Script pour extraire la valeur de température du DS18B20
Pour lire la température plus facilement (par exemple pour l’utiliser dans des projets de maison intelligente comme openHAB), j’ai écrit un petit script. Si vous voulez plus tard obtenir la sortie en tapant simplement dans température, vous devez la mettre dans /usr/bin/:
sudo nano /usr/bin/temperature
Le contenu :
1 2 3 4 5 6 7 8 9 |
#! /bin/bash # Lire Température tempread=`cat /sys/bus/w1/devices/10-000802b4ba0e/w1_slave` # Format temp=`echo "scale=2; "`echo ${tempread##*=}`" / 1000" | bc` # Sortie echo "La température mesurée est " $temp "°C" |
Maintenant, donnez les codes appropriés :
sudo chmod +x /usr/bin/temperature
et maintenant si vous allez à la console et tapez dans
temperature
la température actuellement mesurée s’affiche. Si un message d’erreur s’affiche, vous devez installer bc.
sudo apt-get install bc
Finalement, un petit conseil : si vous voulez mesurer avec le capteur à l’extérieur (par exemple, suspendu de la fenêtre) et vous ne pouvez pas utiliser de gros fils à travers la fenêtre mer, un câble plat est aussi approprié (ancien câble IDE ou lecteur de disquette). Bien emballé dans un sachet, le tout est alors à l’épreuve des intempéries (laisser sortir l’air et bien le coller, puis cela affecte la mesure même au minimum). Ou vous achetez simplement un capteur étanche, vous pouvez par exemple mesurer aussi la température de votre chauffe-eau.