Arrosage_automatique
Arrosage automatique â ESP-12F (NodeMCU)
Composants : Sonde dâhumiditĂ© sol · Relai PCB · Pompe 9V · Alimentation 9V
Matériel nécessaire
| Composant | Détails |
|---|---|
| NodeMCU ESP-12F | MicrocontrĂŽleur WiFi (board avec diviseur de tension sur AD0) |
| Sonde humiditĂ© sol | Capteur rĂ©sistif analogique â 3 ou 4 broches |
| Module relai PCB | Actif HIGH, bobine 5V |
| Pompe immergée | 9V selon modÚle |
| Alimentation 9V | Adaptateur secteur ou batterie |
| Fils Dupont | MĂąle/femelle |
1. CĂąblage de la sonde dâhumiditĂ©
La sonde retourne une tension inversée : sol sec = tension haute, sol humide = tension basse.
Points importants :
- La board NodeMCU a un diviseur de tension intĂ©grĂ© sur AD0 â pas de composants supplĂ©mentaires, tension max 3.3V directement.
- Ne jamais alimenter la sonde en 5V sur AD0 â risque de griller le pin ADC.
- La broche
DO(sortie numĂ©rique) nâest pas utilisĂ©e dans ce projet.
2. CĂąblage du module relai (3 GPIO en parallĂšle)
Chaque GPIO de lâESP8266 fournit environ 12mA. En reliant D5, D6 et D7 ensemble on obtient ~36mA â suffisant pour dĂ©clencher le relai sans transistor.
3. Circuit complet â alimentation 9V, relai et pompe
Le +9V alimente à la fois le VIN du NodeMCU et le COM du relai. La pompe est alimentée via le contact NO du relai. Le GND est commun à tout le circuit.
Utiliser le contact NO (Normally Open) du relai â circuit ouvert au repos, fermĂ© quand le relai est activĂ©.
4. Code Arduino complet
// =====================================
// Arrosage automatique ESP-12F
// Sonde : AD0 (diviseur intégré, 0-3.3V)
// Relai : D5+D6+D7 en parallĂšle, actif HIGH
// =====================================
const int PIN_RELAI_1 = 14; // D5
const int PIN_RELAI_2 = 12; // D6
const int PIN_RELAI_3 = 13; // D7
const float SEUIL_POMPE = 30.0; // % â pompe ON sous ce seuil
const int DELAI_MS = 500;
void setRelai(bool etat) {
digitalWrite(PIN_RELAI_1, etat ? HIGH : LOW);
digitalWrite(PIN_RELAI_2, etat ? HIGH : LOW);
digitalWrite(PIN_RELAI_3, etat ? HIGH : LOW);
}
void setup() {
Serial.begin(115200);
pinMode(PIN_RELAI_1, OUTPUT);
pinMode(PIN_RELAI_2, OUTPUT);
pinMode(PIN_RELAI_3, OUTPUT);
setRelai(false); // Pompe éteinte au démarrage
Serial.println("\n=== Arrosage automatique ===");
Serial.print("Seuil : ");
Serial.print(SEUIL_POMPE);
Serial.println("%");
}
void loop() {
int val = analogRead(A0);
float tension = val * (3.3 / 1023.0);
float niveau = (1.0 - (val / 1023.0)) * 100.0; // 0% = 3.3V (sec), 100% = 0V (humide)
bool pompe = (niveau < SEUIL_POMPE);
setRelai(pompe);
Serial.print("Brut: "); Serial.print(val);
Serial.print(" | Tension: "); Serial.print(tension, 2);
Serial.print("V | Niveau: "); Serial.print(niveau, 1);
Serial.print("% | Pompe: ");
Serial.println(pompe ? "ON" : "OFF");
delay(DELAI_MS);
}
Configuration IDE Arduino
| ParamĂštre | Valeur |
|---|---|
| Type de carte | Generic ESP8266 Module ou NodeMCU 1.0 |
| Fréquence CPU | 80 MHz |
| Flash Size | 4MB |
| Vitesse upload | 115200 |
| Moniteur série | 115200 bauds |
5. Calibration
Procédure
- Planter la sonde dans le sol sec â noter la valeur
Niveaudans le moniteur sĂ©rie (typiquement 0-30%) - Arroser lĂ©gĂšrement â noter la nouvelle valeur (typiquement 40-70%)
- Choisir
SEUIL_POMPEentre ces deux valeurs selon la plante - Flasher à nouveau le code avec le seuil ajusté
Valeurs de référence
| Ătat du sol | Niveau typique | Tension AD0 |
|---|---|---|
| Sol sec (plante Ă arroser) | 0 â 30% | proche de 3.3V |
| Sol lĂ©gĂšrement humide | 40 â 60% | ~1.5V |
| Sol bien humide | 70 â 90% | proche de 0V |
Seuil recommandĂ© pour plantes dâintĂ©rieur : 40%
6. Résumé des connexions
| Fil | De | Vers |
|---|---|---|
| Rouge | 3.3V NodeMCU | VCC sonde |
| Noir | GND NodeMCU | GND sonde |
| Jaune | AO sonde | AD0 NodeMCU |
| Orange | D5 + D6 + D7 NodeMCU (reliés) | IN relai |
| Rouge | 5V (VIN) NodeMCU | VCC relai |
| Noir | GND NodeMCU | GND relai |
| Rouge (puissance) | Alim 9V (+) | VIN NodeMCU + COM relai |
| Noir (puissance) | Alim 9V (â) | GND NodeMCU + Pompe (â) |
| Vert | NO relai | Pompe (+) |
Avertissements
- Ne jamais alimenter la sonde en 5V sur AD0
- Utiliser le contact NO (Normally Open) du relai, jamais NC
- Prévoir une diode de roue libre 1N4007 en parallÚle sur la pompe pour protéger le relai (cathode cÎté + alim)
- Pour un usage long terme, prĂ©fĂ©rer une sonde capacitive (les sondes rĂ©sistives sâoxydent)
- Ne pas laisser la pompe tourner Ă sec