Page 1 sur 3

Lecture sonde DHT22

Posté : ven. 19 déc. 2014 10:44
par mikebzh44
Salut.

Hier, j'ai reçu de Chine mon DHT22 (en fait, c'est un AM2302 car la résistance de tirage est déjà sur le PCB). Ca marche nickel en utilisant le programme C fourni par Adafruit (et oui, ce capteur n'est pas 1-wire :( ) MAIS (il y a toujours un mais) le programme ne retourne pas forcément toujours les valeurs de T° et humidité :S

Quand ça se passe bien :

Code : Tout sélectionner

pi@raspberrypi ~ $ sudo ./Adafruit_DHT 22 4
Using pin #4
Data (40): 0x2 0x13 0x0 0xce 0xe3
Temp =  20.6 *C, Hum = 53.1 %
pi@raspberrypi ~ $
Quand ça se passe mal :

Code : Tout sélectionner

pi@raspberrypi ~ $ sudo ./Adafruit_DHT 22 4
Using pin #4
Data (40): 0x2 0x13 0x0 0xce 0xe3
pi@raspberrypi ~ $
Déjà, le truc relou, c'est qu'il faut le lancer en tant que root car il va lire dans /dev/mem (ou un truc comme ça).

Pour l'instant, j'ai contourné le problème en faisant ce genre de script bash :

Code : Tout sélectionner

/usr/local/bin/Adafruit/Adafruit_DHT 22 4 > /tmp/DHT22.out
OUT=`cat /tmp/DHT22.out | wc -l`
while [ $OUT -ne 3 ]
do
   sleep 2
   /usr/local/bin/Adafruit/Adafruit_DHT 22 4 > /tmp/DHT22.out
   OUT=`cat /tmp/DHT22.out | wc -l`
done
TEM=`tail -1 /tmp/DHT22.out|awk -F',' '{print $1}'|awk '{print $3}'`
HUM=`tail -1 /tmp/DHT22.out|awk -F',' '{print $2}'|awk '{print $3}'`
echo "Il fait $TEM °C et l'humidité est de $HUM %"
Donc, je tente une lecture en appelant le programme et en redirigeant la sortie dans un fichier texte.
Je compte le nombre de ligne, si 2 lignes alors j'attends 2 secondes et je relance une lecture.
Si 3 lignes, extraction des infos. Reste à appeler un autre programme, en Python, qui va aller enregistrer les 2 infos dans la BDD MySQL.

Pensez-vous que cela soit normal de ne pas avoir un résultat à chaque interrogation du capteur via le programme ?

Re: Lecture sonde DHT22

Posté : ven. 19 déc. 2014 11:02
par mike913
Bonjour,

Est-ce une coincidence mais quand tu regardes la ligne:
Data (40): 0x2 0x13 0x0 0xce 0xe3
qui est la même dans les 2 cas
0x2 0x13 égal 531 en décimal et 0xce = 206

Re: Lecture sonde DHT22

Posté : ven. 19 déc. 2014 11:04
par mikebzh44
J'avoue, j'ai triché en faisant un simple copier/coller pour illustrer ce message.

Je posterai des lignes avec et sans résultat ce soir pour avoir les valeurs HEXA retournées ;)

Re: Lecture sonde DHT22

Posté : ven. 19 déc. 2014 11:42
par mike913
[quote="mikebzh44"]
Déjà, le truc relou, c'est qu'il faut le lancer en tant que root car il va lire dans /dev/mem (ou un truc comme ça).

Code : Tout sélectionner

 
J' avais le même problème avec: /dev/ttyUSB0  propriétaire root et groupe dialout la solution:
	sudo usermod -a -G dialout Pi
maintenant l' utilisateur Pi peut lire et écrire sur /dev/ttyUSB0
dans ton cas:
[11:28:33]  michel@Banapi:~$ ls /dev/mem -l
crw-r----T 1 root kmem 1, 1 janv.  1  2010 /dev/mem
le propriétaire est root et le groupe: kmem
essaye de faire sudo usermod -a -G kmem Pi
par contre le groupe peut lire le device mais ne peut pas écrire sur le device.

Re: Lecture sonde DHT22

Posté : ven. 19 déc. 2014 11:46
par mikebzh44
Cool.

Je vais tester ça ce WE ;)

Re: Lecture sonde DHT22

Posté : ven. 19 déc. 2014 20:36
par mikebzh44
Pour ce qui est des erreurs de lecture :

Code : Tout sélectionner

pi@raspberrypi ~ $ sudo /usr/local/bin/Adafruit/Adafruit_DHT 22 4
Using pin #4
Data (40): 0x2 0x35 0x0 0xd4 0xb
Temp =  21.2 *C, Hum = 56.5 %
pi@raspberrypi ~ $ sudo /usr/local/bin/Adafruit/Adafruit_DHT 22 4
Using pin #4
Data (39): 0x4 0x6a 0x1 0xa6 0xa
pi@raspberrypi ~ $ sudo /usr/local/bin/Adafruit/Adafruit_DHT 22 4
Using pin #4
Data (39): 0x2 0x34 0x0 0xd2 0x4
Pour ce qui est de /dev/mem, le fait de rajouter l'utilisateur pi dans le group kmem n'a pas fait grand chose :(

Code : Tout sélectionner

pi@raspberrypi ~ $ sudo usermod -a -G kmem pi
pi@raspberrypi ~ $ /usr/local/bin/Adafruit/Adafruit_DHT 22 4
bcm2835_init: Unable to open /dev/mem: Permission denied
pi@raspberrypi ~ $ ls -l /dev/mem
crw-r----T 1 root kmem 1, 1 janv.  1  1970 /dev/mem
pi@raspberrypi ~ $ cat /etc/group|grep kmem
kmem:x:15:pi
Et j'ai testé la manière bourrin en rajoutant le droit r pour other et même le droit w pour le group mais toujours la même erreur :

Code : Tout sélectionner

pi@raspberrypi ~ $ sudo chmod o+r /dev/mem
pi@raspberrypi ~ $ ls -l /dev/mem
crw-r--r-T 1 root kmem 1, 1 janv.  1  1970 /dev/mem
pi@raspberrypi ~ $ /usr/local/bin/Adafruit/Adafruit_DHT 22 4
bcm2835_init: Unable to open /dev/mem: Permission denied
pi@raspberrypi ~ $ sudo chmod o-r /dev/mem
pi@raspberrypi ~ $ sudo chmod g+w /dev/mem
pi@raspberrypi ~ $ /usr/local/bin/Adafruit/Adafruit_DHT 22 4
bcm2835_init: Unable to open /dev/mem: Permission denied
pi@raspberrypi ~ $ ls -l /dev/mem
crw-rw---T 1 root kmem 1, 1 janv.  1  1970 /dev/mem

Re: Lecture sonde DHT22

Posté : jeu. 29 janv. 2015 16:31
par mikebzh44
Ma bidouille avec mon script shell marche bien.

En plus de la sonde DHT22, j'ai aussi rajouté une sonde BMP180 pour la pression atmosphérique.

Les graphiques commencent à prendre forme :

Image

Re: Lecture sonde DHT22

Posté : jeu. 29 janv. 2015 18:21
par EVOTk
Salut mikebzh44,

Avec quoi genere tu tes graph ?

Re: Lecture sonde DHT22

Posté : jeu. 29 janv. 2015 19:39
par mikebzh44

Re: Lecture sonde DHT22

Posté : sam. 30 mai 2015 12:19
par ComteZera
Bonjour,

J'écris ici pour ne pas faire de doublon.

Je viens de faire l’acquisition d'un DHT22.
Une fois connecté avec une résistance de 10K j’obtiens ceci :

Code : Tout sélectionner

pi@raspberrypi ~/adafruit/Adafruit-Raspberry-Pi-Python-Code-master/Adafruit_DHT_Driver $ sudo ./Adafruit_DHT 22 4
Using pin #4
Data (0): 0x0 0x0 0x0 0x0 0x0
La même réponse lorsque je n'ai pas de composant :?


J'ai mis un oscilloscope sur la pin 2 du DHT22 et j'ai en permanence 3.3V dessus, aucun passage par 0 :?:

Dois en déduire que la sonde est défectueuse ?

PS : j'ai mis une autre résistance de 10K en parallèle mais toujours le même résultat.