Raspberry - Sonde de température DS18B20

ds18B20-cablage



Comment installer une sonde DS18B20 sur Raspberry. voir la page 

Raspberry - Sonde DS18B20 - Température


 La sonde DS18B20 utilise le bus 1-Wire 


Câblage de la sonde DS18B20

  • Rouge = +Vcc
  • Noir = Gnd
  • Jaune = GPIO4 - Pin7


Résistance de 4700 Ohms entre +Vcc et GPIO4 - Pin7


Identification de la Sonde DS18B20

ds18b20-initialisation

Dans un terminal [ctrl]+[alt]+[t], saisir les commandes ci-dessous:

  • sudo modprobe w1-gpio
  • sudo modprobe w1-therm
Se déplacer dans le dossier /sys/bus/w1/devices/

  • cd /sys/bus/w1/devices/
Afficher le contenu du dossier, vous devez trouver un dossier correspondant à votre sonde 28-xxxxxxxx

Déplacez-vous dans le dossier 28-xxxxxxx
Afficher le contenu du fichier w1_slave

  • ls
  • cd 28-xxxxxxxxxx
  • cat w1_slave  # Affiche le contenu du fichier w1_slave

La température est indiquée sous la forme t=19375 (dans mon exemple)
Ce qui correspond à une température de 19,375 °C



Non détection de la sonde

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 :


Editer le fichier /etc/modules

  • sudo nano /etc/modules
Ajouter les lignes suivante à la fin du fichier /etc/modules
  • w1-therm
  • w1-gpio pullup=1
Sauvegarder [Crtl]+[o] puis [Enter] et quitter l'éditeur nano [Crtl]+[x]



Editer le fichier /boot/config.txt

  • sudo nano /boot/config.txt

Ajouter la ligne suivante à la fin du fichier /boot/config.txt

  • dtoverlay=w1-gpio

Sauvegarder [Crtl]+[o] puis [Enter] et quitter l'éditeur nano [Crtl]+[x]


Puis redémarrer le Raspberry Pi



Afficher la température avec un script Python

temperature_°C


Code Python pour afficher la température dans le terminal [ctrl]+[alt]+[t]


def lireFichier (emplacement) : 
# Ouverture du fichier contenant la temperature 
fichTemp = open(emplacement) 
# Lecture du fichier
contenu = fichTemp.read()
# Fermeture du fichier apres qu'il ai ete lu
fichTemp.close() 

return contenu

def recupTemp (contenuFich) :
# Supprimer la premiere ligne qui est inutile
secondeLigne = contenuFich.split("\n")[1]
temperatureData = secondeLigne.split(" ")[9]
# Supprimer le "t="
temperature = float(temperatureData[2:])
# Mettre un chiffre apres la virgule
temperature = temperature / 1000  # Pour afficher 19687 en 19.687
return temperature

contenuFich = lireFichier("/sys/bus/w1/devices/28-xxxxxxxx/w1_slave")  # Remplacer 28-xxxxxxx par celui de votre sonde 
temperature = recupTemp (contenuFich)


print ("Temperature :"), temperature,(" °C")   # Affichage de la température





Enregistrer les températures dans un fichier texte

temperature_fichier


Nous savons lire une température avec un script python.

Nous pouvons enregistrer la température dans un fichier txt.
On ajoute dans le fichier la date et la température à intervalle régulier.


Le code:


import time  # import de la bibliothéque time
import datetime   # import de la bibliothéque datetime

def lireFichier (emplacement) :
fichTemp = open(emplacement)
contenu = fichTemp.read()
fichTemp.close()
return contenu

def recupTemp (contenuFich) :
secondeLigne = contenuFich.split("\n")[1]
temperatureData = secondeLigne.split(" ")[9]
temperature = float(temperatureData[2:])
temperature = temperature / 1000
return temperature

def sauvegarde (temperature, date, emplacement) :
fichierSauvegarde = open(emplacement, "a")
fichierSauvegarde.write(str(date)+" ")
fichierSauvegarde.write(str(temperature)+'\r\n')
fichierSauvegarde.close()

while True :
date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
contenuFich = lireFichier("/sys/bus/w1/devices/28-xxxxxxxx/w1_slave")   # Remplacer 28-xxxxxxx par celui de votre sonde 
temperature = recupTemp(contenuFich)
sauvegarde(temperature, date, "Temperature.txt")  # Création du fichier Temperature.txt
time.sleep(60)  # Temporisation en seconde


  Le fichier Temperature.txt est créé dans le dossier qui contient le fichier python  



Afficher la température de plusieurs sondes

  • 2_sondes
  • temperature_2_sondes
  • temperature-2sondes


Connecter les sondes en parallèle sur le GPIO4 - Pin7

  • Tous les fils d'alimentation (Rouge)  au +5v
  • Tous les fils de masse  (Noir)  à la masse
  • Tous les fils de detection de température  ( Jaune)  au GPIO4 - Pin7

Mettre une résistance de 4,7 KOhms

soit

  • Une résistance pour l'ensemble des sondes (Entre le +5v et le GPIO4 - pin7)

soit

  • Une résistance pour chaques sondes (Entre les fils Rouge et Jaune de chaques sondes)

Relancer la détection des sondes

  • sudo modprobe w1-gpio
  • sudo modprobe w1-therm

Le code


def lireFichier (emplacement) : 
fichTemp = open(emplacement)
contenu = fichTemp.read()
fichTemp.close()
return contenu

def recupTemp (contenuFich) :
secondeLigne = contenuFich.split("\n")[1]
temperatureData = secondeLigne.split(" ")[9]
temperature = float(temperatureData[2:])
temperature = temperature / 1000 
return temperature

contenuFich1 = lireFichier("/sys/bus/w1/devices/28-xxxxxxxxxxx1/w1_slave")  # Remplacer 28-xxxxxxx par celui de votre 1ère sonde 
contenuFich2 = lireFichier("/sys/bus/w1/devices/28-xxxxxxxxxxx2/w1_slave")  # Remplacer 28-xxxxxxx par celui de votre 2ème sonde 
temperature1 = recupTemp (contenuFich1)
temperature2 = recupTemp (contenuFich2)


print "Temperature Capteur #1 : " , 
print temperature1
print "Temperature Capteur #2 : " ,
print temperature2




Afficher la moyenne de deux sondes de température

Puisque nous savons lire la température relevée de plusieurs sondes.

Nous pouvons afficher la moyenne des températures.


Le code


moyenne = (temperature1 + temperature2)/2  # Effectuer la moyenne des températures
print "Température moyenne : "
print moyenne




Afficher la température sur une page Web

Pour afficher la (les) température(s) relevée(s) par la (les) sonde(s), voir la page


Raspberry - Sonde DS18B20 - Température




Personnaliser

Google Analytics

Google Analytics est un service utilisé sur notre site Web qui permet de suivre, de signaler le trafic et de mesurer la manière dont les utilisateurs interagissent avec le contenu de notre site Web afin de l’améliorer et de fournir de meilleurs services.

Facebook

Notre site Web vous permet d’aimer ou de partager son contenu sur le réseau social Facebook. En l'utilisant, vous acceptez les règles de confidentialité de Facebook: https://www.facebook.com/policy/cookies/

Twitter

Les tweets intégrés et les services de partage de Twitter sont utilisés sur notre site Web. En activant et utilisant ceux-ci, vous acceptez la politique de confidentialité de Twitter: https://help.twitter.com/fr/rules-and-policies/twitter-cookies