Arroseur automatique

un système simple d'arrosage automatique d'une plante en fonction de l'humidité du sol

ce système utilise les composants suivants :

Avec ça on peut avoir quelque chose qui marche si on l'alimente sur du 12v. Dans mon cas, je ne voulais pas tirer un cable, et je voulais être capable de poser le pot là où je le voulais et j'ai donc utilisé une alimentation par panneau solaire et une batterie au plomb qui trainait par là depuis quelques temps dans le garage. Les composants sont les suivants :

  • une batterie au plomb 12v (ne pas utliser de lipo ou ou autre si on n'est pas sûr de bien maitriser les courants et tension de charge/décharge, surtout qu'en plus c'est stocké à l'extérieur)
  • un controleur de charge solaire (préférer du mppt au pwm, les controleurs pwm sont 10 a 20% moins efficaces) : https://www.amazon.fr/gp/product/B018M88G98/ref=oh_aui_detailpage_o05_s00?ie=UTF8&psc=1
  • un panneau solaire 12v. J'ai testé avec un panneau de 15w et cela chargeait bien…. préférer un monocristallin, il sera plus petit à puissance équivalente qu'un polycristallin. Pour information, la pompe consomme 12v * 1.2A = 14.4W et l'electronique, lorsque tout est en marche tourne à 12v * 230mA = 2.76W sachant que tout n'est pas constamment allumé (plus d'infos plus tard).

pix.gloob.eu_images_thumb_149124400561vrdyuryhl._sl1200_.jpg

Note également sur le capteur d'humidité du sol : c'est du consommable, il s'oxyde et devient de moins en moins conducteur au fil du temps. Pour palier à cela je n'alimente le capteur que quelques millisecondes le temps de faire la mesure. J'ai aussi ajouté de la soudure dessus. on peut aussi entourer chaque branche par du papier d'alu, ou bien carrément utiliser de l'inox (une vielle fourchette par exemple).

cablage

code (pas la derniere version)

#include <LowPower.h>

int ledPin = 13; // LED connected to digital pin 13
int secondledPin = 7; // LED connected to digital pin 13
int inPin = A0;   // pushbutton connected to digital pin 7
int valRaw = 0;   // variable to store the read value
int valReal = 0;   // variable to store the read value

int relayPin = 8;

void setup()
{
  pinMode(ledPin,OUTPUT);
  pinMode(secondledPin,OUTPUT);

  pinMode(relayPin,OUTPUT);
  digitalWrite(relayPin, LOW);
  pinMode(inPin, INPUT);   // sets the digital pin 7 as input

}

void loop()
{
  digitalWrite(ledPin,HIGH);
  digitalWrite(secondledPin,HIGH);
  delay(20);
  digitalWrite(ledPin,LOW);
  digitalWrite(secondledPin,LOW);
  valRaw = analogRead(inPin);   // read the input pin
  valReal = map(valRaw, 1023, 0, 0, 100 );

  if(valReal < 85 ){ //80% d'humidité
    waterthatshite();
  }

    // ATmega328P, ATmega168
/*  LowPower.idle(SLEEP_8S, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF,
                SPI_OFF, USART0_OFF, TWI_OFF);
           */

 LowPower.idle(SLEEP_8S, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF,
                SPI_OFF, USART0_OFF, TWI_OFF);

}

void waterthatshite()
{
  digitalWrite(relayPin, HIGH);
  digitalWrite(secondledPin,HIGH);
  delay(30000); //30 secondes
  digitalWrite(relayPin, LOW);
  digitalWrite(secondledPin,LOW);
}

Cliquez sur une photo pour la voir en plus grand, défilez avec la souris ou le clavier pour passer à la photo suivante

Vous pourriez laisser un commentaire si vous étiez connecté.