Skip to main content

Mayar , Ruby-Joe : Prototypage

Contexte

Dans le cadre de nos expérimentations avec l'Arduino, nous avons exploré son potentiel en développant un système simple de détection d'humidité.

Objectif

Utiliser un capteur d'humidité avec une carte Arduino pour contrôler des LEDs. Lorsque l'humidité dépasse un seuil de 50%, la LED rouge s'allume. Si l'humidité est inférieure à ce seuil, c'est la LED verte qui s'allume.

Matériel

  • 1 carte Arduino
  • 1 BASE SHIELD
  • 2 rĂ©sistances
  • 1 plaque de montage rapide (breadboard)
  • 1 LED verte
  • 1 LED rouge
  • 4 fils de connection
  • 1 capteur de tempĂ©rature et d'humiditĂ© (type SHT31 ou similaire)

Montage Physique 

Le capteur de température et d'humidité est connecté à la carte Arduino via un Base Shield, facilitant l'interface avec le capteur en utilisant le protocole I2C. Le rôle de ce capteur est de mesurer l'humidité ambiante.

Deux LEDs (une rouge et une verte) sont utilisĂ©es pour indiquer le niveau d'humiditĂ©:  

  • La LED rouge s'allume lorsque l'humiditĂ© dĂ©passe 50%.
  • La LED verte s'allume lorsque l'humiditĂ© est infĂ©rieure Ă  50%.

Les deux LEDs sont connectées à la breadboard, chacune avec une résistance pour limiter le courant. La LED rouge est branchée sur la broche 8 de l'Arduino, et la LED verte sur la broche 12. Elles sont ensuite reliées à la masse (GND) de l'Arduino pour fermer le circuit.

Le tout est alimenté par l'Arduino, qui est relié à un ordinateur via USB pour à la fois alimenter le circuit et afficher les résultats sur le moniteur série.

montage-physique2.jpg

Explication du Code

Le code se compose de plusieurs parties importantes:

  1. Inclusion des bibliothèques et initialisation des variables
    Ici, on inclut les bibliothèques nĂ©cessaires pour utiliser le protocole I2C et le capteur d'humiditĂ© SHT31. Les pins des LEDs sont dĂ©finies respectivement sur les broches 8 (LED rouge) et 12 (LED verte).  Les variables start et stop sont initialisĂ©s et utilisĂ©es pour mesurer le temps d’exĂ©cution de la lecture du capteur en microsecondes. L’objet sht permet d’interagir avec le capteur SHT31.
       
    #include "Wire.h"
    #include "SHT31.h"
    #define LEDROUGE 8 
    #define LEDVERTE 12
    #define SHT31_ADDRESS   0x44
    
    uint32_t start;
    uint32_t stop;
    
    SHT31 sht;
                                                                                                                                                                                                  
  2. Configuration initiale dans la fonction setup() 
    Cette partie du code initialise la communication sĂ©rie Ă  9600 baud (Serial.begin(9600)) pour afficher les rĂ©sultats sur le moniteur sĂ©rie. Les pins des LEDs sont configurĂ©es en tant que sorties, et la communication I2C (Wire.begin()) avec le capteur est dĂ©marrĂ©e.   

    void setup()
    {
      Serial.begin(9600);
      pinMode(LEDROUGE, OUTPUT);
      pinMode(LEDVERTE, OUTPUT);
      Serial.println(__FILE__);
      Serial.print("SHT31_LIB_VERSION: \t");
      Serial.println(SHT31_LIB_VERSION);
    
      Wire.begin();
      Wire.setClock(100000);
      sht.begin();
    
      uint16_t stat = sht.readStatus();
      Serial.print(stat, HEX);
      Serial.println();
    }
            
  3. Lecture des donnĂ©es d'humiditĂ© et Condition de contrĂ´le des LEDs 
    Dans la boucle principale, le capteur d'humiditĂ© est interrogĂ©, et la valeur mesurĂ©e est rĂ©cupĂ©rĂ©e et affichĂ©e sur le moniteur sĂ©rie. Le capteur renvoie un pourcentage d'humiditĂ©.   
    Ensuite, avec une condition "if", selon le niveau d'humiditĂ© mesurĂ©, le programme allume la LED rouge  ou la LED verte.  Si l'humiditĂ© dĂ©passe ou est Ă©gale Ă  50%, la LED rouge s'allume (digitalWrite(LED, HIGH)) et la LED verte s'Ă©teint. Si l'humiditĂ© est infĂ©rieure Ă  50%, c’est la LED verte qui s'allume et la LED rouge qui s'Ă©teint. Ce contrĂ´le est rĂ©pĂ©tĂ© Ă  chaque itĂ©ration de la boucle. 
    La fonction delay(100) introduit une pause de 100 millisecondes entre chaque lecture pour Ă©viter une boucle trop rapide.  

    void loop()
    {
      start = micros();
      sht.read();         //  default = true/fast       slow = false
      stop = micros();
      float humidity=sht.getHumidity();
    
      Serial.print("Humidity:");
      Serial.println(humidity);
      if (humidity>=50){
        digitalWrite(LEDROUGE, HIGH);  // turn the RED LED on (HIGH is the voltage level)
        digitalWrite(LEDVERTE, LOW);  // turn the GREEN LED off (LOW is the voltage level)
    
      }
      else{ 
        digitalWrite(LEDVERTE, HIGH);  // turn the GREEN LED on (HIGH is the voltage level)
        digitalWrite(LEDROUGE, LOW);   // turn the RED LED off by making the voltage LOW
      }                   
      
      delay(100);     // wait for a 0.1 second
      
      delay(100);
    }

Tests

Après avoir terminé le montage et la programmation de l'Arduino, nous avons effectué des tests pour vérifier le bon fonctionnement du système.

  1. Test 1 : Humidité inférieure à 50%
    Lorsque le capteur détecte une humidité inférieure à 50%, la LED verte s'allume, indiquant que le niveau d'humidité est dans la plage normale qu'on a indiqué.

    image_123650291.JPG

     

  2. Test 2 : Humidité supérieure à 50%
    Pour simuler une augmentation d'humiditĂ©, nous avons appuyĂ© sur le capteur avec notre doigt, augmentant ainsi la valeur mesurĂ©e par le capteur. Une fois que l'humiditĂ© dĂ©passe le seuil de 50%, la LED rouge s'allume, indiquant que l'humiditĂ© est Ă©levĂ©e. 

    image_123650291 (1).JPG