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:

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 à:
-
un 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).
La sonde protégée de l'humidité, idéale en extérieur par exemple.
Pour plus de détails:
- Le descriptif en anglais de la sonde provenant de maxim integrated.
- l'excellent site http://www.framboise314.fr/mesure-de-temperature-1-wire-ds18b20-avec-le-raspberry-pi/
Montage électrique sur Raspberry
Il faut:
- une sonde DB18B20
- une résistance de 4,7kOhm
- du fil et un fer à souder ou une platine d'expérimentation (breadboard) 400 Points sans soudure devrait suffir si vous n'avez pas de fer pour faire des tests ...
- un raspberryNano-ordinateur monocarte concu par le créateur de jeux vidéo David Braben !
L'installation:
- Brancher le 3.3V sur la borne 3 du DS18B20 (fil rouge !)
- Brancher un GPIO (exemple le GPIO n°4, soit le pinPersonal Identification Number ou plus rarement NIP pour Numéro d'identification personnel. Code à 4 chiffres ou plus permettant d'authentifier le propriétaire d'une carte SIM, carte de paiement...3 saisies incorrectes du code PIN provoque le blocage de la carte SIM (seul un code PUK déverrouillera la carte) ou l'avalement de la carte bleue par un distributeur automatique de billets (DAB) impliquant l'envoi de votre carte à votre agence bancaire pour vérification. Pin peut aussi être un terme en électronique. des pin sont des broches permettant de brancher des nappes ou fils provenant de cartes électroniques. n°7 sur raspberryNano-ordinateur monocarte concu par le créateur de jeux vidéo David Braben Pi2 et Pi3 par exemple) sur la borne 2 du DS18B20. Note, il semble qu'il y est des pb. avec l'utilisation du GPIO4 pour la sonde et d'une camera Raspberry. Il serait donc préférable d'en utiliser un autre si vous avez une caméra ou envisagez d'en installer une...
- La borne 1 du DS18B20 retourne sur le ground du raspberryNano-ordinateur monocarte concu par le créateur de jeux vidéo David Braben
- La résistance est branchée entre le 3,3Volt (récupérable sur la borne 3 du DS18B20 ou depuis la ligne + du breadboard) et la borne 2 du DS18B20.
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).


N'inversez pas les branchements, vous pourriez crâmer votre sonde !
Il sera possible de brancher plusieurs sondes sur le même GPIO:
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
Ctrl+o pour sauver le fichier, ctrl+x pour quitter (il vous demandera de sauver si nécessaire).
C'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...