Go Down

Topic: Projet arrosage automatique de plantes (Read 6498 times) previous topic - next topic

shino0026

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 :)


shino0026

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 :(

SesechXP

#3
Aug 10, 2013, 08:50 pm Last Edit: Aug 10, 2013, 08:53 pm by SesechXP Reason: 1
Salut,

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


 Regarde ici
  http://skyduino.wordpress.com/2013/04/27/tuto-capteur-temperature-humidite-dht11/      


Je ne vois pas de DHT11 sur le capteur qu'utilise shino0026 :smiley-roll:

Julien - www.idreammicro.com

shino0026

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

guix

#5
Aug 11, 2013, 01:55 pm Last Edit: Aug 11, 2013, 02:01 pm by guix Reason: 1

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.

cutprod

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

Christian_R

#7
Aug 11, 2013, 02:30 pm Last Edit: Aug 11, 2013, 02:31 pm by Christian_R Reason: 1
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.
Christian

shino0026

Salut,

Voici des photos de mon montage

Le code utilisé c'est ça :
Code: [Select]
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 :
Code: [Select]
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.

cutprod

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 :
http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ARDUINO

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 ?

guix


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?

shino0026


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 :)

Ca avance, merci beaucoup de votre aide :)

shino0026

Ca avance pas mal :)

J'ai réussi à faire allumer la Led lorsque la plante manque d'eau, voici mon code si ça peut dépanner quelqu'un :
Code: [Select]
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 :)

Christian_R

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.
Christian

Go Up