4.7 Projet : Système de contrôle de la température

Dans ce projet, nous allons démontrer comment utiliser un capteur de température et d’humidité, un ventilateur et un afficheur LCD1602 pour constituer un système intelligent de contrôle de la température et de l’humidité.

Le système mesure la température et l’humidité ambiantes et contrôle le ventilateur pour refroidir si nécessaire. Lorsque la température dépasse le seuil défini, le ventilateur s’allume automatiquement pour ramener la température ambiante en dessous de la valeur définie. Pendant ce temps, les valeurs actuelles de température et d’humidité seront affichées sur le LCD1602.

Ainsi, il réalise un ajustement automatique de la température et de l’humidité ambiantes, ce qui est parfait pour les projets qui nécessitent ces fonctions.

img


4.7.1 Diagramme de flux

image-20230607121651834


4.7.2 Capteur de température et d’humidité

Description :

Le capteur de température et d’humidité DHT11 émet des signaux numériques. Il applique les principes d’acquisition et de conversion de signaux analogiques ainsi que la technologie de détection de température et d’humidité, ce qui lui confère une stabilité à long terme et une grande fiabilité. De plus, le capteur intègre un capteur d’humidité résistif de haute précision et un capteur de température thermosensible résistif, et est connecté à un microcontrôleur 8 bits haute performance.

img


Moyens de communication du DHT11 :

Le DHT11 communique via un monobus (un bus unique) qui échange et contrôle les données.

  • Le monobus transmet le bit de données :

    • Format de données du monobus : transmet 40 bits de données à chaque fois, et le bit de poids fort en premier.

    • Valeur entière d’humidité sur 8 bits + valeur décimale d’humidité sur 8 bits + valeur entière de température sur 8 bits + valeur décimale de température sur 8 bits + parité.

    • NOTE : La valeur décimale de l’humidité est égale à 0.

  • Bit de parité :

    • Valeur entière d’humidité sur 8 bits + valeur décimale d’humidité sur 8 bits + valeur entière de température sur 8 bits + valeur décimale de température sur 8 bits.

    • La parité sur 8 bits est égale aux 8 derniers bits du résultat.

Diagramme de synchronisation :

img

NOTE :

L’hôte lit toujours les valeurs de température et d’humidité de la dernière mesure du DHT11. Par conséquent, si l’intervalle entre deux mesures est long, veuillez détecter deux fois consécutivement et adopter le deuxième résultat.

Pour plus de détails, veuillez visiter le site officiel d’ASAIR : http://www.aosong.com/products-21.html


Schéma de câblage :

Connectez le capteur de température et d’humidité à io17.

Attention : Connectez le jaune à S (Signal), le rouge à V (Alimentation) et le noir à GND. Ne les inversez pas !

img


Code de test :

  • Initialiser le port série et le capteur.

img

  • Le moniteur série affiche et rafraîchit les valeurs d’humidité et de température par seconde.

img

Code complet :

img

Résultat du test :

img

Ouvrez le moniteur série, et vous verrez la valeur actuelle de la température et de l’humidité.

img


4.7.3 Module LCD 1602

Description :

Le LCD 1602 possède une interface standard à 14 broches (sans rétroéclairage) ou 16 broches (avec rétroéclairage), ce qui économise les broches du microcontrôleur. Son circuit intégré de commande d’affichage réalise le contrôle I2C.

img


Communication série I2C :

La communication I2C, connue sous le nom complet d’Inter-Integrated Circuit (IIC) ou Two-Wire Interface (TWI), est un protocole de communication à double bus (un hôte et un esclave) couramment utilisé, développé par Phillips Semiconductor (acheté par US NXP Semiconductors).

Le plus grand avantage est que seulement deux fils complètent la transmission des données, ce qui simplifie considérablement les circuits. Au total, le bus I2C peut connecter 127 nœuds en parallèle, il prend donc en charge plusieurs hôtes et esclaves.

Généralement, une alimentation externe n’est pas nécessaire pour les esclaves, car le bus I2C leur transmettra l’alimentation :

img

Le bus I2C transmet les données via une transmission de données sur 8 bits. Habituellement, une donnée d’un octet est composée de neuf signaux d’horloge, dont huit transmettent des données et le dernier marque la fin de la transmission.

De plus, le bus I2C prend en charge la transmission de données multi-octets en répétant le processus ci-dessus en continu.

Le protocole I2C se compose essentiellement de :

  • Signal de démarrage : Avant la transmission, l’émetteur transmet un signal de démarrage pour informer le récepteur du point de départ.

  • Adresse : Elle informe le récepteur à qui les données sont envoyées.

  • Données : Elles sont transmises un octet à la fois et bit par bit.

  • Signal de fin : Lorsque la transmission est terminée, l’émetteur termine les données par un signal de fin pour informer le récepteur que le processus est terminé.

Diagramme de synchronisation du protocole série :

Pour plus de détails, veuillez visiter le site officiel : https://www.nxp.com/

img

img

Nous vous fournissons un fichier de bibliothèque Wire.h pour le protocole I2C, dans lequel les fonctions peuvent être directement appelées pour communiquer avec les appareils I2C/TWI.

Pour plus de détails sur la bibliothèque, veuillez vous référer à :

https://www.arduino.cc/reference/en/language/functions/communication/wire/


Schéma de câblage :

Connectez le LCD au bus I2C comme indiqué ci-dessous.

Attention : Connectez le jaune à S (Signal), le rouge à V (Alimentation) et le noir à GND. Ne les inversez pas !

img


Code de test :

  • Initialiser l’adresse I2C du LCD et allumer son rétroéclairage.

img

  • Définir la position du curseur LCD sur les axes X et Y (l’axe X affiche un maximum de 16 caractères, et l’axe Y affiche un maximum de 2 colonnes).

img

  • Saisir le contenu à imprimer (pas plus de 16 caractères, sinon il ne sera pas complet).

img

Code complet :

img

Résultat du test :

Le LCD1602 allume son rétroéclairage et affiche « HELLO WORLD 0 » et « HELLO WORLD 1 ».

img


4.7.4 Module de ventilateur

Description :

Le moteur 130 peut ajuster sa vitesse via PWM. Pour ce faire, deux broches doivent être connectées pour le contrôle.

Le module convient à de multiples applications, telles que la dissipation thermique des ordinateurs et la production industrielle. De plus, il est compact et facile à installer, ce qui est très pratique.

img


Schéma :

img


Schéma de câblage :

Connectez le moteur à io18 et io19.

Attention : Connectez le jaune à S (Signal), le rouge à V (Alimentation) et le noir à GND. Ne les inversez pas !

img


Code de test :

  • Définir la broche du ventilateur INA

img

  • Définir l’état du niveau de puissance de INA, qui détermine le sens de rotation du ventilateur.

img

  • Définir la broche du ventilateur INB.

img

  • Définir la sortie analogique à INB, qui décide de la vitesse de rotation.

    • Lorsque INA est à l’état haut, plus la sortie analogique à INB est faible, plus le ventilateur tournera vite.

    • Lorsque INA est à l’état bas, plus la sortie analogique à INB est élevée, plus le ventilateur tournera vite.

img

Résultat du test :

Le moteur 130 tourne alternativement à gauche et à droite toutes les 2 secondes.

img

REMARQUE :

Des arrêts intermittents existent lors du changement de sens de rotation. Ils évitent un courant excessif au moment de l’inversion. Sinon, une réinitialisation forcée peut se produire en raison d’une alimentation électrique insuffisante sur la carte de développement.


4.7.5 Système de contrôle de la température

Description :

Ici, nous lisons la valeur du capteur de température et d’humidité DHT11 via une communication monobus, et les valeurs seront affichées sur l’écran LCD. Si les valeurs dépassent le seuil défini, le ventilateur s’allumera pour la déshumidification et le refroidissement afin de protéger les animaux et les plantes de la ferme. Il est à noter que ce système est facile à installer avec de multiples fonctions, telles que le contrôle de la vitesse via PWM et la transmission de données par monobus.

Dans l’ensemble, c’est un système pratique qui aide les agriculteurs à surveiller et à contrôler l’état en temps réel pour améliorer l’efficacité de la production.


Schéma de câblage :

  • Connectez le capteur de température et d’humidité à io17.

  • Connectez le module moteur (ventilateur) à io18 et io19.

  • Connectez le LCD1602 au BUS I2C.

Attention : Connectez le jaune à S (Signal), le rouge à V (Alimentation) et le noir à GND. Ne les inversez pas !

img


Code de test :

Flux de code :

img

Code :

  • Initialisez l’écran LCD pour définir une adresse et effacez l’affichage. Allumez son rétroéclairage et définissez la position du curseur :

img

  • Initialisez le capteur DHT11 et choisissez une broche correspondante. Définissez deux variables comme valeurs de température et d’humidité.

img

  • Dans la boucle, attribuez respectivement les valeurs détectées aux deux variables.

img

  • Affichez les valeurs sur l’écran LCD.

img

  • Déterminez la valeur de la température et de l’humidité. Si la température est supérieure à 29° ou si l’humidité dépasse 80, le ventilateur tournera.

img

Code complet :

img

Résultat du test :

Lorsque la température atteint 29°C, le ventilateur s’allume pour dissiper la chaleur. Lorsqu’elle est inférieure à 29°C, le ventilateur s’éteint (le ventilateur simule juste la dissipation de chaleur, donc l’effet n’est pas bon), ce qui économise de l’énergie pour la ferme.


4.7.6 FAQ

#Q : Le capteur de température et d’humidité est-il étanche ?

R : Non. Il détecte la température et l’humidité ambiantes (dans l’air), veuillez donc ne pas le mettre dans l’eau.


#Q : La carte ESP32 se réinitialise lorsque le ventilateur tourne.

R : Lorsque le ventilateur tourne, plus de courant est nécessaire que pour les autres capteurs, d’où des fluctuations de tension et de courant dans le circuit. Surtout au moment de l’inversion du ventilateur, les fluctuations peuvent être trop importantes, entraînant une réinitialisation due à une tension et un courant extrêmement faibles dans la carte de développement ESP32.