Contrôler l’éclairage et l’arrosage d’une plante d’intérieur avec un arduino

Contrôler l’éclairage et l’arrosage d’une plante d’intérieur avec un arduino

Vous avez du mal à vous rappeler d’arroser votre plante d’intérieur ? Vous voulez partir en vacances mais craignez le pire pour votre plante ? Avec un peu de préparation et un Arduino (n’importe lequel, j’ai utilisé un Arduino Mega 2560, surdimensionné pour ce projet, mais pour du développement c’est assez pratique), vous pouvez faire un système qui va s’assurer que votre plante soit arrosée correctement et vive en bonne santé grâce à un éclairage LED favorisant sa croissance (avec UV), même si vos volets sont fermés en journée.

Avant de commencer ce projet, je m’appelle Michaël et je suis un passionné d’électronique, d’IoT et de programmation (je suis développeur). Je rempli régulièrement mon garage de composants électroniques, d’arduinos et de Raspberry Pi (j’ai monté un cluster de 8 Rpi pour tester les outils du cloud comme Docker, Docker Swarm, Kubernetes, etc…), cela exaspère ma femme, mais ravi mon fils que j’aide dans ses projets de Terminal S option Science de l’Ingénieur. J’ai participé à l’appel à candidature pour devenir ambassadeur Conrad et j’ai eu la chance d’être sélectionné, ayant été doté de plusieurs composants, j’ai eu l’idée de ce projet et je me fait un plaisir de rédiger ce tutoriel.

  1. Nous devons gérer 2 problématiques journalières pour que notre plante grandisse et soit en bonne santé dans tous les environnements, le maintien de l'humidité de sa terre et son apport en lumière du jour.

    Pour faciliter ce montage pour tous les débutants, nous allons utiliser un programmateur horaire pour prise électrique qui va allumer l'arduino et l'alimentation 12v (du bandeau de leds et du moteur) du matin 8h au soir 8h (vous pouvez affiner en fonction des heures d'hiver/d'été, mais l'objectif est de permettre un éclairage et un arrosage au moins dans cette plage horaire).
  2. Nous allons commencer par la partie la plus simple, celle de la gestion de l'éclairage de la plante.

    Pour ce faire, nous allons prendre en compte la valeur du capteur de lumière pour allumer ou éteindre l'éclairage LED pour plantes. L'éclairage 12V se fait au travers d'un relais qui va être piloté par l'arduino.


    // Set sensor light
    int sensorLightPin = A0; // select the input pin for LDR
    int sensorLightValue = 0; // variable to store the value coming from the sensor
    int thresholdLightValue = 700; // check your threshold and modify it
    int relayLightPin = 8;


    void setup() {

    Serial.begin(9600); //sets serial port for communication

    // pin connected to the Light relay
    pinMode(relayLightPin, OUTPUT);
    // set relayLightPin Low so that light can turn off
    digitalWrite(relayLightPin, LOW);

    }

    void loop() {
    // read the value from the sensor Light
    sensorLightValue = analogRead(sensorLightPin);
    Serial.println(sensorLightValue ); //prints the values coming from the sensor on the screen

    //setting a threshold value
    if (sensorLightValue < thresholdLightValue) {
    digitalWrite(relayLightPin,HIGH); //turn relay ON
    } else {
    digitalWrite(relayLightPin,LOW); //turn relay OFF
    }

    delay(500);
    }


    Vous pouvez changer le seuil d'allumage de l'éclairage en changeant le nombre de la variable "thresholdLightValue".
    La valeur du capteur de lumière (Light Dependent Resistor - LDR) varie entre 0 et 1023, 0 étant le noir absolu.
  3. Maintenant la partie un peu plus compliquée, car nous allons gérer la vitesse du moteur de la pompe à eau à l'aide d'un circuit intégré double pont en H (il peut gérer 2 moteurs). Il permet ainsi de contrôler un courant de 1A sous une tension de 4.5V à 36V (nous avons besoin de 12v) pour alimenter les bobines des moteurs pas à pas, des moteurs à courant continu, des relais, des bobines...

    Vous pouvez couper en 2 votre durite, une partie ira de la pompe dans la bouteille remplie d'eau (faites 2 trous dans le bouchon, 1 pour faire passer la durite et 1 plus petit pour faire passer l'air), l'autre partie permettra d'arroser la plante (vous pouvez boucher l'extrémité et faire de petits trous pour simuler du goutte à goutte).



    // Set sensor Moisture
    int sensorMoisturePin = A1; // select the input pin for sensor Moisture
    int sensorMoistureValue = 0; // variable to store the value coming from the sensor
    int thresholdMoistureValue = 150; // check your threshold and modify it

    // Set Motor with SN754410
    int enableMotorPin = 4; // Enable pin
    int valueMotorSpeed = 100; // Value 0-250 speed Motor
    int motorPinFwd = 5; // Motor pin Forward
    int motorPinRev = 6; // Motor pin Reverse

    void setup() {

    Serial.begin(9600); //sets serial port for communication
    // pin connected to the SN754410
    pinMode(enableMotorPin, OUTPUT);
    pinMode(motorPinFwd, OUTPUT);
    pinMode(motorPinRev, OUTPUT);
    // Motor will turn on one direction
    digitalWrite(motorPinFwd, LOW);
    digitalWrite(motorPinRev, HIGH);
    // set enablePin high so that motor can turn off
    analogWrite(enableMotorPin, 0);

    }

    void loop() {

    // read the value from the sensor Moisture
    sensorMoistureValue = analogRead(sensorMoisturePin);
    Serial.println(sensorMoistureValue); //prints the values coming from the sensor on the screen

    if (sensorMoistureValue <= thresholdMoistureValue){
    analogWrite(enableMotorPin, valueMotorSpeed);
    } else {
    analogWrite(enableMotorPin, 0);
    }

    delay(500);
    }



    Pareil que pour l'éclairage, vous pouvez changer le seuil du capteur de moisissure "thresholdMoistureValue" pour un arrosage plus intense, et régler la vitesse de la pompe "valueMotorSpeed", valeur entre 0 et 250. Il faut quand même que le moteur puisse démarrer, le mien commence à démarrer vers 210.
  4. Pour me faciliter la mise en place, j'ai tout intégré dans une boîte en plastique (que j'ai recyclé de ma perceuse sans fil achetée dans un magasin de meubles suédois).

    Petite astuce supplémentaire, le moteur, même à basse vitesse va faire gicler l'eau, pour avoir du goutte à goutte, vous pouvez utiliser un goutteur asperseur sur piquet et faire un circuit d'arrosage complet si vous avez plusieurs pots à arroser.
  5. Voilà vous pouvez maintenant fusionner les 2 codes pour réaliser ce projet et partir en vacances tranquillement, votre plante ira bien à votre retour.

    C'est pour moi un projet de base que je vais faire évoluer dans le temps avec :
    - 1 écran LCD pour lire les différentes valeurs des capteurs en temps réel.
    - 1 capteur de niveau d'eau de la bouteille d'eau pour arrêter l'arrosage (si le seuil est atteint alors on ne peut plus arroser).
    - 1 horloge arduino pour programmer les plages horaires d'éclairage.
    - 1 capteur d'humidité et de température de l'air ambiante pour anticiper les besoins en eau.
    - 1 module Bluetooth 4.0 pour avoir des informations sur mon smartphone (niveau d'eau, temps d'éclairage, niveau d'humidité, lancer un arrosage manuel, etc...).
Réalisé par
Posté le
Univers
Candidats Ambassadeurs IoT 2018
Temps de fabrication
1/2 journée
Niveau de difficulté
Débutant
Matériel(s)
1
Carte Arduino
1
Une platine d'expérimentation
1
Alimentation 9V pour l'arduino
1
Alimentation 12V
1
Pompe à carburant 12 V
1
Durite de carburant en silicone transparente
1
Circuit intégré L293D (ou compatible)
1
Détecteur d'humidité de sol
1
Eclairage LED pour plantes à LED (blanc-rouge) 18cm
1
Capteur de lumière
1
Programmateur horaire pour prise électrique
1
Bouteille d'eau
Outils
1
Tournevis plat
1
cutter

Un commentaire

  1. mamath said on mai 28, 2018

    Bonjour,
    Super le projet !

Vous devez être connecté pour laisser un commentaire.