Nous entrons dans la deuxième partie du livre. Après avoir compris les mécanismes scientifiques du jardin, nous allons construire des outils pour les mesurer et les automatiser. Les microcontrôleurs Arduino et ESP32 sont les plateformes idéales pour cette tâche.
Un jardin produit en continu des données pertinentes : température, humidité du sol, pH, rayonnement. L’œil humain ne peut surveiller ces variables en permanence. Un microcontrôleur, lui, peut :
| Caractéristique | Valeur |
|---|---|
| Processeur | ATmega328P, 8 bits, 16 MHz |
| Mémoire Flash | 32 KB |
| RAM | 2 KB |
| Tension de fonctionnement | 5 V |
| Broches analogiques (ADC) | 6 × 10 bits |
| Courant max par broche | 40 mA |
| WiFi/Bluetooth | Non (natif) |
| Consommation active | ≈ 15–50 mA |
| Prix | ≈ 3–5 € |
Idéal pour : projets simples, environnements industriels (robustesse 5 V), apprentissage.
| Caractéristique | Valeur |
|---|---|
| Processeur | Xtensa LX6, 32 bits, 240 MHz (dual-core) |
| Mémoire Flash | 4–16 MB |
| RAM | 520 KB |
| Tension de fonctionnement | 3,3 V |
| Broches analogiques (ADC) | 18 × 12 bits |
| Courant max par broche | 40 mA |
| WiFi | 802.11 b/g/n (2,4 GHz) |
| Bluetooth | BLE 4.2 + Classic |
| Consommation active | ≈ 80–240 mA |
| Consommation deep sleep | ≈ 10 µA |
| Prix | ≈ 3–8 € |
Idéal pour : projets connectés, traitement de données, deep sleep pour batteries.
Alternative moins puissante à l’ESP32, sans Bluetooth et avec un seul cœur CPU. Très bon rapport qualité/prix pour des stations météo WiFi simples.
Les capteurs communiquent avec le microcontrôleur via différents protocoles :
# ESP32 MicroPython - Scanner I2C
from machine import I2C, Pin
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=400000)
devices = i2c.scan()
print("Appareils I2C trouvés:", [hex(d) for d in devices])
Pour les capteurs résistifs simples (humidité sol capacitive ou résistive, LDR) :
V_out = V_cc × R_capteur / (R_capteur + R_reference)
La résolution d’un ADC 12 bits (ESP32) sur 3,3 V est :
Résolution = 3,3 V / 2¹² = 3,3 / 4096 ≈ 0,8 mV par division
Attention : l’ADC de l’ESP32 est non-linéaire, surtout aux extrémités (0–0,1 V et 3,1–3,3 V). Utiliser un ADS1115 externe pour les mesures précises.
| Source | Tension | Avantage | Inconvénient |
|---|---|---|---|
| USB 5 V | 5 V | Simple, disponible | Câble nécessaire |
| Batterie Li-Ion 18650 | 3,7 V | Autonome | Gestion charge requise |
| Pack solaire | 5–6 V | Renouvelable | Irradiation variable |
| Pile AA (2×) | 3 V | Petite taille | Faible capacité |
Autonomie (h) = Capacité batterie (mAh) / Consommation moyenne (mA)
Optimisation par deep sleep :
Si l’ESP32 mesure pendant 1 s toutes les 5 minutes :
Consommation moyenne = (1s × 80 mA + 299s × 0,01 mA) / 300s
= (80 + 2,99) / 300
≈ 0,277 mA
Avec une batterie 18650 (3 000 mAh) :
Autonomie = 3000 / 0,277 ≈ 10 800 h ≈ 450 jours !
Comparé à 37,5 h sans deep sleep (3000 / 80 mA).
// Exemple : lire un capteur analogique toutes les 10 s
const int PIN_CAPTEUR = A0;
void setup() {
Serial.begin(115200);
}
void loop() {
int valeur = analogRead(PIN_CAPTEUR);
float tension = valeur * 5.0 / 1023.0;
Serial.print("Tension: ");
Serial.println(tension);
delay(10000); // 10 secondes
}
Avantages : bibliothèques très nombreuses, documentation abondante, compilation efficace.
# Exemple équivalent en MicroPython
from machine import ADC, Pin
import time
adc = ADC(Pin(34))
adc.atten(ADC.ATTN_11DB) # Plage 0-3,3 V
while True:
valeur = adc.read()
tension = valeur * 3.3 / 4095
print(f"Tension: {tension:.3f} V")
time.sleep(10)
Avantages : syntaxe Python familière, REPL interactif, idéal pour prototypage.
Dans ce livre, nous utilisons MicroPython pour les exemples ESP32 et Python standard pour les scripts d’analyse de données.
[Capteurs] [ESP32] [Serveur/Cloud]
DS18B20 ──1Wire──┐
SHT31 ──I2C───┤ ┌── InfluxDB
Capteur H. ─ADC─┤── WiFi MQTT─┤── Grafana
BH1750 ──I2C───┤ └── Alertes
pH (ADC)────────┘
[Actionneurs]
Pompe ──── Relais ──── ESP32
Vanne ──── MOSFET ──── ESP32
Les chapitres suivants décrivent chaque bloc de cette architecture.
| ← Précédent : Compostage | Suivant : Capteurs → |