Compteur de température et d'humidité sur le contrôleur Arduino avec affichage des valeurs sur l'écran LCD

Récemment, j'ai commencé à étudier la programmation du microcontrôleur Arduino. Après avoir terminé quelques exercices de base (LED clignotantes, travailler avec des entrées discrètes et analogiques, afficher des informations sur un écran LCD, etc.), j'ai voulu créer une sorte d'appareil utile pour la maison.

J'ai décidé de faire un compteur de température et d'humidité dans la pièce, avec une indication des paramètres sur l'écran LCD. J'ai également réalisé un rétroéclairage adaptatif, qui modifie la luminosité en fonction du niveau d'éclairage dans la pièce. Cela vous permet de réduire la consommation d'énergie de l'appareil et donc d'augmenter la durée de vie de la batterie.

Dans le projet, j'ai utilisé les composants suivants:

1.

image

Carte Arduino Uno 2. Écran LCD1602 avec module de support de protocole I2C. Afin de réduire le nombre de fils et de simplifier la connexion de l'écran, j'ai décidé de le connecter via le protocole I2C, pour cela j'ai soudé un module convertisseur spécial à l'écran LCD.

"

3. Capteur de température et d'humidité DHT11. Il vous permet de déterminer l'humidité de 20 à 80% et la température de 0 à 50 ° C. Le capteur a 4 sorties, mais seulement 3 sont utilisées. Une résistance de 10k ohms doit être installée entre la sortie de puissance et la sortie de données. I J'ai utilisé un capteur prêt à l'emploi monté sur la carte avec une résistance connectée, vous pouvez donc le connecter en toute sécurité à la carte Arduino.

"

4. Photorésistance. Il est connecté à la carte Arduino avec un pull-up à GND, via une résistance de 10kΩ.



Le schéma de connexion est le suivant: La



photorésistance est connectée à l'entrée analogique A0 de la carte Arduino. La ligne de données du capteur DHT11 est connectée à la broche discrète 2, la broche d'alimentation est connectée à + 5V Arduino, respectivement, la broche GND est connectée à la terre de la carte Arduino. L'écran LCD est connecté à l'alimentation de la carte, la broche SDA est connectée à A4, la broche SCL est à A5. La ligne de contrôle de la luminosité du rétroéclairage est connectée à la broche 9, sur laquelle le signal PWM est généré.

Voici le code source:

#include "DHT.h"                  //      DHT11
#include "Wire.h"               
#include "LiquidCrystal_I2C.h"    //     LCD 

int LD;                           //  

#define DHTPIN 2                  // PIN    DHT11
#define LED 9                     // PIN   -
#define FOTO 0                    // PIN   

DHT dht(DHTPIN, DHT11);           //  DHT11
LiquidCrystal_I2C lcd(0x27,16,2); // 


void setup() {
 pinMode(LED, OUTPUT);            // PIN LED  
 
 dht.begin();                     //    
 
 lcd.init();                      // LCD 
 lcd.backlight();
}


int light(int svet)               //  
{                                 //    
  if (svet<25)                    //  -
  {
    return 255;
  }

  if(svet>1020)
  {
    return 2;
  }
  else
  {
    int L=(int)(-0.2*svet+261.262);
    return L;
  }
}


void loop() {
   int f = analogRead(FOTO);              //    
   LD=light(f);
   delay(2000);
   analogWrite(LED, LD);                  //   
   
   float h=dht.readHumidity();            //  
   float t=dht.readTemperature();         //  

    lcd.setCursor(0,0);                   //      
    lcd.print("Temp ");                   //  
    lcd.print(t);
    
    lcd.setCursor(0,1);                   //      
    lcd.print("Hum ");                    //  
    lcd.print(h);

}


Après avoir compilé ce code, nous obtenons un tel appareil qui fonctionne: à



l'avenir, je prévois de faire des appareils plus intéressants et plus complexes sur Arduino.

J'ai également fait une vidéo où j'ai montré comment fonctionne l'appareil:


All Articles