Projet de capteur de température et d'humidité Arduino DHT11

Ligne de capteur DHT

La ligne de capteurs DHT (DHT11/22) est l'une des plus utilisées dans de nombreux projets électroniques, allant des stations météorologiques domestiques aux systèmes d'automatisation des usines, en raison de sa simplicité et de sa compacité en tant que capteur de température/humidité. Bien que le DHT22, plus précis et plus cher, puisse être remplacé (moyennant quelques modifications du code), c'est le module de capteur DHT11 qui sera utilisé dans ce projet. Avec une interface de base à 3 broches, le capteur DHT11 qui sera utilisé dans ce projet n'est pas la version autonome à 4 broches, mais plutôt un module à 3 broches qui possède un condensateur et une résistance d'excursion haute intégrés, ce qui élimine le besoin de composants supplémentaires lors de la construction de ce circuit. Par conséquent, lorsqu'il est interfacé avec une carte Arduino, le module de capteur DHT11 peut être directement connecté à une broche numérique qui traite et transmet les données sérielles du capteur au microcontrôleur, pour que nous puissions les lire.

Dans cette Projet DIY PCBALes données de température et d'humidité du capteur DHT11 seront affichées sur un écran OLED (diode électroluminescente organique) de 0,96″ 128×64 pour que nous puissions les lire visiblement. L'avantage d'utiliser un écran OLED i2c par rapport à d'autres types d'écrans est qu'il ne nécessite qu'une connexion à 4 fils à la carte Arduino et qu'avec une grande variété de bibliothèques, il peut être programmé facilement. Une caractéristique notable d'un écran OLED est sa clarté, sa netteté et la qualité visuelle des textes, des chiffres et des images qu'il peut afficher.

Dans l'ensemble, il s'agit d'un projet de circuit assez simple qui convient aux débutants absolus car il ne nécessite que quelques composants et quelques compétences de base en matière de codage. Cependant, pour ceux qui sont plus avancés, ce projet peut certainement être amélioré et mis à jour pour ajouter plus de fonctionnalités telles que la communication sans fil (RF, LoRa, etc.), Bluetooth PCB), des données RTC (horloge en temps réel), des données de capteurs supplémentaires (altitude, pression atmosphérique, concentrations de gaz, etc. Pour réaliser ce projet, vous devrez acheter des composants :

  • Arduino Nano (d'autres cartes compatibles avec Arduino fonctionneront)
  • Câble USB (compatible avec la carte Arduino)
  • Planche à pain
  • Fils de connexion mâle-mâle (7)
  • 0.96″ 128×64 i2c OLED Display
  • Module capteur DHT11

Câblage

Si vous utilisez une carte de développement différente, elle peut nécessiter un autre type de carte à pain. Pour ce projet, FS Technology utilise un Arduino Nano, ce qui nécessite l'utilisation d'une planche à pain. Cependant, si un Arduino Uno est utilisé à la place, les fils de connexion peuvent être directement branchés sur les broches de la carte, ce qui élimine le besoin d'une planche à pain. Malgré le changement de carte, le câblage du module de détection DHT11 et de l'écran OLED sur la carte Arduino reste cohérent. En outre, le schéma de câblage du circuit du capteur de température et d'humidité DHT11 est fourni ci-dessous.

  • Module de capteur DHT11 : Connecter la broche de signal (S) du capteur à D2, la broche positive (+) à +5v et la broche négative (-) à GND.
  • OLED : Connecter SDA (données série) à A4, SCL/SCK (horloge série) à A5, VDD/VCC (tension d'alimentation) à +5v et GND à GND.
  • Maintenant, vous pouvez brancher votre carte Arduino à l'ordinateur via le câble USB.
Capteur de température et d'humidité DHT11

Code du projet

1TP5Comprend <Wire.h> 

1TP5Comprend <Adafruit_GFX.h> 

1TP5Comprend <Adafruit_SSD1306.h> 

 

#define largeur_d'écran 128 

#define hauteur_de_l'écran 64

#define OLED_RESET 4 

Adafruit_SSD1306 affichage(largeur_d'écran, hauteur_d'écran);

 

1TP5Comprend "DHT.h"

#define DHTPIN 2

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

 

 void configuration() {

 dht.commencer();

 

 affichage.commencer(SSD1306_SWITCHCAPVCC, 0x3C);

 affichage.clearDisplay();

}

 

 void boucle() {

 affichage.clearDisplay();

 affichage.setTextSize(1);

 affichage.setTextColor(SSD1306_WHITE);

 

 affichage.setCursor(0, 15);

 affichage.imprimer("Température :");

 affichage.setCursor(80, 15);

 affichage.imprimer(dht.readTemperature());

 affichage.setCursor(110, 15);

 affichage.imprimer(" C");

 

 affichage.setCursor(0, 35);

 affichage.imprimer("Humidité :");

 affichage.setCursor(80, 35);

 affichage.imprimer(dht.readHumidity());

 affichage.setCursor(110, 35);

 affichage.imprimer(“%”);

 affichage.affichage();

 retarder(2000);

A propos du code

  • Un des avantages de travailler avec un écran OLED i2c est l'incroyable quantité de support qui est disponible en ligne, sous la forme de bibliothèques open-source, qui peuvent grandement aider à programmer l'écran à partir de l'IDE Arduino. Dans ce projet, les bibliothèques Adafruit SSD1306 et GFX sont les deux principales bibliothèques utilisées pour interfacer l'écran OLED avec l'Arduino et puisque toutes les informations de configuration sont déjà configurées dans les fichiers de la bibliothèque, les commandes de base sont utilisées dans l'IDE, ce qui simplifie l'utilisation de l'écran. Si vous n'avez pas téléchargé et installé ces bibliothèques dans votre IDE, vous risquez de rencontrer des erreurs de compilation. Veuillez donc vous assurer que vous avez installé les dernières versions des bibliothèques dans l'IDE Arduino.
  • Le code commence par définir les bibliothèques nécessaires à la mise en place de l'écran OLED : Wire, Adafruit SSD1306 et Adafruit GFX. Ces bibliothèques sont nécessaires pour que l'OLED fonctionne avec l'Arduino.
  • Dans le deuxième bloc, plusieurs paramètres relatifs à l'écran OLED sont définis, notamment la largeur et la hauteur de l'écran (128 x 64 pixels) et la broche de réinitialisation de l'OLED (A4).
  • Ensuite, les bibliothèques nécessaires à l'interface du capteur DHT11 avec l'Arduino sont définies, en particulier la bibliothèque 'DHT'. La broche numérique à laquelle le capteur DHT est connecté sur la carte Arduino (broche numérique 2 - D2) est également définie avec le modèle particulier de capteur DHT que nous utilisons, le capteur DHT11.
  • Maintenant, la section void setup est introduite, une des deux fonctions essentielles dans chaque code Arduino. C'est ici que nous démarrons le capteur DHT11 (dht.begin()) ainsi que l'écran OLED et avant de passer à la section void loop, l'écran OLED est nettoyé de tous les visuels précédents (display.clearDisplay()).
  • En ce qui concerne la section de la boucle vide, la partie principale du code qui se répète continuellement (en boucle) tant que la carte Arduino est alimentée, elle consiste principalement en des fonctions spécifiques à l'OLED qui définissent d'abord la taille du texte, la couleur du texte et le curseur (où nous voulons que le texte s'imprime sur l'OLED). Ensuite, nous commandons à l'OLED d'imprimer des lignes de texte à différents endroits de l'écran, qui sont principalement des informations sur la température (en degrés Celsius) et l'humidité (%) qui sont lues par le capteur DHT11. Grâce à l'utilisation de ces commandes simples qui ont été produites à partir des bibliothèques définies, nous sommes en mesure d'imprimer facilement n'importe quelle information sur l'écran.
  • Avec la fonction de retard à la toute fin du code, il est réglé pour mettre à jour l'écran OLED toutes les 2000 millisecondes avec les dernières données lues à partir du capteur. Toutefois, vous pouvez modifier ce délai en fonction de la fréquence à laquelle vous souhaitez recevoir des informations actualisées directement du capteur.

Résumez

Avec une compréhension fondamentale de ce projet et des principes de base qui sont impliqués dans l'interfaçage d'un capteur à un écran OLED, il y a certainement une multitude de façons dont ce projet peut être mis à jour et amélioré. Le plus souvent, une installation comme celle-ci peut être intégrée dans un projet de station météorologique beaucoup plus vaste en ajoutant éventuellement d'autres capteurs, un écran plus grand, des capacités sans fil, un boîtier, etc. Comme le démontre ce projet, il suffit de se familiariser avec certaines des bibliothèques Arduino disponibles pour coder sa propre station météorologique. Un projet futur pourrait impliquer la transmission sans fil de ces données météorologiques d'une carte de microcontrôleur à une autre afin de surveiller un environnement distant ou de contrôler de manière centralisée un système autonome. Quoi qu'il en soit, des projets comme celui-ci sont excellents pour initier un débutant à l'électronique de loisir et peuvent très bien être destinés à un public plus expérimenté. Fabricant de PCBA qui souhaitent explorer d'autres aspects de l'électronique. 

Blog sur les projets électroniques DIY

Arduino UNO Interrupt Timer

Arduino UNO Interrupt Timer Le Timer est une fonction intégrée dans chaque microcontrôleur et a certaines fonctions concernant le passage du temps. La fonction Timer

Lire plus "