Mesure de température avec la sonde DS18B20

Vous avez absolument besoin de connaître la température ambiante et le thermomètre est cassé.. Vous avez juste un Raspberry une sonde et un cerveau qui traine quelque part? Pas de problème on va trouver une solution rapidement! Pour réaliser des mesures de température avec votre Framboise, il vous faut :

 

Pour le niveau Hardware – Plan du montage (capteur ou sonde) :

Capture du 2016-04-10 21:58:50Pour le capteur : Il faut connecter la Pin 1 à la terre, la Pin 2 (donnée/data) au GPIO 4 et la Pin 3 à l’entrée 3,3V. Il faut ensuite placer la résistance de Tirage entre la Pin 2 et 3.

serveimage

Capture du 2016-04-11 10:31:18

(Pour la sonde contrairement au schema il n’y a pas de fil blanc.)

Pour la sonde : Comme elle est précablée,  chaque fil a déjà la bonne couleur. Il faut relier le Bleu à le Terre, le Rouge à 3,3V et le Jaune (donnée/data) à la Pin GPIO 4 (ou une autre mais il faudra modifier le code du programme ). La résistance de tirage est placée entre le fil Jaune et Rouge.

serveimage

Note : si vous souhaitez tester rapidement le mieux est d’utiliser la Pin 7 ou GPIO4 du raspberry, ce qui évite d’avoir à effectuer des modifications sur le progamme d’exemple.

 

Au niveau Software :

Il existe une bibliothèque Python, qui vous permettra de réaliser des projets sympa!

Avec raspbian pour l’installer il suffit de taper :

 sudo apt-get install python-w1thermsensor
version python 3: python3-w1thermsensor

Vous pouvez glisser cette ligne dans le fichier /boot/config.txt pour ajouter le support OneWire au démarrage:
dtoverlay=w1-gpio

Pour tester si la sonde est bien connecté:

sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
ls
cd 28-xxxxx (le nom du répertoire est différent en fonction de la Pin GPIO ou le capteur/sonde est branché, c’est pourquoi afin d’utiliser l’exemple de base le GPIO4 est recommandé)
cat w1_slave

Si vous ne trouvez pas w1_slave c’est que le cablage est mal fait et la sonde/capteur non reconnu(e) ou connecté(e). Vérifier et recommencer, n’hésitez pas à redémmarer pour rafraichir votre système.

Si tout c’est bien passé vous avez pu voir une série de chiffre sur 2 lignes et des indications ccr=xx YES et en dessous t=xxxxx par ex t=21548 (la température 21.548°C)

En lançant l’appli python ci-dessous vous obtiendez une série de mesure °C et °F toute les secondes. Le script peut être modifié facilement pour changer la durée.

# -*- coding: utf-8 -*-
import os
import glob
import time

os.system(‘modprobe w1-gpio’)
os.system(‘modprobe w1-therm’)

base_dir = ‘/sys/bus/w1/devices/’
device_folder = glob.glob(base_dir + ’28*’)[0]
device_file = device_folder + ‘/w1_slave’

def read_temp_raw():
f = open(device_file, ‘r’)
lines = f.readlines()
f.close()
return lines

def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != ‘YES’:
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find(‘t=’)
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f

while True:
print(read_temp())
time.sleep(2)

 

Source: Le tutoriel d’Adafruit

Laisser un commentaire