Mesure de la température avec un capteur de température Raspberry Pi (1-Wire)

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 Ω :

Raspberry Pi Temperature Sensor DS18B20 1 Wire Setup

 

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 :

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.

Leave a Comment

Your email address will not be published.