DHT Tiny Breakout pour Raspberry Pi
Composants matériels : Capteur de température Atmel ATTiny85×1DHT22×1DHT11 Capteur de température et d'humidité×1SparkFun Tiny AVR Programmer×1Adafruit 4,7K Ω Résistance×3Adafruit 10K Ω Résistance×1Adafruit 100 ΩRésistance×1Adafruit Diffused Blue 3mm LED×1Adafruit Tactile Breakaway Button-Switch-away×1Adafruit ″ En-tête mâle à bande 36 broches 1 pièce @ longueur 6, 1 pièce @ longueur 2 (total de 8 broches) × 1 cavalier générique (0,1 ) × 1 Arduino UNO et Genuino UNO En option - utilisé pour le débogage et les tests. × 1Applications logicielles et services en ligne : Microsoft Visual Studio 2015Microsoft Windows 10 IoT CoreArduino IDE
HISTOIRE
Introduction
Les DHT11 et DHT22 sont des capteurs de température et d'humidité populaires en raison de leur précision à un coût très bas. Un problème avec eux, cependant, est qu'ils fonctionnent sur un protocole propriétaire à un fil qui nécessite une synchronisation précise. Ces capteurs se sont avérés difficiles à lire sur les cartes avec des systèmes d'exploitation non temps réel.
Il y a quelque temps, j'ai posté un article intitulé "Capteur de température DHT11 /DHT22 " montrant comment utiliser l'exemple de code Microsoft C++ de C# pour lire ces capteurs. La bibliothèque a pu obtenir une lecture mais j'ai dû ajouter une logique de nouvelle tentative pour la rendre plus fiable. Cela s'est avéré être un succès pour la plupart, mais certaines personnes ont eu des problèmes pour que cela fonctionne de manière cohérente.
Compte tenu du niveau d'intérêt pour l'utilisation de ces capteurs sur le Raspberry Pi tout en exécutant Windows 10 IoT Core, j'ai décidé de créer une deuxième option qui fournit une méthode très fiable de lecture de ces capteurs tout en maintenant un faible coût.
Présentation
L'approche présentée ici consiste à attacher le capteur DHT à un ATtiny85 peu coûteux et à le configurer en tant que périphérique esclave I2C. Ceci est accompli en utilisant la bibliothèque TinyWireS et en créant un ensemble de registres qui peuvent être lus et écrits pour interagir avec l'appareil.
L'appareil prend en charge les fonctions suivantes :
- Un intervalle de lecture configurable pour spécifier la fréquence de lecture du capteur DHT. La valeur par défaut est de lire toutes les 2 secondes.
- Un mode manuel qui désactive l'intervalle et effectue une lecture à la demande.
- Un seuil de température supérieur et inférieur configurable qui déclenchera la broche d'interruption lorsque la lecture de température actuelle est supérieure ou inférieure au seuil.
- Mode d'enregistrement de la configuration qui permet de restaurer les paramètres configurés à la mise sous tension ou après une réinitialisation.
- Réinitialisation de la configuration permettant de réinitialiser la configuration enregistrée aux valeurs par défaut.
- Contrôle de l'alimentation du capteur qui permet d'activer et de désactiver l'alimentation du capteur pour économiser de l'énergie.
- Adresse de périphérique i2c programmable. L'adresse par défaut de cet appareil est 0x26, mais elle peut être modifiée via une commande. L'appareil se souviendra de l'adresse. Si elle est réinitialisée, l'adresse reviendra à 0x26. La bibliothèque C# comprend également du code pour rechercher l'appareil sur le bus i2c afin que vous n'ayez pas besoin de connaître l'adresse pour vous connecter.
- Sélection de modèle DHT programmable. Le firmware par défaut est le DHT22, mais cela peut être modifié en envoyant une commande à l'appareil pour utiliser un modèle différent. Le modèle est enregistré de sorte qu'après chaque redémarrage ou cycle d'alimentation, il conserve le type de modèle à utiliser.
Le code source
Il y a trois ensembles de code dans ce projet. Le micrologiciel principal de la carte, un croquis principal Arduino utilisé pour tester et démontrer la carte tout en étant connecté à un Arduino Uno et à l'application Windows 10 IoT Code qui montre comment utiliser l'appareil à partir du Raspberry Pi. Tout le code est disponible dans le référentiel GitHub lié.
L'appareil/le circuit
Le circuit est petit et n'utilise que quelques composants peu coûteux. L'ATtiny85 peut être acheté auprès de plusieurs fournisseurs. Je recommande d'en choisir quelques-uns car ils ont de nombreuses fonctions utiles.
Le circuit a un en-tête à six broches qui lui permet d'être connecté à un autre circuit ou directement au Raspberry Pi. Les broches sont définies comme suit :
- GND -> Connectez-le à la terre de votre circuit ou à la broche de terre de votre Raspberry Pi.
- RST -> Cette broche est utilisée pour réinitialiser ou redémarrer l'appareil. Cette broche doit être connectée à 5V en fonctionnement normal. Pour réinitialiser l'appareil, déclenchez une impulsion FAIBLE momentanée sur cette broche.
- INT -> Cette épingle a deux fonctions. Lorsque les seuils sont activés, cette broche sera HAUTE chaque fois qu'un seuil est dépassé et BAS dans le cas contraire. Lorsque vous utilisez le mode d'économie d'énergie, cette broche est utilisée pour réveiller l'appareil en déclenchant une impulsion élevée momentanée.
- SDA -> Ligne I2C SDA.
- SCL -> Ligne I2C SCL.
- 5V -> Alimentation 5V.
Il existe également un en-tête à deux broches où un cavalier peut être ajouté pour activer ou retiré pour désactiver la LED intégrée.
Lorsque vous l'utilisez dans un projet plus vaste, le circuit du DHT Tiny peut être fusionné ou intégré au circuit existant du projet. Dans ce cas, les broches d'en-tête et la LED sont facultatives.
Le circuit peut également être construit sur une carte séparée et connecté à votre Raspberry Pi avec quelques fils ou un câble de connexion.
Programmation de l'ATtiny85
Chargez le croquis appelé DHT_Tiny_Breakout.ino sur l'ATtiny85 à l'aide de votre programmeur AVR. Si vous n'avez pas de programmeur, vous pouvez utiliser un Arduino Uno (ou une carte similaire). Consultez un ou plusieurs des articles répertoriés ci-dessous pour obtenir de l'aide.
- Programmation d'ATtiny85 avec Arduino Uno sur Hackster.io
- Atelier virtuel :programmer un ATTiny85 avec Arduino
- Programmation d'un ATtiny avec Arduino 1.6 (ou 1.0)
- Programmation d'un ATtiny avec Arduino 0022
J'utilise le programmeur SparkFun Tiny AVR pour charger mon ATtiny85.
Je fais tourner ma puce à 16 MHz. Voir mon article intitulé "ATtiny @ 16MHz " pour obtenir des instructions sur la façon de procéder.
Lors de l'utilisation de l'ATtiny85, le croquis esclave nécessite le TinyWireS bibliothèque à installer dans votre dossier bibliothèques. Cette bibliothèque peut être téléchargée sur https://github.com/rambo/TinyWire.
Breadboard le circuit
La première étape consiste à faire fonctionner le DHT Tiny sur une planche à pain. À l'aide d'une planche à pain demi-taille, construisez le circuit en suivant les schémas et les schémas de la planche à pain inclus dans le projet.
Voici quelques conseils pour vous faciliter la tâche :
- Construisez le DHT Tiny sur sa maquette, puis utilisez une autre maquette pour la connexion entre le DHT Tiny et le Uno ou le Raspberry Pi.
- L'utilisation de broches d'en-tête est recommandée car elle facilite la connexion et la déconnexion du DHT Tiny en tant qu'unité unique.
- Si vous prévoyez d'utiliser les embases mâles détachables standard sur la planche à pain, vous devrez ajuster le rebord en plastique noir au centre des broches afin qu'il s'insère dans la planche à pain (voir les images ci-dessous). Utilisez une pince à bec effilé pour effectuer les réglages.
- Si vous avez des connecteurs mâles extra-longs de 0,1 pouce, utilisez-les sur votre planche à pain. Tenez-vous en aux en-têtes de taille normale si vous prévoyez de souder des composants sur un PCB. Les extra longs ne sont pas recommandés pour les PCB.
- Vous aurez besoin de câbles de raccordement femelle-femelle si vous utilisez les broches d'en-tête sur la planche à pain. Si vous n'en avez pas, omettez les broches d'en-tête et utilisez des cavaliers mâles-mâles entre les deux cartes.
- Éloignez autant que possible les fils de la puce afin qu'il soit plus facile de sortir vos doigts et de retirer la puce pour la programmation.
Vous trouverez ci-dessous quelques images de la version maquette de mon DHT Tiny.
Connexion de l'Arduino Uno
Si vous êtes intéressé par un test rapide, une démonstration ou si vous rencontrez des difficultés pour que cela fonctionne avec votre Raspberry Pi, vous pouvez connecter le DHT Tiny à un Arduino Uno (ou appareil similaire).
- Connectez le GND épingler au GND sur l'Uno.
- Connectez le 5V broche au 5V sur l'Uno.
- Connectez le RST épingler sur D4 sur l'Uno.
- Connectez le SDA épingler au A4 sur l'Uno.
- Connectez le SCL épingler sur A5 sur l'Uno.
- Connectez le INT épingler sur D3 sur l'Uno et activez la LED via le cavalier.
Chargez et exécutez l'esquisse nommée DHT_Tiny_Master.ino . Ce croquis affichera la sortie dans le Moniteur série .
Lors de la connexion de l'I2C entre les deux cartes, il est important d'avoir des résistances de rappel sur les lignes SDA et SCL. Dans ce circuit, il y a deux 4.7K Ω connectés entre les broches et 5V.
Vous trouverez ci-dessous quelques images de la maquette DHT Tiny connectée à l'Arduino Uno.
Connexion au Raspberry Pi
Si vous êtes intéressé par un test rapide, une démonstration ou si vous rencontrez des difficultés pour que cela fonctionne avec votre Raspberry Pi, vous pouvez connecter le DHT Tiny à un Arduino Uno (ou appareil similaire).
- Connectez le GND épingler au GND (broche 9) sur le Raspberry Pi 2/3.
- Connectez le 5V broche au 5V (broche 2) sur le Raspberry Pi 2/3.
- Connectez le RST épingler sur GPIO4 (broche 7) sur le Raspberry Pi 2/3.
- Connectez le SDA épingler sur SDA (broche 3) sur le Raspberry Pi 2/3.
- Connectez le SCL épingler sur SCL (broche 5) sur le Raspberry Pi 2/3.
- Connectez le INT épingler sur GPIO17 (broche 11) et activez le voyant.
Lors de la connexion de l'I2C entre les deux cartes, il est important d'avoir des résistances de rappel sur les lignes SDA et SCL. Dans ce circuit, il y a deux 4.7K Ω connectés entre les broches et 3V3.
TRÈS IMPORTANT ! La carte DHT Tiny sera alimentée par la broche 5V du Raspberry Pi, mais les résistances de rappel doivent être connectées à la broche 3V3 du Raspberry Pi (3V3 est sur les broches 1 et 17).
Vous trouverez ci-dessous quelques images de la maquette DHT Tiny connectée au Raspberry Pi 3.
Exécution de l'application Windows 10
Obtenez le code à partir du lien du référentiel GitHub au bas du projet et décompressez-le sur votre ordinateur. Ouvrez le code source de l'application universelle dans Visual Studio 2015 et déployez-le sur le Raspberry Pi et lancez-le à partir de la console d'administration ou exécutez-le en mode débogage à partir de Visual Studio.
Si c'est la première fois que vous exécutez du code depuis Visual Studio pour une application Windows 10 IoT Core, consultez ces articles de Microsoft :
- Déploiement d'une application avec Visual Studio
- Portail des appareils Windows
Jetez un œil à la démonstration vidéo ci-dessous pour voir l'application s'exécuter sur un Raspberry Pi 3 tout en étant connecté au DHT Tiny.
Points forts de l'application
L'application Windows 10 UWP est une application de démonstration qui présente toutes les fonctionnalités du DHT Tiny. Le code affichera la température actuelle, l'humidité et d'autres valeurs de registres de l'appareil. L'interface utilisateur fournit également un moyen de modifier la configuration de l'appareil, y compris l'adresse de l'appareil.
Petite bibliothèque DHT
L'exemple de code utilise une bibliothèque écrite pour interagir avec le DHT Tiny. Cette bibliothèque est prête à l'emploi et peut être intégrée directement dans toutes vos applications.
Obtenir la bibliothèque de NuGet
Si vous ne souhaitez pas inclure le projet directement dans votre application, téléchargez simplement la bibliothèque DHT Tiny depuis NuGet à l'aide de la commande ci-dessous. Ouvrez la console du gestionnaire de packages dans Visual Studio et tapez la commande.
PM> Install-Package IoT.DhtTiny
Analyse du bus i2c pour l'appareil
La bibliothèque DHT Tiny comprend une méthode qui recherchera dans le bus i2c tous les appareils DHT Tiny et renverra une liste d'adresses. Cette liste peut être utilisée pour initialiser un ou plusieurs des appareils trouvés. Cela est particulièrement utile si vous avez modifié l'adresse de l'appareil mais que vous ne vous souvenez pas de l'adresse que vous avez définie. Notez que la méthode de rappel est facultative.
// ***// *** Énumérer les périphériques DHT Tiny sur le bus i2c.// ***IEnumerable address =wait DhtTiny.FindAllDhtTinyAsync(this. FindAllDhtTinyCallback); // ***// *** Méthode de rappel // *** Private void FindAllDhtTinyCallback(I2cScanEventArgs e) { int percentComplete =(int)((double)e.CurrentIndex / (double)e.Total * 100.0d); this.Status =string.Format("Localing devices [0x{0:X2}] [{1}%] [Found ={2:##0}]...", e.CurrentAddress, percentComplete, e.Items .Count());}
Schémas de DHT Tiny Breakout pour Raspberry Pi
Démonstration du logiciel
Cette vidéo montre à la fois l'application universelle s'exécutant sur un Raspberry Pi 3 connecté au DHT Tiny sur une maquette.
[VIDÉO À VENIR]
Création de l'appareil final
Le moyen le plus simple et le plus économique de créer la carte est d'utiliser une carte prototype de PCB telle que la carte PCB Perma-Proto Quarter-size Breadboard PCB d'Adafruit. L'image ci-dessous montre la cassure à l'aide de ce prototype de carte. Remarque J'ai utilisé un dremel pour retirer les sections de rail d'alimentation de la carte.
Voir plus : DHT Tiny Breakout pour le Raspberry Pi
Processus de fabrication
- Surveillance de la température sur le Raspberry Pi
- Station météo Raspberry Pi 2
- Capteurs analogiques sans entrées analogiques sur le Raspberry Pi
- Capteur de portée à ultrasons HC-SR04 sur le Raspberry Pi
- Les meilleurs accessoires pour votre Raspberry Pi
- Capteurs analogiques sur le Raspberry Pi utilisant un MCP3008
- SIGHT :For the Blind
- Guide de connexion Qwiic HAT pour Raspberry Pi
- Windows 10 IoT Core pour Raspberry Pi 3 modèle B+