Arrosage Automatique

Auteur avatarGaëlle LHERITEAU | Dernière modification 9/12/2019 par Clementflipo

Pas encore d'image

Fabrication et programmation d'un système d'arrosage automatique pour une plante avec Arduino
Difficulté
Facile
Durée
30 minute(s)
Catégories
Électronique
Coût
25 EUR (€)
Licence : Attribution (CC BY)

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 - Programme

Le programme est le suivant :

[code]

#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);

}

}

[/code]

Étape 2 -

Commentaires

Draft