Lecture sonde DHT22

Pour mesurer les paramètres et partager les informations recueillies

Modérateur : Francois

mikebzh44
Raspinaute
Messages : 359
Enregistré le : ven. 19 sept. 2014 09:47

Lecture sonde DHT22

Message par mikebzh44 » ven. 19 déc. 2014 10:44

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 ?
RPi 3 sous Raspbian : connecté au compteur EDF pour la téléinfo
RPi 3 : framboise de test pour OSMC, OpenELEC, LibreELEC, Retrogaming
Stockage : ReadyNAS-RN102 2 x 4 To en miroir

mike913
Raspinaute
Messages : 109
Enregistré le : mar. 7 oct. 2014 09:46
Localisation : Morsang / Orge - Essonne
Contact :

Re: Lecture sonde DHT22

Message par mike913 » ven. 19 déc. 2014 11:02

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
DS712+ 2x Western Digital WD10EADS-00L 1000 GB (SHR) - Firmware: DSM 6.1.6-15266
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.fr

mikebzh44
Raspinaute
Messages : 359
Enregistré le : ven. 19 sept. 2014 09:47

Re: Lecture sonde DHT22

Message par mikebzh44 » ven. 19 déc. 2014 11:04

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 ;)
RPi 3 sous Raspbian : connecté au compteur EDF pour la téléinfo
RPi 3 : framboise de test pour OSMC, OpenELEC, LibreELEC, Retrogaming
Stockage : ReadyNAS-RN102 2 x 4 To en miroir

mike913
Raspinaute
Messages : 109
Enregistré le : mar. 7 oct. 2014 09:46
Localisation : Morsang / Orge - Essonne
Contact :

Re: Lecture sonde DHT22

Message par mike913 » ven. 19 déc. 2014 11:42

[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.
DS712+ 2x Western Digital WD10EADS-00L 1000 GB (SHR) - Firmware: DSM 6.1.6-15266
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.fr

mikebzh44
Raspinaute
Messages : 359
Enregistré le : ven. 19 sept. 2014 09:47

Re: Lecture sonde DHT22

Message par mikebzh44 » ven. 19 déc. 2014 11:46

Cool.

Je vais tester ça ce WE ;)
RPi 3 sous Raspbian : connecté au compteur EDF pour la téléinfo
RPi 3 : framboise de test pour OSMC, OpenELEC, LibreELEC, Retrogaming
Stockage : ReadyNAS-RN102 2 x 4 To en miroir

mikebzh44
Raspinaute
Messages : 359
Enregistré le : ven. 19 sept. 2014 09:47

Re: Lecture sonde DHT22

Message par mikebzh44 » ven. 19 déc. 2014 20:36

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
RPi 3 sous Raspbian : connecté au compteur EDF pour la téléinfo
RPi 3 : framboise de test pour OSMC, OpenELEC, LibreELEC, Retrogaming
Stockage : ReadyNAS-RN102 2 x 4 To en miroir

mikebzh44
Raspinaute
Messages : 359
Enregistré le : ven. 19 sept. 2014 09:47

Re: Lecture sonde DHT22

Message par mikebzh44 » jeu. 29 janv. 2015 16:31

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
RPi 3 sous Raspbian : connecté au compteur EDF pour la téléinfo
RPi 3 : framboise de test pour OSMC, OpenELEC, LibreELEC, Retrogaming
Stockage : ReadyNAS-RN102 2 x 4 To en miroir

Avatar du membre
EVOTk
Modérateur
Messages : 799
Enregistré le : sam. 20 sept. 2014 02:36

Re: Lecture sonde DHT22

Message par EVOTk » jeu. 29 janv. 2015 18:21

Salut mikebzh44,

Avec quoi genere tu tes graph ?
NAS : DS3615xs Xpenology - 8To + 2x 3To + 2x 4To WD Red - APC Back-UPS Pro 900
Imprimante 3D : Dagoma DiscoEasy 200
Surveillance Réseau : Smokeping sur Rasp. B / Raspbian
Arcade : Raspberry Pi 3 sous RecalBox

mikebzh44
Raspinaute
Messages : 359
Enregistré le : ven. 19 sept. 2014 09:47

Re: Lecture sonde DHT22

Message par mikebzh44 » jeu. 29 janv. 2015 19:39

RPi 3 sous Raspbian : connecté au compteur EDF pour la téléinfo
RPi 3 : framboise de test pour OSMC, OpenELEC, LibreELEC, Retrogaming
Stockage : ReadyNAS-RN102 2 x 4 To en miroir

Avatar du membre
ComteZera
Messages : 40
Enregistré le : dim. 10 mai 2015 18:49
Localisation : BZH (29)

Re: Lecture sonde DHT22

Message par ComteZera » sam. 30 mai 2015 12:19

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.

Répondre

Retourner vers « La météo »