Auteur Zoé Tran-Van | Dernière modification 9/12/2019 par Clementflipo
Arduino, plante, arrosage Arrosage_automatique_Plante.PNG fr none Creation 0
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.
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)
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).
Brancher directement le capteur de luminosité avec une entrée analogique directe de la Base Shield A0.
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]
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.
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
Draft
Vous avez entré un nom de page invalide, avec un ou plusieurs caractères suivants :
< > @ ~ : * € £ ` + = / \ | [ ] { } ; ? #