Chapitre 7 — Électronique au Jardin : Arduino et ESP32

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.

7.1 Pourquoi des microcontrôleurs au jardin ?

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 :

7.2 Arduino vs ESP32 : quel choisir ?

Arduino Uno/Nano (Microchip ATmega328P)

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.

ESP32 (Espressif Systems)

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.

ESP8266 (NodeMCU)

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.

7.3 Protocoles de communication

Les capteurs communiquent avec le microcontrôleur via différents protocoles :

I²C (Inter-Integrated Circuit)

# 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])

SPI (Serial Peripheral Interface)

UART (Universal Asynchronous Receiver-Transmitter)

1-Wire

Analogique (ADC)

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.

7.4 Alimentation et consommation énergétique

Sources d’alimentation

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é

Calcul d’autonomie

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

7.5 Programmation : Arduino IDE vs MicroPython

Arduino IDE (C++)

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

MicroPython (Python sur ESP32)

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

7.6 Architecture d’un système de jardin connecté

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

7.7 Précautions en environnement jardin


← Précédent : Compostage Suivant : Capteurs →

← Retour à la Table des Matières