Arrosage automatique

Auteur avatarZoé Tran-Van | Dernière modification 9/12/2019 par Clementflipo

Arrosage automatique Plante.PNG
Fabrication et programmation d'un système d'arrosage automatique pour une plante avec Arduino

Matériaux

-Arduino Uno 

-Breadboard 

-Straps mâles et femelles 

-Base Shield V2 

-Tuyaux en Plastique 

-Pompe 

-Relai [SRD-05VDC-SL-C]

-Capteur d’humidité [YL-69]

-Capteur de température [KY-013]

-Capteur de luminosité [Grove – Light Sensor (P) V1.1]

-Alimentation de 12V

Outils

Étape 1 - Branchement de la Base Shield V2

Dans un premier temps, il faut commencer par brancher la carte Arduino et la Base Shield V2 ensemble tout simplement en les emboîtant l’un dans l’autre. Cela permet de faciliter les branchements lorsqu’il est nécessaire de brancher plusieurs capteurs et d’éviter de mettre en désordre les câbles entre eux.




Étape 2 - Utilisation de la breadboard

Branchement du breadboard (au niveau du "+") au signal 5V de carte Arduino (répand un même signal sur toute la ligne pour l’utiliser pour plusieurs capteurs différents)




Étape 3 - Capteur de température

Brancher le capteur directement sur le breadboard. Puis brancher le câble rouge (le plus à gauche) au 5V ; le câble noir (au centre) au GRD et le câble blanc (le plus à droite) à une entrée analogique (soit, pour nous, A5).




Étape 4 - Capteur de luminosité

Brancher directement le capteur de luminosité avec une entrée analogique directe de la Base Shield A0.




Étape 5 - Capteur d'humidité

Le capteur d'humidité utilisé contient à la fois un module (un capteur) et une platine de mesure (sous forme de fourche à plantée dans un sol). Il faut donc dans un premier temps, brancher le capteur à la platine de mesure en reliant deux fils entre eux deux (GND et signal). Puis, afin d'obtenir une valeur digitale, il faut brancher le capteur à la Base Shield de la façon suivante : 

- VCC -> 5V [Breadboard] 

- GND -> GND [Base Shield] 

- D0 -> Pin 3 Digitale [Base Shield]




Étape 6 - Pompe

Nous avons utilisé un relai dans le but de contrôler la mise en service de notre pompe. Dans un premier temps, il faut donc brancher ce relai à notre Base Shield comme suit : 

- VCC -> 5V [Breadboard]

- GND -> GND [Base Shield]

- IN1 -> 10 [Broche d'entrée / sortie numérique Base Shield]

Puis du relai à notre pompe, il faut les lier à l'aide d'un fil. Une alimentation est utilisée afin de fournir le potentiel nécessaire ; cette alimentation est donc branchée d'un côté au relai et de l'autre, à la pompe qui sera équipée de tuyaux afin de faire circuler l'eau.




Étape 7 - Code Arduino

Sur Arduino, copier le code suivant :

#include <math.h>

#define LIGHT_SENSOR A0

int sensorPin = A5; // Déclaration de la broche d'entrée de thermomètre

double Thermistor(int RawADC) //Calcul température du capteur correspondant

{

    double Temp;

    Temp = log(10000.0 * ((1024.0 / RawADC - 1)));

    Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp );

    Temp = Temp - 227.15;            // conversion de degrés Kelvin en °C

    return Temp;

}

int PinNumeriqueHumidite=2;

int humidite;

void setup() 

{

  Serial.begin (9600);

  pinMode(10, OUTPUT);

  pinMode(PinNumeriqueHumidite, INPUT);

}

void loop() 

{   

  int readVal = analogRead(sensorPin);

  double temperature =  Thermistor(readVal);

  int luminosite = analogRead(LIGHT_SENSOR);

  Serial.println("Température = ");

  Serial.print(temperature);

  Serial.println(" degrés.");

  delay(500);  

  humidite = digitalRead(PinNumeriqueHumidite);

  Serial.println("Humidité = ");

  Serial.println(humidite);

  delay(500);  

  Serial.println("Luminosité = ");

  Serial.println(luminosite);

  delay(500);

  if (humidite==1) 

     {

       if ((temperature>2) && (temperature<=10))

          {

            if (luminosite>100)

               {

                digitalWrite(10, HIGH);

                delay(500);

                digitalWrite(10, LOW);

               }

            else 

            {

              digitalWrite(10, LOW);

            }

          }              

       if ((temperature>10) && (temperature<25))

          {

            digitalWrite(10, HIGH);   // Pompe allumée

            delay (10000); 

            digitalWrite(10, LOW);      

          }

       if (temperature>=25)

          {

            digitalWrite(10, HIGH);

            delay(15000);

            digitalWrite(10, LOW);

          }

       else 

       {

            digitalWrite(10, LOW);    

       }

     }

else 

{

  digitalWrite(10, LOW);

}

}




Commentaires

Draft