mandrin
Posts: 65
Joined: Tue Feb 06, 2018 4:49 pm

Sonde DS18B20

Thu Feb 08, 2018 10:19 am

Bonjour,

Un novice de plus !
Et un problème certainement déjà abordé mais je n'ai pas trouvé la solution.
Merci d'avance pour votre attention.

Lorsque j’essaie de lancer le programme en Python3 ci-dessous sur ma Raspberry pi 3 toute neuve,
https://learn.adafruit.com/adafruits-ra ... e-and-test
En mode console :
sudo su
nano /boot/config.txt
Ajouter à la fin la ligne suivante
dtoverlay = w1-gpio
Ajouter à la fin les lignes suivantes
nano /etc/modules
W1-therm pullup=1
W1-gpio gpiopin=22 pullup=1
reboot
Entree a la console de:
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd / sys / bus / w1 / devices /
ls
Impossible d’avoir le dossier de la sonde. Il n’y a rien dans /sys/bus/w1/devices.
J’ai trois sondes qui fonctionnent avec une carte Arduino, aucune ne répond avec ma Raspberry a la console.
Avec Python3 et le fichier «SondesDS18B20.py » suivant qui lui ne s’exécute pas.
import os
import glob
import RPi.GPIO as GPIO # teste 7/02 dérivé de blink01.py
import time

GPIO.setwarnings(False) # teste 7/02 dérivé de blink01.py
GPIO.setmode(GPIO.BCM) # teste 7/02 dérivé de blink01.py
GPIO.cleanup()) # teste 7/02 dérivé de exemple_a_analyser.py

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.
return temp_c #, temp_f # neutraliser temp_f si pas besoin

while True:
print(read_temp())
time.sleep(1) # attente 1 seconde
Il m’affiche le résultat suivant.
pi@raspberrypi:~ $ sudo python3 SondesDS18B20.py
Traceback (most recent call last):
File "SondesDS18B20.py", line 28, in <module>
device_folder = glob.glob(base_dir + '28*')[0]
IndexError: list index out of range
pi@raspberrypi:~ $
N’étant pas un féru de Debian et ou de Python, cette réponse me gène beaucoup ne sachant que faire pour y remédier.
Une âme charitable serait la bienvenue.
Cordialement.
Last edited by mandrin on Tue Feb 13, 2018 9:54 am, edited 1 time in total.

ernesto
Posts: 111
Joined: Thu Jul 19, 2012 10:09 am

Re: Sonde DS18B20

Thu Feb 08, 2018 4:37 pm

Bonjour
Apparemment les sondes ne sont pas détectées par le système. Avec les dernières versions de Raspbian il faut activer le bus 1Wire , pour cela tapez dans une console:
raspi-config
puis dans le menu sélectionner 5 Interfacing Options
puis sélectionner P7 1-Wire Enable/Disable one-wire interface

Par défaut le bus 1wire est sur la pin 7. (gpio 4)

Les sondes doivent apparaitre dans /sys/bus/w1/devices. Tant que ce répertoire est vide c'est pas la peine de batailler avec python.
Cdlt

mandrin
Posts: 65
Joined: Tue Feb 06, 2018 4:49 pm

Re: Sonde DS18B20

Fri Feb 09, 2018 8:39 am

Bonjour,
Merci pour l'info,
Je procèderai demain aux essais.
Cdlt

mandrin
Posts: 65
Joined: Tue Feb 06, 2018 4:49 pm

Re: Sonde DS18B20

Fri Feb 09, 2018 1:13 pm

Bonjour,

C'est pas gagné!

Merci pour vos conseils, ça progresse un tout petit peu.
Avec trois sondes raccordées
Dans devices après un ls j'obtiens l'affichage suivant:
00-480000000000 00-c80000000000 w1_bus_master1
Il manquerait une sonde mais bref
si j'essaye de faire un cd sur ces références la réponse est exemple pour la première :
bash: cd: 00-480000000000: Aucun fichier ou dossier de ce type
En effet avec l'explorateur dans cette directorie il n'y a pas ces dossiers mais
ceux-ci:
00-280000000000
00-a80000000000
donc j'essaye de faire un cd sur les références de l'explorateur la réponse est la même.
Elles ne semblent pas fonctionner. Ce sont des sondes Dallas.
Sur Arduino Mega 2560 Rev 3 elles fonctionnent et leur référence unique est bien du genre 28-xx...xx
Ces sondes sont elles compatibles avec la tension de 3v3?
Ou alors il y a t'il a une autre explication à ce disfonctionnement?

Merci de votre attention

ernesto
Posts: 111
Joined: Thu Jul 19, 2012 10:09 am

Re: Sonde DS18B20

Fri Feb 09, 2018 1:54 pm

Ces sondes sont elles compatibles avec la tension de 3v3?
Oui ces sondes dallas DS18B20-S fonctionnent très bien en 3.3V. Toutefois il existe aussi des sondes DS18B20-PAR qui sont spécifiques pour un câblage "parasite", donc attention à la référence.
Ou alors il y a t'il a une autre explication à ce disfonctionnement?
Certainement un pb de câblage : voila un exemple avec le GPIO4(pin7)
ou bien une confusion entre nom symbolique des GPIO et pin physique des GPIO
exemple: GPIO4 --> physiquement pin N° 7 sur le connecteur.
Image

Pour rajouter d'autre bus 1 W sur le pi il suffit de taper dans une console:
dtoverlay w1-gpio gpiopin=4
dtoverlay w1-gpio gpiopin=17
dtoverlay w1-gpio gpiopin=27
dtoverlay w1-gpio gpiopin=22
dtoverlay w1-gpio gpiopin=23

voila ce que cela donne chez moi avec 5 sondes chacune sur une pin différente :

Code: Select all

root@RPI3:~ # ll /sys/bus/w1/devices/
total 0
lrwxrwxrwx 1 root root 0 févr.  9 14:27 28-000009caf709 -> ../../../devices/w1_bus_master5/28-000009caf709
lrwxrwxrwx 1 root root 0 févr.  9 14:27 28-000009ce162d -> ../../../devices/w1_bus_master4/28-000009ce162d
lrwxrwxrwx 1 root root 0 févr.  9 14:27 28-0417b30940ff -> ../../../devices/w1_bus_master1/28-0417b30940ff
lrwxrwxrwx 1 root root 0 févr.  9 14:27 28-0417b30dcdff -> ../../../devices/w1_bus_master3/28-0417b30dcdff
lrwxrwxrwx 1 root root 0 févr.  9 14:27 28-0517b219bbff -> ../../../devices/w1_bus_master2/28-0517b219bbff
lrwxrwxrwx 1 root root 0 févr.  9 14:27 w1_bus_master1 -> ../../../devices/w1_bus_master1
lrwxrwxrwx 1 root root 0 févr.  9 14:27 w1_bus_master2 -> ../../../devices/w1_bus_master2
lrwxrwxrwx 1 root root 0 févr.  9 14:27 w1_bus_master3 -> ../../../devices/w1_bus_master3
lrwxrwxrwx 1 root root 0 févr.  9 14:27 w1_bus_master4 -> ../../../devices/w1_bus_master4
lrwxrwxrwx 1 root root 0 févr.  9 14:27 w1_bus_master5 -> ../../../devices/w1_bus_master5
Bon courage

mandrin
Posts: 65
Joined: Tue Feb 06, 2018 4:49 pm

Re: Sonde DS18B20

Fri Feb 09, 2018 3:58 pm

bonjour ernesto,

Le câblage est bon
La référence des sondes est SD18B20 et Non SD18B20-s ni autres.
Ces sondes fonctionnent bien avec Arduino en 5v

J'ai fait l'essai une par une et c'est pareil aucune n'est détectée

Je vais les câbler une par GPIO avec 4k7 chacune et refaire le test.

Ca me surprend un peu qu'elles ne veuillent pas se laisser détecter!

La tension du Pi qui les alimente est de 3v2 à 3v25

C'est tout ce que je peu dire de tout ça.

Merci encore

A suivre

Cdlt

ernesto
Posts: 111
Joined: Thu Jul 19, 2012 10:09 am

Re: Sonde DS18B20

Fri Feb 09, 2018 4:21 pm

Les sondes ds18B20 sont OK aussi ...
3.2 à 3.25V pour du 3.3V c'est OK aussi ...

La commande "dtoverlay -l" peut aussi aider ... voila ce que ça donne pour moi

Code: Select all

root@RPI3:~ # dtoverlay -l
Overlays (in load order):
0:  w1-gpio  gpiopin=4
1:  w1-gpio  gpiopin=17
2:  w1-gpio  gpiopin=27
3:  w1-gpio  gpiopin=22
4:  w1-gpio  gpiopin=23

mandrin
Posts: 65
Joined: Tue Feb 06, 2018 4:49 pm

Re: Sonde DS18B20

Sat Feb 10, 2018 10:18 am

Bonjour,

Bien on avance!

Contrairement à tous les tutos que j'ai lus, la lecture des sondes ne se fait pas dans devices comme suit:
cd /sys/bus/wi/devices/
ls
cd 28-xxx
cat w1_slave
........
mais dans:
cd /sys/bus/w1/devices/
ls
cd ./w1_bus_master?/28-xxx
cat w1_slave
le point d'interrogation correspond au numéro d'ordre de l'enregistrement de la lecture des températures.

Pourquoi cette évolution?
Je vais voir si en regroupant les sondes sur un même GPIO il n'y a qu'un seul dossier.
Si non ça va rendre le programme python pour la mesure des sondes en automatique plus compliqué.

Nous avons bien avancé grâce à tes instructions dtoverlay très utiles.
Ne connaissant pas du tout Raspi tout ça m'est bien nébuleux
La documentation de ce matériel est très diffuse et parcellaire.
Il n'est pas facile de trouver une source qui va au bout d'un sujet comme 1w dans Pi.

Pour en finir (pas sur le sujet mais pour ce post) on avance et s'est le but.
Merci encore pour votre patience.

Je vais maintenant essayer d'automatiser la lecture des sondes afin de suivre l'évolution de ces températures.
Très certainement à très bientôt !!!
Cdlt

mandrin
Posts: 65
Joined: Tue Feb 06, 2018 4:49 pm

Re: Sonde DS18B20

Sat Feb 10, 2018 2:34 pm

Suite du jour,
Après plusieurs essais !!
Voilà le résultat de cet ensemble.
sudo nano /boot/config.txt
dtoverlay = w1-gpio
sudo nano /etc/modules
w1-therm pullup=1
w1-gpio pullup=1
Après le démarrage du pi
sudo dtoverlay w1-gpio gpiopin=25
sudo dtoverlay w1-gpio gpiopin=8
sudo dtoverlay w1-gpio gpiopin=7
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd / sys / bus / w1 / devices /
ls
cd 28-xxxx
cat w1_slave
Et là tout est normal les sondes sont présentes dans le dossier devices.
Pourquoi je ne sait pas mais voilà.
Merci pour vos conseils qui m’ont été très utils.
Maintenant automatisons tout ça.
Bon week end
Cdlt

mandrin
Posts: 65
Joined: Tue Feb 06, 2018 4:49 pm

Re: Sonde DS18B20

Mon Feb 12, 2018 12:18 pm

Bonjour,

Encore un détail !
Voilà le programme actuel
]
#!/usr/bin/python
# -*- coding: utf-8 -*-
#####################################################
## lecture de sondes de temperature 1-wire DS18B20 ##
## 15/07/2014 Jahislove ##
## lancement : sudo python ... ##
#####################################################

from os import system
from time import sleep

## module GPIO 1-wire et capteur de temperature #####

system(‘dtoverlay w1-gpio gpiopin=25’)
system('modprobe w1-gpio')
system('modprobe w1-therm')

## chemin vers les sondes ###########################
base_dir = '/sys/bus/w1/devices/'

## Remplacez les repertoires 28-xxxxxxxxxxx #########
## par vos propres repertoires . ####################
## Et si vous avez un nombre de sonde different #####
## supprimer (ou ajouter) les lignes ci dessous #####
sonde1 = "/sys/bus/w1/devices/28-000004bf8820/w1_slave"
sonde2 = "/sys/bus/w1/devices/28-000004ce5043/w1_slave"
sonde3 = "/sys/bus/w1/devices/28-000005583d17/w1_slave"
## et ajuster aussi les 3 lignes ci dessous #########
sondes = [sonde1, sonde2, sonde3]
fonction = ["Text=", "Tech=", "Tchau="]
sonde_value = [0, 0, 0]
saisie="a"

## fonction ouverture et lecture d'un fichier #######
def lire_fichier(fichier):
f = open(fichier, 'r')
lignes = f.readlines()
f.close()
return lignes

## boucle de mesure des temperatures ################
print("CTRL C pour quitter : ")
while (saisie != "Q"):

## Impression des temperatures ######################
for (i, sonde) in enumerate(sondes):
lignes = lire_fichier(sonde)
while lignes[0].strip()[-3:] != 'YES': # lit les 3 derniers char de la ligne 0 et recommence si pas YES
##sleep(0.1)
lignes = lire_fichier(sonde)

temp_raw = lignes[1].split("=")[1] # quand on a eu YES, on lit la temp apres le signe = sur la ligne 1
sonde_value = round(int(temp_raw) / 1000.0, 2) # le 2 arrondi a 2 chiffres apres la virgule
print (fonction, sonde_value) # affichage a l'ecran
i=i+1
sleep(8) # temps 8 secondes pour tenir compte des 2 secondes pour la lecture des 3 sondes

Tout se déroule très bien à une condition :
Mettre les instructions suivantes en manuel dans la console.
sudo dtoverlay w1-gpio gpiopin=25
sudo modprobe w1-gpio
sudo modprobe w1-therm


J’aimerai bien les automatiser afin de pouvoir lancer ce fichier directement sans commande manuelle
Les commandes suivantes insérées dans le programme python :
system(‘dtoverlay w1-gpio gpiopin=25’)
system('modprobe w1-gpio')
system('modprobe w1-therm')

Ne fonctionnent pas.
Je ne sais pas quoi faire !
Merci pour toute information.
Cdlt

totoharibo
Posts: 3815
Joined: Thu Jan 24, 2013 8:43 am

Re: Sonde DS18B20

Mon Feb 12, 2018 2:55 pm

tes commandes en console sont précédées de sudo c'est y à dire en faites par l'utilisateur root, pas celles en python.
modprobe et dtoverlay étant des commandes système c'est logique
tapes dtoverlay en console pour voir ...

ernesto
Posts: 111
Joined: Thu Jul 19, 2012 10:09 am

Re: Sonde DS18B20

Mon Feb 12, 2018 5:37 pm

Il suffit de rajouter dans /boot/config.txt
dtoverlay=w1-gpio,gpiopin=25 (remarquer la virgule)

Les deux lignes suivantes (sudo modprobe w1-gpio sudo modprobe w1-therm ) ne sont pas nécessaire, si vous avez bien activé 1-wire en utilisant l'utilitaire raspi-config comme je vous l'ai indiqué précédemment.
La commande lsmod affiche tous les modules qui sont actifs. Vous devriez y voir
w1_gpio 4818 0
wire 32619 2 w1_gpio,w1_therm

mandrin
Posts: 65
Joined: Tue Feb 06, 2018 4:49 pm

Re: Sonde DS18B20

Tue Feb 13, 2018 8:34 am

Bonjour ernesto,

Hi Hi la virgule, mais oui la virgule!

Celle là je ne l'avais pas vue.

C'est normal que ça ne marche pas.

Je suis novice tant sur le plan Linux que Python et ça va se voir :oops:

Je vais essayer et je posterais l'évolution.

Cdlt

mandrin
Posts: 65
Joined: Tue Feb 06, 2018 4:49 pm

Re: Sonde DS18B20

Tue Feb 13, 2018 9:08 am

Suite du jour,

Après ajout de
dtoverlay-w1-gpio,gpiopin=25
et sans espace dans cette instruction,
CA MARCHE!!
pas de saisie manuelle complémentaire.
il faut laisser les lignes
system('modprobe w1-gpio')
system('modprobe w1-therm')
dans Python
Bravo bon prof et merci encore.
A bientôt pour l'I2C
Je ne me fais pas d'illusion.
Cdlt

Return to “Français”

Who is online

Users browsing this forum: cailloute and 1 guest