Température ( DS18B20) et Orange Pi Zéro

Mesure de température D’un liquide

La mesure de température est possible avec de nombreux capteurs. Ici nous allons utiliser le capteur DS18B20 qui est disponible en version étanche pour mesurer par exemple la température de l’eau d’une piscine.

Raccordement

Raccordez comme montré sur le schéma le DS18B20

DS18B20 et Orange PI Zéro
  • noir = masse
  • jaune = data sur pin PA14
  • rouge = 3.3v
  • Une résistance de 4.7kohm entre le 3.3v et le fil jaune de data

Activation du bus 1 Wire

Le DS18B20 fourni les mesures de température sur un bus série  » 1-wire ».Il faut configurer le système armbian en lançant ‘armbian-config’, l’équivalent du ‘raspiconfig’ sur Raspberry.

$ armbian-config

Allez dans la rubrique « system » et sélectionnez « Hardware » puis activé w1-gpio.

Il faut rajouter  » l’overlay  » correspondant dans /boot/armbianEnv.txt:

On précise également la pin utilisée. Ici PA14 sur un Orange pi-Zero. Le bus 1wire nécessite une résistance de rappel au +. On peut rajouter utilise celle de l’orange-pi qui est beaucoup plus élevé que la 4.7kOhm.

Il est indispensable, pour gérer les dialogues sur le bus 1-wire, d’avoir la maîtrise du temps d’exécution du processeur. Pour ce faire il faut pouvoir ‘geler’ temporairement, la capacité de l’OS à préempter en rajoutant des modules au noyau de Linux. 

On défini ces modules dans le fichier de configuration
/etc/modules-load.d/modules.conf

On peut aussi les rajouter par la commande

modprobe w1-therm
modprobe w1-gpio

Verifications

Après un reboot du système, on peut vérifier la presence de la sonde par:

ls /sys/bus/w1/devices

La réponse doit ressembler à celle ci dessous avec un code 28 en tête qui correspond à un capteur de température.
28-3c01b556793a w1_bus_master1

Vérifiez la bonne prise en compte des modules chargés en mémoire

lsmod

w1_therm et w1_gpio doivent être mentionnés.

On peut vérifier la bonne prise en compte de la pin du gpio par

cat /sys/kernel/debug/gpio

gpio-14 ( |onewire@0           ) out hi
gpio-17 ( |orangepi:red:status ) out lo

Mesure

Les mesures se trouvent dans le dossier 28… localisé:

/sys/devices/w1_bus_master1/28-3c01b556793a

Lire le fichier w1-slave, il contient 2 lignes. On y trouve le résultat en hexadécimal et le contrôle du CRC pour valider le résultat.

98 01 55 05 7f a5 81 66 64 : crc=64 YES
98 01 55 05 7f a5 81 66 64 t=25500

En fin de deuxième ligne la température t=…. à diviser par 1000 donne la température de °Celsius.

Les mesures sont effectuées périodiquement par le noyau linux. Le fichier w1_master_timeout donne 10s de base. Cette valeur s’adapte suivant le nombre de senseurs sur la ligne et la qualité des réponses. Un script écrit par exemple en python permettra de lire le fichier w1-slave et d’afficher les mesures ou les envoyer vers un client web. Un fichier nommé temperature dans le même dossier donne la dernière valeur connue.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *