Un capteur convertit une grandeur physique ou chimique en signal électrique mesurable. Comprendre le principe de mesure permet de calibrer correctement, d’identifier les dérives et de choisir le bon capteur pour chaque application.
Le DS18B20 est un capteur de température précis, étanche, très utilisé dans le jardin (sol, compost, eau de réservoir).
Principe : thermistance + convertisseur ADC intégré + interface 1-Wire.
Caractéristiques :
Résistance de pull-up requise : 4,7 kΩ entre DQ et VCC (obligatoire pour le bus 1-Wire).
# Lecture DS18B20 - MicroPython (ESP32)
from machine import Pin
import onewire, ds18x20, time
ds_pin = Pin(4)
ow = onewire.OneWire(ds_pin)
ds = ds18x20.DS18X20(ow)
roms = ds.scan()
def lire_temp_sol():
ds.convert_temp() # Lance la conversion ADC
time.sleep_ms(750) # Attendre (12 bits = 750 ms max)
return ds.read_temp(roms[0])
Le BME280 de Bosch mesure la température, l’humidité relative et la pression atmosphérique sur le même composant.
Caractéristiques :
Calcul VPD à partir du BME280 :
import math
def calcul_vpd(temp_C, humidite_pct):
es = 0.6108 * math.exp(17.27 * temp_C / (temp_C + 237.3)) # kPa
ea = es * humidite_pct / 100
return round(es - ea, 3) # kPa
Il existe deux principes principaux de mesure de l’humidité volumique du sol :
Les capteurs résistifs mesurent la résistance électrique du sol entre deux électrodes. Résistance élevée = sol sec.
Avantages : très bon marché (< 1 €) Inconvénients : corrosion rapide des électrodes, dépendance à la salinité, calibration difficile
Ne pas alimenter en DC continu → électrolyse et corrosion. Utiliser une alimentation AC (signal carré 1 kHz) ou n’alimenter que pendant la mesure.
Ces capteurs exploitent la forte constante diélectrique de l’eau (ε_eau = 80) comparée à l’air (ε_air = 1) et aux minéraux (ε_sol = 3–5).
ε_apparent = f(θ_volumique)
L’équation de Topp (1980) est la référence empirique :
θ = -5,3×10⁻² + 2,92×10⁻²·ε - 5,5×10⁻⁴·ε² + 4,3×10⁻⁶·ε³
Avantages : pas de corrosion, peu sensible à la salinité Inconvénients : dépendance à la texture du sol (nécessite calibration locale)
Capteurs recommandés :
# Lecture capteur capacitif analogique (MicroPython)
from machine import ADC, Pin
adc = ADC(Pin(34))
adc.atten(ADC.ATTN_11DB)
def lire_humidite_sol():
# Valeurs à calibrer pour votre capteur/sol
SEC = 2800 # Valeur ADC sol sec
SATURE = 1200 # Valeur ADC sol saturé
brut = adc.read()
pct = (SEC - brut) / (SEC - SATURE) * 100
return max(0, min(100, pct))
La mesure électrochimique du pH repose sur l’électrode de verre.
L’électrode de verre développe un potentiel de membrane proportionnel au log[H⁺] dans la solution, selon l’équation de Nernst :
E = E° + (RT/nF) × ln[H⁺] E = E° - 0,0592 × pH (à 25°C)
La valeur 0,0592 V/pH (≈ 59 mV/pH) est la pente de Nernst à 25°C. À 20°C elle vaut 58 mV/pH, à 30°C elle vaut 60 mV/pH — d’où la nécessité de corriger la température.
Correction de température :
pente(T) = 0,0001984 × (273,15 + T) [V/pH]
Les électrodes de pH génèrent un signal dans une plage ±414 mV (pH 0–14). Un module de conditionnement (type Atlas Scientific EZO-pH ou DFRobot SEN0161) amplifie et met à l’échelle ce signal pour un ADC.
Calibration : toujours calibrer avec 2 ou 3 tampons (pH 4,01 ; 7,01 ; 10,01). La calibration en 2 points donne une droite (pente + offset).
# Calibration 2 points et lecture pH (Python, fichier de calibration)
def tension_vers_ph(tension_mV, pente, offset):
"""Convertit une tension ADC en valeur pH."""
return (tension_mV - offset) / pente
# Exemple : point 1 = pH 4.01 à 210 mV, point 2 = pH 7.01 à 30 mV
pente = (30 - 210) / (7.01 - 4.01) # mV/pH = -60 mV/pH
offset = 210 - pente * 4.01
Le BH1750 mesure l’éclairement en lux, pas en PAR (µmol/m²/s). La conversion approximative est :
PAR (µmol/m²/s) ≈ lux × 0,0185 (pour la lumière solaire)
| Valeur lux | Équivalent PAR | Interprétation |
|---|---|---|
| < 1 000 lux | < 18 µmol/m²/s | Très faible |
| 10 000 lux | 185 µmol/m²/s | Ombre légère |
| 50 000 lux | 925 µmol/m²/s | Soleil voilé |
| 100 000 lux | 1 850 µmol/m²/s | Plein soleil |
Pour une mesure PAR rigoureuse, une photodiode (ex. SFH 2716) couplée à un filtre passe-bande 400–700 nm et un transimpédance-amplificateur donne une mesure précise, mais requiert un circuit plus complexe.
Ce capteur mesure 11 canaux spectraux de 415 nm à 940 nm + un canal clair et un canal NIR. Il permet de décomposer le spectre lumineux — utile pour caractériser des sources artificielles en serre.
# Intégration journalière DLI (µmol/m²/jour)
# À appeler toutes les 10 minutes (voir code/data_logger.py)
def integrer_dli(mesures_par_interval, interval_s=600):
total_umol = sum(m * interval_s for m in mesures_par_interval)
return total_umol / 1e6 # Convertir en mol/m²/jour
La CE de la solution du sol mesure la concentration totale en ions dissous (sels). On mesure la résistance entre deux électrodes à fréquence fixe (évite l’électrolyse).
CE (mS/cm) = constante_cellule / résistance (Ω)
La constante de cellule k (cm⁻¹) dépend de la géométrie des électrodes :
k = d / A (distance inter-électrodes / surface)
Correction de température (la CE augmente de ≈ 2 %/°C) :
CE_25 = CE_T / (1 + 0,0191 × (T - 25))
| Paramètre | Capteur recommandé | Interface | Précision | Prix approx. |
|---|---|---|---|---|
| Température sol | DS18B20 étanche | 1-Wire | ±0,5°C | 2–4 € |
| Température/Humidité air | BME280 | I²C | ±1°C, ±3%HR | 3–6 € |
| Humidité sol | Capacitif v1.2 | Analogique | ±3% (après calibration) | 1–3 € |
| pH sol | DFRobot SEN0161 | Analogique | ±0,1 pH | 25–50 € |
| Lumière | BH1750 | I²C | ±20% | 1–3 € |
| CE | Atlas Scientific EZO-EC | UART/I²C | ±2% | 80–150 € |
| PAR précis | Apogee SQ-520 | Analogique/RS-232 | ±5% | 250–400 € |
| ← Précédent : Électronique | Suivant : Irrigation Automatique → |