Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Capteur de température DHT11 /DHT22

Composants et fournitures

Capteur de température et d'humidité DHT11 (4 broches)
× 1
Raspberry Pi 2 Modèle B
× 1
Arduino UNO
× 1
Câble de raccordement mâle à mâle
× 3
Planche à pain (générique)
× 1
4.7K Ω Résistance
× 1
Kit de dérivation cordonnier
× 1

Applications et services en ligne

Microsoft Windows 10 IoT Core
Arduino IDE
Raspberry Pi Raspbian
Microsoft Visual Studio 2015
WinSCP
PuTTY

À propos de ce projet

Présentation

Contexte

Le DHT11 est un capteur de température et d'humidité à 4 broches (une broche est inutilisée) capable de mesurer de 20 à 90 % d'humidité relative et de 0 à 50 °C. Le capteur peut fonctionner entre 3 et 5,5 V CC et communique à l'aide de son propre protocole propriétaire OneWire. Ce protocole nécessite une synchronisation très précise afin d'obtenir les données du capteur. Les bits LOW et HIGH sont codés sur le fil par la durée pendant laquelle le signal est HIGH. Le temps total pour effectuer une lecture est d'au plus 23,4 ms. Cela inclut un délai de 18 ms requis pour démarrer le transfert de données et une fenêtre pouvant aller jusqu'à 5,4 ms pour les données. Les signaux individuels peuvent être aussi courts que 20 s et aussi longs que 80 μs.

Lorsque Windows 10 IoT Core est devenu disponible pour la première fois, j'ai saisi mon Raspberry Pi 2 et mon capteur DHT11 et je l'ai essayé en C#. J'ai vite compris que ça n'allait pas marcher. Le problème avec C# dans Windows 10 IoT Core est qu'il ne sera tout simplement pas assez rapide (du moins pas pour le moment).

J'ai posté sur le forum Microsoft et j'ai eu quelques échanges avec d'autres développeurs ayant le même problème. Je suis finalement tombé sur une réponse de Microsoft sur le protocole OneWire dans Windows 10 IoT Core qui disait :

Au bout d'un moment, j'ai reçu une réponse à mon message :

Eh bien, ce sera un grand et je suis vraiment enthousiasmé par la capacité à venir, mais qui peut attendre ? J'ai récemment vu que Microsoft a publié un exemple sur la façon de prendre en charge le protocole OneWire en utilisant le DHT11 comme exemple de capteur et en utilisant C++ sur Windows 10 IoT Core. J'ai vu cela comme une opportunité de l'amener en C#.

Ce projet consiste à transformer cet échantillon en une bibliothèque pouvant être utilisée en C#. Je suis reconnaissant envers la personne qui a écrit la bibliothèque pour aider à rendre ce capteur populaire utile dans Windows 10 IoT Core, et j'espère qu'avec cette bibliothèque, il sera encore plus utile.

Bibliothèque

La bibliothèque que j'ai créée est une simple refactorisation du code publié à l'origine par Microsoft, je ne prends donc aucun crédit pour le travail effectué pour obtenir la lecture du capteur.

La bibliothèque présente une classe simple appelée Dht11 dans l'espace de noms Sensors.Dht . Créer un nouvel objet en C# est simple.

Ouvrez d'abord la broche GPIO à laquelle la broche du capteur DHT11 est connectée.

à l'aide de Sensors.Dht ; broche GpioPin =GpioController.GetDefault().OpenPin(4, GpioSharingMode.Exclusive ); 

Passez ensuite cette broche au constructeur du Dht11 class et spécifiez le mode GPIO Pin Drive. Cela vous permet de décider si vous ajouterez votre propre résistance de rappel.

Dht11 dht11 =nouveau Dht11(_pin, GpioPinDriveMode.Input); 

Pour obtenir une lecture de l'appareil, utilisez GetReadingAsync méthode.

DhtReading lecture =wait dht11.GetReadingAsync().AsTask(); 

Il existe une surcharge qui permet de spécifier la valeur maximale des nouvelles tentatives. La valeur par défaut est 20. Ceci spécifie le nombre de tentatives à faire pour lire le capteur avant d'abandonner et de renvoyer une lecture ayant échoué.

La Lecture Dht la structure est définie comme :

structure de valeur publique DhtReading{ bool TimedOut ; bool IsValid; double température; double humidité; int RetryCount;}; 

Observations

Même si le capteur fonctionne en C++, il n'obtient toujours pas de lecture à chaque fois. Ainsi, la nécessité d'une option de nouvelle tentative dans la classe (cela fait en fait partie de l'exemple Microsoft). J'ai pensé qu'il serait préférable de comparer cela à d'autres plates-formes pour voir comment cela fonctionne. J'ai essayé du code sur le Raspberry Pi 2 sous Raspbian ainsi que sur un Arduino Uno. Le code que j'ai utilisé pour les deux a été inclus dans le référentiel GitHub.

La vidéo incluse dans ce projet démontrera et comparera la sortie de chacune de ces plates-formes.

Mise en route

Assembler le circuit pour le Raspberry Pi 2

Utilisez ce guide pour assembler le circuit tout en utilisant le schéma situé près du bas de la page comme guide (notez que la couleur des fils est facultative et a été sélectionnée pour aider à rendre le circuit facile à suivre lorsqu'il est construit).

  • Placez le cordonnier en forme de T à l'extrémité gauche de la planche demi-taille+ (où les chiffres commencent à 1). Les deux broches les plus à gauche seront en E1 et F1 sur le tableau. Les deux broches les plus à droite seront à E20 et F20
  • Placez la résistance 4,7K Ω entre A4 et 3V3
  • Connectez un cavalier orange mâle à mâle entre B4 et F28
  • Connectez un cavalier rouge mâle à mâle entre F29 et 3V3
  • Connectez un cavalier noir mâle à mâle entre F30 et GND
  • Placez les capteurs DHT11 dans J30 (-), J29 (+) et J28 (s)
  • Branchez le câble plat dans le cordonnier et le Raspberry Pi

Assembler le circuit pour l'Arduino

Utilisez ce guide pour assembler le circuit tout en utilisant le schéma situé près du bas de la page comme guide (notez que la couleur des fils est facultative et a été sélectionnée pour aider à rendre le circuit facile à suivre lorsqu'il est construit).

  • Placez la résistance de 4,7 K entre E12 et E13
  • Connectez un cavalier blanc mâle à mâle entre D13 et Broche 5 dans l'Arduino
  • Connectez un cavalier rouge mâle à mâle entre D12 et le 5V broche dans l'Arduino
  • Connectez un cavalier noir mâle à mâle entre D11 et GND sur Arduino
  • Placez les capteurs DHT11 dans A11 (-), A12 (+) et A13 (s)
  • Branchez le câble USB de votre ordinateur sur votre Arduino

Vous trouverez ci-dessous des photos des circuits que j'ai construits.

Démarrage de l'application pour le Raspberry Pi

Choisissez Debug, ARM configuration et Remote Machine. Maintenant, cliquez avec le bouton droit sur le projet, sélectionnez Propriété, puis cliquez sur Déboguer la balise. Ensuite, placez l'adresse IP Raspberry Pi 2 dans le champ Machine distante et décochez Utiliser l'authentification.

Appuyez sur F5 . L'application se déploiera sur l'appareil, ce qui peut prendre quelques minutes la première fois.

Démarrage de l'application pour l'Arduino

L'esquisse de ce projet est disponible dans GitHub dans un fichier appelé Dht11_Speed . Démarrez l'IDE Arduino et ouvrez l'esquisse. Téléchargez le croquis sur l'Arduino (Ctrl U ) puis démarrez Serial Monitor (Ctrl Shift M )

Si vous ne savez pas comment procéder ou si vous débutez dans cet environnement, la vidéo ci-dessous vous montrera comment procéder.

Démarrer l'application pour Raspbian

Le code C du Raspberry Pi est disponible dans GitHub pour ce projet dans un fichier appelé Dht11.c . La source doit être copiée sur le Raspberry Pi puis compilée là-bas. J'aime utiliser WinSCP pour copier des fichiers. Si vous n'avez pas cette application, je vous recommande de la télécharger et de l'installer maintenant. Le code source utilise le câblagePi qui doit être installé avant de compiler l'application.

La commande pour compiler le code sur le Raspberry Pi est :

gcc -oDht11_Speed ​​Dht11_Speed.c -L/usr/local/lib -lwiringPi -std=c99 -lm 

Pour exécuter l'application, entrez la commande :

sudo ./Dht11_Speed ​​1000 10 

Où 1000 spécifie un délai de 1000 ms (1 seconde) et 10 est le nombre d'échantillons à lire.

La vidéo montrera plus en détail comment copier le code et comment le compiler sur le Raspberry Pi exécutant Raspbian. Pour savoir comment charger Raspbian sur votre Raspberry Pi, rendez-vous sur https://www.raspberrypi.org/downloads/raspbian/.

Vidéo

La vidéo ci-dessous est une démonstration de l'application :

Regardez cette vidéo sur You Tube en utilisant le mode Cinéma pour une qualité optimale.

Code

Code source Visual Studio 2015 C#/C++
https://github.com/porrey/dht.git

Schémas

Dht11_RPi2.fzz Dht11_Arduino.fzz

Processus de fabrication

  1. Enregistreur de température Raspberry Pi
  2. Bibliothèque Python du capteur de température TMP006 utilisant Raspberry pi,
  3. Capteur de température Python et Raspberry Pi
  4. Capteur de température 1 fil DS1820 au Raspberry Pi (GPIO directement)
  5. Capteur de thermomètre numérique Raspberry Pi à 1 fil (DS18B20)
  6. Capteur de température et de luminosité Raspberry Pi
  7. Capteur de température Raspberry Pi
  8. Raspberry PI Based IoT Project Connecting DHT11 Sensor
  9. Capteur de température de roulement | détecteur