2017-09-04 1 views
-1

Je viens de me procurer un capteur DHT22 pour la température et l'humidité et j'ai quelques doutes: - Cet appareil est-il uniquement utilisable avec arduino ou Rpi? - Si la réponse est Non, comment cela fonctionne-t-il avec le GPIO? Pour autant que je comprenne, gpio a 2 options: -Direction (in ou out) et Value (0 ou 1). Donc, d'après cela, je vérifiais beaucoup d'exemples pour arduino et Rpi sur la façon d'utiliser ces périphériques, et tous sont attachés au port de gpio. Alors, comment ça marche? Est-ce que c/C++ a une plus grande capacité à gérer ces lectures? - Si le capteur peut être utilisé avec plusieurs périphériques, existe-t-il une bibliothèque/code standard Linux pour gérer ce périphérique?Comment fonctionnent DHT22 et gpio?

Merci.

Répondre

1

Le DHT22 est, comme vous l'avez décrit, conçu pour fonctionner sur les broches GPIO. Cela signifie que tout appareil avec GPIO peut l'utiliser.

À propos des bibliothèques. Il y a deux bibliothèques principales pour communiquer via GPIO écrites, une pour C++ et une pour Python. Cela signifie que tout périphérique doté de GPIO et capable d'exécuter Python ou C++ peut utiliser votre DHT22.

Qu'en est-il pas C++, Python, Java ... bibliothèques à base? Eh bien, il n'y a pas Linux bibliothèque standard pour communiquer sur GPIO. Bien sûr, si vous êtes désireux d'apprendre et d'explorer, vous pouvez écrire une bibliothèque dans Assembly ou Bash, qui serait aussi proche de LSL que vous pouvez l'obtenir. En faisant cela, vous pouvez communiquer nativement sur GPIO à partir du shell Linux sans aucun autre langage de programmation. Si vous êtes intéressé par Bash, jetez un oeil à this.

Comment Linux connaître la température et de l'humidité quand il ne peut lire 0 et de 1? Considérons deux choses:

  1. Comment numéro de magasin d'informatique ? L'ordinateur ne connaît que et il doit donc convertir en binaire. Quelle est 32 = 2^6 en décimal, est en binaire.
  2. Comment l'ordinateur lit-il la température et l'humidité? Lorsque vous exécutez une fonction comme

    get_temperature() 
    

    qui demande la température de DHT22, ce qui se passe en réalité est que votre ordinateur envoie un signal à DHT22 (il « écrit » à DHT22 sur GPIO par IN DHT22, qui est le même que OUT sur l'ordinateur). Ensuite, le DHT22 détecte la température et "renvoie" les données. Comment l'envoie-t-il? Il crée une séquence de charges électriques via GPIO (GPIO IN sur ordinateur et GPIO OUT sur DHT22). Dans notre cas, si la température est , il envoie la séquence suivante: 1-0-0-0-0-0. L'ordinateur lit la séquence et lorsque vous essayez de l'imprimer à l'écran, il le convertit en décimal.

J'espère que je me suis bien compris et c'est ce que vous vouliez.

Dans ce link vous trouvez un code C pour la lecture de la température et de l'humidité DHT22 si c'est ce que vous voulez. S'il vous plaît laissez-moi savoir ce que vous voulez faire en général (lire temp et hum.via la bibliothèque, écrire une nouvelle bibliothèque pour communiquer via GPIO, écrire une nouvelle bibliothèque dans une autre langue pour DHT22 ...).

+0

Merci pour votre réponse. Qu'en est-il de la question sur le fonctionnement de gpio? pourquoi sur Linux je ne peux obtenir que les valeurs 0 ou 1 et avec C++ ou python je peux lire par exemple la température de l'humidité dans ce cas? – Lomezno

+1

Je vais modifier en réponse pour le compléter, merci de me rappeler que j'ai raté quelque chose ... – campovski

+0

Merci pour le lien. Voici où mon problème vient, je connecte le DHT22 à mon gpio et ensuite je fais comme sur le lien que vous m'envoyez, la seule chose que je reçois est 0. Je m'attendais à recevoir périodiquement des valeurs, mais non. Je ne comprends pas cela, pourrait être que mon capteur n'est pas correctement connecté? – Lomezno