Arrosage automatique : Différence entre versions

Ligne 1 : Ligne 1 :
 
{{ {{tntn|Tuto Details}}
 
{{ {{tntn|Tuto Details}}
|SourceLanguage=none
 
|Language=fr
 
|IsTranslation=0
 
 
|Main_Picture=Arrosage_automatique_Plante.PNG
 
|Main_Picture=Arrosage_automatique_Plante.PNG
 
|Licences=Attribution (CC BY)
 
|Licences=Attribution (CC BY)
Ligne 14 : Ligne 11 :
 
|Currency=EUR (€)
 
|Currency=EUR (€)
 
|Tags=Arduino, plante, arrosage
 
|Tags=Arduino, plante, arrosage
 +
|SourceLanguage=none
 +
|Language=fr
 +
|IsTranslation=0
 
}}
 
}}
 
{{ {{tntn|Introduction}}
 
{{ {{tntn|Introduction}}
Ligne 96 : Ligne 96 :
 
<nowiki>#</nowiki>define LIGHT_SENSOR A0
 
<nowiki>#</nowiki>define LIGHT_SENSOR A0
  
int sensorPin = A5; // Déclaration de la broche d'entrée de thermomètre
+
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 Thermistor(int RawADC) //Calcul température du capteur correspondant
Ligne 114 : Ligne 114 :
 
}
 
}
  
int PinNumeriqueHumidite=2;
+
int PinNumeriqueHumidite=2;    // Broche Numérique mesurant l'humidité 
  
 
int humidite;
 
int humidite;
Ligne 122 : Ligne 122 :
 
{
 
{
  
  Serial.begin (9600);
+
  Serial.begin (9600);                //Connexion série à 9600 baud
  
  pinMode(10, OUTPUT);
+
  pinMode(10, OUTPUT);         //Pin 10 en entrée numérique de la pompe
  
  pinMode(PinNumeriqueHumidite, INPUT);
+
  pinMode(PinNumeriqueHumidite, INPUT);       //Pin 3 en entrée numérique du capteur humidité
  
 
}
 
}
Ligne 134 : Ligne 134 :
 
{   
 
{   
  
  int readVal = analogRead(sensorPin);
+
  int readVal = analogRead(sensorPin);                  //Lecture valeur analogique de la température
  
 
  double temperature =  Thermistor(readVal);
 
  double temperature =  Thermistor(readVal);
  
  int luminosite = analogRead(LIGHT_SENSOR);
+
  int luminosite = analogRead(LIGHT_SENSOR);  //Lecture valeur numérique de la luminosité
  
  Serial.println("Température = ");
+
  Serial.println("Température = ");                            //Affichage valeur température
  
 
  Serial.print(temperature);
 
  Serial.print(temperature);
Ligne 148 : Ligne 148 :
 
  delay(500);  
 
  delay(500);  
  
  humidite = digitalRead(PinNumeriqueHumidite);
+
  humidite = digitalRead(PinNumeriqueHumidite);  //Affichage valeur humidité 
  
 
  Serial.println("Humidité = ");
 
  Serial.println("Humidité = ");
Ligne 156 : Ligne 156 :
 
  delay(500);  
 
  delay(500);  
  
  Serial.println("Luminosité = ");
+
  Serial.println("Luminosité = ");                               //Affichage valeur luminosité
  
 
  Serial.println(luminosite);
 
  Serial.println(luminosite);
Ligne 162 : Ligne 162 :
 
  delay(500);
 
  delay(500);
  
  if (humidite==1) 
+
  if (humidite==1)                                                          //Condition pour sol sec
  
 
     {
 
     {
  
       if ((temperature>2) && (temperature<=10))
+
       if ((temperature>2) && (temperature<=10))          //Condition arrosage pour 2°C<T<10°C 
  
 
          {
 
          {
  
            if (luminosite>100)
+
            if (luminosite>100)                                           //Condition pour luminosité>100
  
 
               {
 
               {
Ligne 192 : Ligne 192 :
 
          }              
 
          }              
  
       if ((temperature>10) && (temperature<25))
+
       if ((temperature>10) && (temperature<25))         //Condition arrosage pour 10°C<T<25°C 
  
 
          {
 
          {
Ligne 204 : Ligne 204 :
 
          }
 
          }
  
       if (temperature>=25)
+
       if (temperature>=25)                                            //Condition arrosage pour T>25°C
 
 
          {
 
 
 
            digitalWrite(10, HIGH);
 
 
 
            delay(15000);
 
 
 
            digitalWrite(10, LOW);
 
 
 
          }
 
 
 
       else 
 
 
 
       {
 
 
 
            digitalWrite(10, LOW);    
 
 
 
       }
 
 
 
     }
 
 
 
else 
 
 
 
{
 
 
 
  digitalWrite(10, LOW);
 
 
 
}
 
 
 
}
 
 
|Step_Picture_00=Arrosage_automatique_Capture.PNG
 
|Step_Picture_00=Arrosage_automatique_Capture.PNG
 
}}
 
}}

Version du 2 janvier 2019 à 16:23

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;    // Broche Numérique mesurant l'humidité 

int humidite;

void setup() 

{

  Serial.begin (9600);                //Connexion série à 9600 baud

  pinMode(10, OUTPUT);         //Pin 10 en entrée numérique de la pompe

  pinMode(PinNumeriqueHumidite, INPUT);       //Pin 3 en entrée numérique du capteur humidité

}

void loop() 

{   

  int readVal = analogRead(sensorPin);                  //Lecture valeur analogique de la température

  double temperature =  Thermistor(readVal);

  int luminosite = analogRead(LIGHT_SENSOR);  //Lecture valeur numérique de la luminosité

  Serial.println("Température = ");                            //Affichage valeur température

  Serial.print(temperature);

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

  delay(500);  

  humidite = digitalRead(PinNumeriqueHumidite);  //Affichage valeur humidité 

  Serial.println("Humidité = ");

  Serial.println(humidite);

  delay(500);  

  Serial.println("Luminosité = ");                               //Affichage valeur luminosité

  Serial.println(luminosite);

  delay(500);

  if (humidite==1)                                                          //Condition pour sol sec

     {

       if ((temperature>2) && (temperature<=10))          //Condition arrosage pour 2°C<T<10°C 

          {

            if (luminosite>100)                                           //Condition pour luminosité>100

               {

                digitalWrite(10, HIGH);

                delay(500);

                digitalWrite(10, LOW);

               }

            else 

            {

              digitalWrite(10, LOW);

            }

          }              

       if ((temperature>10) && (temperature<25))         //Condition arrosage pour 10°C<T<25°C 

          {

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

            delay (10000); 

            digitalWrite(10, LOW);      

          }

       if (temperature>=25)                                            //Condition arrosage pour T>25°C




Commentaires

Draft