Une sonde n’est qu’un circuit qui laisse passer du courant selon le capteur utilisé (son, température, champ magnétique, etc).
Pour avoir une idée de l’humidité du sol (pot de fleur par exemple), on peut utiliser tout simplement la propriété électrolytique d’une solution (ici eau + terre). Si le sol est sec, le courant passera moins bien que si le sol est humide.
PFEQ
Mots-clés : électrolyte, circuit, mesure DDP, isolant, résistance, oxydation, univers vivant (besoins d’une plante).
Voici un montage pour mesurer cette conductibilité :
À noter que nous utilisons ici 2 clous (galvaniser de préférence pour éviter une oxydation trop rapide), séparer d’environ 2 cm par un matériau isolant, sur lesquels nous avons ajouter un isolant afin d’aller prendre la mesure à une certaine profondeur dans la terre (l’humidité du sol varie en fonction de la profondeur). Voici une photo de notre sonde (au lieu du ruban, utiliser du silicone comme isolant pour une sonde plus durable) :
Le code pour lire la valeur prise à la broche A0 et l’envoyer dans le port série est le suivant (version xml) :
void setup() { Serial.begin(9600); pinMode(A0, INPUT); } void loop() { Serial.print("Valeur humidité : "); Serial.println(analogRead(A0)); }
Le traitement de cette donnée (que nous aurons à «calibrer» pour trouver les valeurs «trop sec» et «adéquat») peut se faire de différente façon, mais dans l’exemple ci-dessous nous allumons une DEL de couleur différente selon le taux d’humidité du sol. On peut facilement modifier le tout pour faire démarrer une pompe à une valeur précise (voir ce défi).
Montage
Schéma électrique
Programmation
Fichier XML (à importer dans Blockly@rduino).
Le code Arduino :
{ Serial.begin(9600); pinMode(A0, INPUT); pinMode(7, OUTPUT); pinMode(6, OUTPUT); pinMode(5, OUTPUT); } void loop() { Serial.print("Humidité : "); Serial.println(analogRead(A0)); delay(2000); if (analogRead(A0) < 500) { digitalWrite(7, HIGH); digitalWrite(6, LOW); digitalWrite(5, LOW); } else if (analogRead(A0) >= 500 && analogRead(A0) <= 700) { digitalWrite(7, LOW); digitalWrite(6, HIGH); digitalWrite(5, LOW); } else if (analogRead(A0) > 700) { digitalWrite(7, LOW); digitalWrite(6, LOW); digitalWrite(5, HIGH); } }
Photos du montage