AGROMÉTÉOROLOGIE • AGRICULTURE INTELLIGENTE • EDGE AI

Ingénierie de l'Irrigation et Bilan Hydrique : ESP32-S3 & Waveshare 6CH

Nous remplaçons les programmateurs statiques par une analyse autonome de l'évapotranspiration en périphérie de réseau. Utilisation des instructions vectorielles Xtensa LX7, du modèle FAO-56 et de la météo locale sans recours à un serveur cloud externe.

Les contrôleurs d'arrosage traditionnels activent les vannes selon une horloge fixe, ignorant que les sols conservent l'humidité par temps frais et que la sécheresse accélère fortement la transpiration végétale. La référence agrométéorologique mondiale est le modèle FAO-56 Penman-Monteith, permettant d'évaluer le déficit hydrique de la zone racinaire en temps réel.

Au sein de l'écosystème ProPresta IT, l'algorithme exécuté sur le module Waveshare 6CH (ESP32-S3) calcule le facteur d'arrosage adimensionnel \( K_{\text{irrig}} \), agissant comme multiplicateur direct de la durée nominale des électrovannes :

$$K_{\text{irrig}} = \text{clamp}\left( \frac{\text{ET}_c - P_{\text{eff}}}{\text{ET}_{\text{base}}}, \; 0.0, \; 1.5 \right)$$

Interprétation physique des paramètres :

  • \( \text{ET}_c \) [mm/jour] – Évapotranspiration réelle de la culture ; eau extraite du sol par évaporation directe et transpiration foliaire.
  • \( P_{\text{eff}} \) [mm/jour] – Précipitation efficace ; quantité de pluie pénétrant réellement le profil racinaire.
  • \( \text{ET}_{\text{base}} \) [mm/jour] – Besoin quotidien de référence (défini par défaut à \( 4.0\text{ mm/jour} \)), correspondant au temps de base configuré par l'utilisateur.
  • \( \text{clamp}(x, 0.0, 1.5) \) – Fonction de saturation limitant le coefficient entre 0% et 150% pour prévenir les excès ou valeurs aberrantes.

1. Analyse des composantes : Évaporation et Pluie Efficace

A. Évapotranspiration réelle de la culture (\( \text{ET}_c \))

Le besoin de chaque type de plante s'ajuste par rapport au gazon de référence via le coefficient végétal \( K_c \) :

$$\text{ET}_c = \text{ET}_0 \times K_c$$

Le coefficient \( K_c \) traduit le stade phénologique (ex. pelouse : \( 0.80 \)–\( 0.85 \), arbustes : \( 0.60 \), cultures en fructification : \( 1.05 \)–\( 1.15 \)).

Sur l'ESP32-S3, à partir des données de température \( T \) [°C] et d'humidité relative \( RH \) [%] issues d'Open-Meteo, l'évapotranspiration de référence \( \text{ET}_0 \) est calculée selon l'équation de Romanenko-Turc :

$$\text{ET}_0 = 0.013 \times \left( \frac{T}{T + 15} \right) \times \left( 23.88 \times R_s + 50 \right) \times C_h$$

Le coefficient de correction d'humidité \( C_h \) modélise le déficit de pression de vapeur (VPD). Par air chaud et sec, le dessèchement des sols croît de manière non linéaire :

$$C_h = \begin{cases} 1.0 & \text{pour } RH \ge 50\% \\ 1.0 + \frac{50 - RH}{70} & \text{pour } RH < 50\% \end{cases}$$

B. Modèle de pluie efficace (\( P_{\text{eff}} \)) USDA SCS

Une erreur courante consiste à déduire chaque millimètre de pluie à l'identique. Une pluie fine < 1 mm s'évapore du feuillage avant d'atteindre la terre. À l'inverse, une forte averse dépasse la capacité d'infiltration, provoquant un ruissellement ou une fuite gravitaire. Nous appliquons l'approximation du Soil Conservation Service (USDA) :

$$P_{\text{eff}} = \begin{cases} 0 & \text{si } P_{\text{tot}} < 1.0\text{ mm} \quad (\text{rétention foliaire / évaporation}) \\ P_{\text{tot}} \times 0.8 & \text{si } 1.0 \le P_{\text{tot}} \le 15.0\text{ mm} \quad (\text{infiltration racinaire}) \\ 12.0 + 0.1 \times (P_{\text{tot}} - 15.0) & \text{si } P_{\text{tot}} > 15.0\text{ mm} \quad (\text{saturation du sol}) \end{cases}$$

Où le cumul des précipitations \( P_{\text{tot}} \) englobe le relevé des dernières 24h et les prévisions des 12 prochaines heures :

$$P_{\text{tot}} = P_{\text{hist 24h}} + P_{\text{prev 12h}}$$

2. Implémentation vectorielle sur ESP32-S3 : Heuristique de Taylor

Résoudre le système complet non linéaire de Penman-Monteith nécessiterait de constants calculs en virgule flottante double précision, sollicitant inutilement le processeur embarqué.

Dans le module smart_irrigation.c, nous utilisons une linéarisation au premier ordre (développement de Taylor) autour du point d'équilibre agrométéorologique (\( T = 20^\circ\text{C} \), \( RH = 60\% \), \( P = 0\text{ mm} \)) :

$$K_{\text{irrig}} = 1.0 + 0.03 \cdot (T - 20) + 0.008 \cdot (60 - RH) - 0.20 \cdot P_{\text{eff}}$$

Verrouillage anti-pluie matériel (Fail-Safe Soil Interlock) :

Indépendamment des calculs mathématiques, une condition d'interruption coupe immédiatement l'arrosage lors d'une pluie en cours ou de saturation :

$$\left( P_{\text{actuel}} > 0.5\text{ mm} \quad \text{ou} \quad P_{\text{tot}} \ge 5.0\text{ mm} \right) \implies K_{\text{irrig}} = 0.0$$

3. Intégration matérielle sur le module Waveshare 6CH

Le coefficient ne commande pas les relais en continu afin d'éviter tout blocage ouvert en cas de coupure de liaison. Il modifie plutôt la valeur initiale chargée dans les temporisateurs matériels décrémentés en RAM : relay_countdown_timers[zone].

$$t_{\text{exec}} = \left\lfloor t_{\text{base}} \times 60 \times K_{\text{irrig}} \right\rfloor \quad [\text{secondes}]$$

Exemple pratique sur site :
L'utilisateur configure une durée nominale de \( t_{\text{base}} = 10\text{ minutes} \). Dans des conditions modérées (16.7°C, 92% RH, pluie 0.4 mm), le modèle détermine \( K_{\text{irrig}} = 0.47 \). Le décompte inscrit est :

$$t_{\text{exec}} = 10 \times 60 \times 0.47 = 282\text{ secondes (4 minutes 42 secondes)}$$

L'économie d'eau s'élève à 53% sur ce cycle, préservant les racines de l'asphyxie et des maladies fongiques.

Paramètre Type et Plage Source / Registre Fonction système
\( T \) float [-20.0 .. +50.0 °C] temperature_2m Calcul thermique de l'évapotranspiration
\( RH \) int [0 .. 100 %] relative_humidity_2m Déficit de pression de vapeur (VPD)
\( P_{\text{tot}} \) float [≥ 0.0 mm] rain + hourly.precipitation Bilan des précipitations et arrêt pluie
\( K_{\text{irrig}} \) float [0.0 .. 1.5] smart_irrigation_get_factor() Multiplicateur de durée des électrovannes
Watchdog uint32_t [secondes] relay_countdown_timers[6] Décrémenteur matériel autonome 1 Hz

Synthèse du Déploiement Edge AI

L'intégration de l'heuristique vectorielle sur le microcontrôleur ESP32-S3 affranchit l'installation des dépendances au cloud, garantissant un automatisme microclimatique déterministe local :

  • Autonomie Décisionnelle : Le coefficient \( K_{\text{irrig}} \) est calculé en RAM à partir de la météo locale. Le système maintient l'arrosage même lors d'une coupure totale d'accès à Internet.
  • Séparation des Cœurs FreeRTOS : Le traitement JSON et les calculs s'exécutent sur le Cœur 1, évitant tout ralentissement sur le Cœur 0 dédié à la sécurité UDP (AES-128-GCM) et au pilotage des GPIO.
  • Stabilité d'Alimentation : La désactivation de la mise en veille Wi-Fi (esp_wifi_set_ps(WIFI_PS_NONE)) combinée à une alimentation 12V/2A élimine tout risque de redémarrage lors de l'appel de courant des bobines.
  • Sécurité Watchdog Matériel : Le décompte en interruption 1 Hz garantit la fermeture des vannes même en cas d'incident logiciel.

Architecture validée sur le module Waveshare 6CH Relay au sein de la plateforme ProPresta IT.