Projet arrosage automatique de plantes

Salut à tous,

Je débarque sur le forum après avoir commencé à utiliser une Arduino Uno. J'ai pour objectif de pouvoir arroser mes plantes automatiquement lorsque le sol est sec. La première étape est de lire les données de mon capteur d'humidité qui est de celui là : http://www.miniinthebox.com/fr/capteur-d-humidite-du-sol-compatible-arduino-immersion-gold_p508926.html?pos=ultimately_buy_1

J'ai fais pas mal de recherche sur le net mais je n'arrive pas à l'utiliser (pour l'instant je veux juste pouvoir lire les données dans le moniteur arduino avant d'aller plus loin.

Quelqu'un peut m'aider ?

Niveau branchement, j'ai connecté le petit module au capteur puis trois pins de ce module à mon arduino GND, VCC et D0 au pin5 du arduino.

Merci d'avance à tous :slight_smile:

Regarde ici

Salut et merci de ta réponse,

J'avais déjà vu ce tuto et il me renvoi comme message d'erreur "temps d'attente dépassé".

C'est là dessus que je bloque :frowning:

Salut,

Tu as bien connecté D0 sur une entrée analogique de l'Arduino ? A priori tuto de Snootlab devrait correspondre.

pierfrene:
Regarde ici
[Tuto] Capteur température & humidité DHT11 | Skyduino - Le DIY à la française

Je ne vois pas de DHT11 sur le capteur qu'utilise shino0026 :roll_eyes:

Comme le code que tu m'a donné parle d'un pin analogique, j'ai utilisé le A0 de mon capteur au lieu du D0.

Je viens de faire des tests, les valeurs renvoyés sont très bizarres elles varient enormement alors que l'humidité ne change pas. Est ce que j'ai mal fait quelquechose ? Il y a un etrange bloc bleu sur une des le module qui se trouve entre le capteur et l'arduino, il y a une vis au milieu en jouant dessus les valeurs changent...

shino0026:
elles varient enormement

Genre?

C'est sûr que la valeur ne sera jamais très stable, la valeur analogique étant comprise entre 0 et 1023, si par exemple ça "saute" de 400 à 500 je pense que c'est suffisant pour avoir une idée de l'humidité. Reste plus qu'a écrire un code qui fasse la moyenne de plusieurs mesures.

Bonjour,
fais nous un schéma de ton câblage et donne le code que tu utilise, on pourras plus t'aider.

C'est un capteur de type résistif : la résistance électrique du sol sec est plus élevée que celle du sol humide.

  • Branché directement sur l'Arduino, tu mesures une résistance, avec une entrée analogique.
  • Branché via le bloc bleu, qui comporte un potentiomètre de réglage, tu peux ajuster le seuil de déclenchement de l'arrosage en mode numérique (on / off) ou rester en mode analogique.

Si tu bouges le capteur dans la terre, la mesure de R va fluctuer (selon le contact des électrodes avec le sol), il faut le laisser bien fixe.

Salut,

Voici des photos de mon montage

Le code utilisé c'est ça :

int sensorPin = 2;    // sélection de la pin de mesure
int sensorValue = 0;    // initialisation de la valeur
 
void setup() {
   Serial.begin(115200);  
}
 
void loop() {
 
  sensorValue = analogRead(sensorPin);    // lecture directe de la valeur
  delay(1000);    // patienter 1 s
  Serial.print("sensor = " );    // impression du titre
  Serial.println(sensorValue);    // impression de la valeur mesurée
}

Les valeurs retournées bougent pas mal, la j'ai mis le capteur dans le pot après avoir arrosé et voici un peu ce que ça donne :

sensor = 272
sensor = 287
sensor = 296
sensor = 296
sensor = 291
sensor = 282
sensor = 273
sensor = 270
sensor = 262
sensor = 261
sensor = 262
sensor = 264
sensor = 267
sensor = 280
sensor = 294
sensor = 296
sensor = 293
sensor = 286
sensor = 277
sensor = 271
sensor = 266
sensor = 261
sensor = 261
sensor = 263
sensor = 264
sensor = 267
sensor = 279
sensor = 293
sensor = 297
sensor = 297
sensor = 290
sensor = 280
sensor = 273
sensor = 271
sensor = 263
sensor = 262
sensor = 263
sensor = 264
sensor = 265
sensor = 276
sensor = 291
sensor = 297
sensor = 296
sensor = 289
sensor = 279
sensor = 272
sensor = 267
sensor = 262
sensor = 262
sensor = 263
sensor = 264
sensor = 271
sensor = 285
sensor = 297
sensor = 298
sensor = 293
sensor = 284
sensor = 275
sensor = 272
sensor = 265
sensor = 263
sensor = 265
sensor = 266
sensor = 266
sensor = 276
sensor = 290
sensor = 298
sensor = 298
sensor = 293
sensor = 284
sensor = 276
sensor = 272
sensor = 265
sensor = 262
sensor = 263
sensor = 264
sensor = 265
sensor = 274
sensor = 289
sensor = 298
sensor = 298
sensor = 292
sensor = 283
sensor = 274
sensor = 272
sensor = 263
sensor = 263
sensor = 264
sensor = 266
sensor = 268
sensor = 282
sensor = 296
sensor = 298
sensor = 295

En testant de mettre le capteur au sec ou plongé dans un verre d'eau, les changements dans les données ne sont pas flagrant et surtout très fluctants.

Alors, il faut que tu débranche ton fil vert qui va sur la pin 2 et que tu le branche sur A0.
Dans le code tu remplace "int sensorPin = 2;" par "int sensorPin = A0;
Tu test et tu nous dis si ça va mieux.

Explications: ton capteur est de type analogique (ou peut être les deux comme a dit Christian_R) donc en fonction du taux d’humidité qu'il mesure, il délivre une tension compris entre 0 et 5 Vcc sur le fil vert. Pour lire une tension entre 0 et 5 Vcc avec une carte Uno, il faut te servir d'une des entrées analogique de A0 a A5.
Entrée qui va te donne une valeur entre 0 et 1023, il faudra que tu applique un traitement dans ton code pour avoir le taux d’humidité entre 0 et 100 %.
Je te met sur la voie => regarde la fonction " map() " =http://arduino.cc/en/Reference/Map

Un conseil regarde et pratique des tutos :

Si comme Christian_R te la décrit ton capteur a une sortie analogique et une sortie digitale. Il faut que tu arrive à distinguer les deux, tu as marqué quoi sur tes 4 pin en bas ?
5V, Gnd et quoi ?

shino0026:
En testant de mettre le capteur au sec ou plongé dans un verre d'eau, les changements dans les données ne sont pas flagrant et surtout très fluctants.

Et si tu rajoute du sel dans l'eau?

cutprod:
Si comme Christian_R te la décrit ton capteur a une sortie analogique et une sortie digitale. Il faut que tu arrive à distinguer les deux, tu as marqué quoi sur tes 4 pin en bas ?
5V, Gnd et quoi ?

Ca marche avec ton système en fait j'ai une pin analogique A0 et une digitale D0. Prochaine étape faire lire au arduino les valeurs et qu'il déclanche tout seul une LED quand la plante manque d'eau :slight_smile:

Ca avance, merci beaucoup de votre aide :slight_smile:

Ca avance pas mal :slight_smile:

J'ai réussi à faire allumer la Led lorsque la plante manque d'eau, voici mon code si ça peut dépanner quelqu'un :

int sensorPin = A0;    // sélection de la pin de mesure
int sensorValue = 0;    // initialisation de la valeur
int ledPin = 13;
 
void setup() {
   Serial.begin(115200);  
   pinMode(ledPin, OUTPUT);
}
 
void loop() {
 
  sensorValue = analogRead(sensorPin);    // lecture directe de la valeur
  delay(1000);    // patienter 1 s
  Serial.print("sensor = " );    // impression du titre
  Serial.println(sensorValue);    // impression de la valeur mesurée

  int val = analogRead(sensorPin);
  
  Serial.println(analogRead(sensorPin)); //pour mettre dans le terminal
  
  if(val < 900) digitalWrite(ledPin,LOW);
  if(val > 900) digitalWrite(ledPin,HIGH);
  delay(500);
}

Maintenant la prochaine étape est de déclancher l'arrosage. J'ai récupéré une pompe d'une ancienne fontaine, je ne sais pas trop comment la déclancher, elle est branchée au 220V.
Après mes recherches j'ai apparement besoin d'un relay, comment cela fonctionne-t-il ? Il faut que je dénude le cable de la pompe et que je mette le relay au milieu ? Comment le déclancher avec le Arduino ?

Merci encore pour votre aide. Je ferai un tuto total une fois que j'aurai réussi :slight_smile:

Le relais sera déclenché par une sortie digitale de l'Arduino. Il sert d'interrupteur sur le fil d'alim de la pompe.

La pompe comporte un moteur et fonctionne en 220V (attention, haute tension) donc monter un optocoupleur pour l'isolation électrique de l'utilisateur, et une diode de roue libre pour protéger le relais des surtensions.
Ou utiliser un petit module de relais tout monté c'est plus simple.

Prévoir aussi une minuterie dans le programme qui coupe l'arrosage au bout d'un certain temps (sécurité inondation) en l'absence de réponse du capteur.

Salut et merci de ta réponse.

Est ce qu'un module relay de ce type fait l'affaire ? http://m.miniinthebox.com/arduino-5v-relay-module-blue-black_p655803.html

Pour piloter l'arrosage je suis passé par une électrovanne de type machine a laver... Beaucoup moins chère et adaptation de tuyauterie facile sur du domestique.
Regarde là , tu en a en 220 V ATTENTION et une en 12Vcc (je pencherais pour celle ci) =
http://www.gotronic.fr/cat-electrovannes-1242.htm
Pour piloter ta pompe ou ton électrovanne prend un module relais comme celui ci =
http://www.gotronic.fr/art-module-relais-dfr0017-19260.htm

Lol 8€ le relais... sur ebay on en trouve à même pas 2€.

Attention au relais de puissance pas chère... soudure qui flambent, bobine qui crament, pouvoirs de coupure limité...
La qualité pour du matériel électrique c'est important, c'est comme si tu faisais le tableau électrique de ta maison avec que des disjoncteurs "made in china" (et j'ai rien contre les chinois), tu dormirais tranquille ?

Salut à tous,

J'avance un peu sur mon projet, je viens d'acheter ce relai : http://www.miniinthebox.com/arduino-5v-relay-module-blue-black_p655803.html

Quel sera le branchement à effectuer ? Je dois dénuder mon fil et le faire passer ou sur le relai ? Je n'arrive pas à trouver un tuto simple qui explique comment mettre en place un relai :frowning: