DS18B20 sur Raspberry

 

Introduction

Encore un article sur le DS18B20. Mais il est nécessaire, car il y a quelques modifications qui font que:

  • Votre sonde DS18B20 ne sera pas visible,
  • Votre sonde DS18B20 ne sera pas reconnue,
  • Votre sonde DS18B20 ne répond pas !

Ou pire, que vous ayez peur d'avoir crâmé votre sonde ou le GPIO du raspberryNano-ordinateur monocarte concu par le créateur de jeux vidéo David Braben !

 

Le DS18B20

Il s'agit d'une sonde numérique mesurant la température.

Température de -55°C à +125°C (±0.5°C entre -10°C et +85°C).

Il fonctionne suivant une architecture 1-wire:

Il s'agit d'un protocole basé sur un bus (sur 1 fil) avec un maître (ici raspberryNano-ordinateur monocarte concu par le créateur de jeux vidéo David Braben) contrôlant le bus et ordonnant ou lisant des informations provenant d'esclaves (des sondes DS18B20 dans notre cas).

Des esclaves, ce qui signifie qu'il sera possible de brancher plusieurs sondes sur le même GPIO !

Cette sonde se présente sous différentes formes:

sondes

Les plus fréquements utilisées pour un raspberryNano-ordinateur monocarte concu par le créateur de jeux vidéo David Braben étant celle ressemblant à:

  • bs1un transistor (en fait, rien à voir avec un transistor, puisqu'il s'agit bien d'une sonde, mais dans un boitier TO-92, d'où la confusion possible).
  • ds2La sonde protégée de l'humidité, idéale en extérieur par exemple.

 

Pour plus de détails:

 

Montage électrique sur Raspberry

Il faut:

L'installation:

Attention:Avant d'installer votre sonde, débranchez votre Raspberry Pi (y compris la RJ45, où du courant passe même si l'appareil est débranché du secteur).

shéma

Montage

 

AttentionN'inversez pas les branchements, vous pourriez crâmer votre sonde !

1

NoteIl sera possible de brancher plusieurs sondes sur le même GPIO:

2

Configuration

/boot/config.txt

Tapez su pour passer en rootroot est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. de façon permanente. Cela vous évitera de devoir taper sudo à chaque fois !

cd /boot

nano config.txt

et ajoutez à la fin du fichier

dtoverlay=w1-gpio,gpiopin=n°GPIO utilisé pour votre sonde

Ex. dtoverlay=w1-gpio,gpiopin=4

NoteCtrl+o pour sauver le fichier, ctrl+x pour quitter (il vous demandera de sauver si nécessaire).

NoteC'est la ligne qui est rarement indiquée dans les montages qui va vous permettre de faire fonctionner cette (ces) sonde(s) sur votre raspberry !

 

Des modules

Dans /etc/modules ajoutez les modules w1-gpio et w1-therm.

Pour ne pas avoir à rebooter, tapez:

modprobe w1-therm
modprobe w1-gpio

 

Récupération des lectures

Comme tout est géré comme un simple périphérique, il n'y a plus grand chose à faire. Il suffit d'aller dans le répertoire /sys/bus/w1/devices

cd /sys/bus/w1/devices

Là, devrait se trouver autant de répertoires (en fait des liens) commençant par 28- que vous avez branché de sondes.

root@raspberrypi:/sys/bus/w1/devices# ls -la 28-*
lrwxrwxrwx 1 rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. 0 janv. 28 17:42 28-031661d302ff -> ../../../devices/w1_bus_master1/28-031661d302ff
lrwxrwxrwx 1 rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. 0 janv. 28 17:42 28-0316624c69ff -> ../../../devices/w1_bus_master1/28-0316624c69ff

Ici, 2 sondes...

28 étant le type de la sonde ds18b20, le reste étant le n° de la sonde (un n° unique par sonde un peu comme une adresse macL'adresse Mac est l'identifiant unique d'une carte réseau. Une autre définition existe, mais il est peu probable sur ce site:Mac peut en effet désigner un Macintosh, ordinateurs conçus et vendus par la société Apple. pour une carte réseau).

Dans ces répertoires, se trouvent entre autre un fichier w1-slave

root@raspberrypi:/sys/bus/w1/devices/28-031661d302ff# ls -la
total 0
drwxr-xr-x 3 rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix.    0 janv. 28 17:41 .  
drwxr-xr-x 5 rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix.    0 janv. 28 17:41 ..  
lrwxrwxrwx 1 rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix.    0 janv. 28 19:10 driverPilote de périphérique. Il s'agit d'un programme qui va permettre à un système d'exploitation la reconnaissance d'un matériel et son utilisation en tant que périphérique (imprimante, clé USB, ...) -> ../../../bus/w1/drivers/w1_slave_driver  
-r--r--r-- 1 rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. 4096 janv. 28 19:10 id  
-r--r--r-- 1 rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. 4096 janv. 28 19:10 name  
drwxr-xr-x 2 rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix.    0 janv. 28 19:10 power  
lrwxrwxrwx 1 rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix.    0 janv. 28 19:10 subsystem -> ../../../bus/w1  
-rw-r--r-- 1 rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. 4096 janv. 28 17:41 uevent  
-r--r--r-- 1 rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. rootroot  est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. 4096 janv. 28 19:10 w1_slave

cat w1_slave

40 01 4b 46 7f ff 0c 10 bc : crc=bc YES  
40 01 4b 46 7f ff 0c 10 bc t=20000

Vous pourrez ainsi trouver surtout la température (x1000) en degré celsus.

Camera PI

Il semble que l'utilisation de la sonde sur le GPIO 4 provoque des conflits d'accès sur la caméra (elle est inaccessible).

Pb. de partage du GPIO 4 avec un périphérique 1-Wire

La première solution serait donc d'utiliser un autre GPIO pour la sonde...

Sinon, une solution serait d'ouvrir en rootroot est le nom par défaut de l'utilisateur Unix ayant tous les privilèges. Il peut donc accéder à tous les répertoires, administrer le serveur, ... Aussi appelé super utilisateur ou super user. root peut aussi représenter le répertoire racine / sur un système Unix. /etc/modules:

Et d'ajouter les lignes suivantes

sudo nano /etc/modules

Puis blacklister les modules dans /etc/modprobe.d/raspi-blacklist.conf:

Evidemment, cette solution posera quelques problèmes si vous faîtes partie des gens qui ont besoin de ces modules...