Table des matières

Présentation de la sonde d’humidité du sol Gravity SEN0193

Description

La Gravity SEN0193 est une sonde capacitive d’humidité du sol développée par DFRobot. Elle mesure l’humidité du sol de façon capacitive, ce qui est plus fiable et plus durable que les anciennes sondes résistives (qui s’oxydent avec le temps).

Avantages

Branchement de la sonde

Voici le schéma logique de câblage pour la sonde sur le MCP3008 déjà alimenté et installé :

Broche de la sonde À connecter sur…
—————— ——————————————————
`VCC` ligne 3,3V (pin 1 du Raspberry Pi) via breadboard
`GND` ligne GND (pin 6 du Raspberry Pi) via breadboard
`A0` (sortie) une des entrées CH0 à CH7 du MCP3008 (ex: CH0)

⚠️ Le MCP3008 doit être alimenté en 3,3V, pas 5V, pour correspondre au niveau logique du Pi.

Test de la sonde en mode interractif

Installer la bibliothèque Adafruit_CircuitPython_MCP3xxx

#Importation des bibliothèques nécessaires
import time                           # Pour ajouter une pause entre deux lectures (temporisation)
import busio                          # Pour initialiser et utiliser le bus SPI (communication avec le MCP3008)
import digitalio                      # Pour gérer les entrées/sorties numériques (notamment la broche CS du SPI)
import board                          # Pour accéder aux broches physiques du Raspberry Pi via des noms symboliques

# Importation de la bibliothèque du convertisseur analogique/numérique MCP3008
import adafruit_mcp3xxx.mcp3008 as MCP
from adafruit_mcp3xxx.analog_in import AnalogIn

#Initialisation du bus SPI matériel (horloge, entrée et sortie de données)
spi = busio.SPI(clock=board.SCK, MISO=board.MISO, MOSI=board.MOSI)

#Définir la broche utilisée pour sélectionner le MCP3008 (CS = Chip Select)
# Ici on utilise la broche physique D5 (GPIO5), mais on peut en choisir une autre
cs = digitalio.DigitalInOut(board.D5)

#Création d’une instance du MCP3008 relié via SPI
mcp = MCP.MCP3008(spi, cs)

#Définir une entrée analogique sur le canal CH0 (où est branchée la sonde d’humidité Gravity)
# Si tu veux ajouter d'autres sondes : tu peux aussi définir CH1, CH2, etc.
canal_humidite_1 = AnalogIn(mcp, MCP.P0)  # Capteur 1 branché sur CH0
# canal_humidite_2 = AnalogIn(mcp, MCP.P1)  # Capteur 2 (à décommenter si besoin)
# canal_humidite_3 = AnalogIn(mcp, MCP.P2)  # Capteur 3...

#Boucle infinie pour lire les valeurs du capteur toutes les 2 secondes
while True:
    # Lecture de la valeur brute (entre 0 et 65535) pour le capteur 1
    valeur = canal_humidite_1.value
    # Lecture de la tension en volts (entre 0.0 et 3.3V)
    tension = canal_humidite_1.voltage

    # Affichage dans le terminal
    print(f"Sonde 1 → Valeur brute : {valeur} | Tension : {tension:.2f} V")

    # Si plusieurs sondes sont branchées sur d'autres canaux, tu peux aussi les lire :
    # valeur2 = canal_humidite_2.value
    # tension2 = canal_humidite_2.voltage
    # print(f"Sonde 2 → Valeur brute : {valeur2} | Tension : {tension2:.2f} V")

    # Temporisation de 5 secondes avant la prochaine lecture
    time.sleep(5)