ESP32 - Capteur d'humidité du sol

Ce tutoriel vous explique comment utiliser un capteur d'humidité avec l'ESP32 et MicroPython. En détail, nous apprendrons :

Capteur d'humidité du sol ESP32 MicroPython

Préparation du matériel

1×Module de développement ESP32 ESP-WROOM-32
1×Câble USB Type-A vers Type-C (pour PC USB-A)
1×Câble USB Type-C vers Type-C (pour PC USB-C)
1×Capteur d'humidité du sol capacitif
1×Fils de connexion
1×Recommandé: Carte d'extension à bornier à vis pour ESP32
1×Recommandé: Breakout Expansion Board for ESP32
1×Recommandé: Répartiteur d'alimentation pour ESP32

Ou vous pouvez acheter les kits suivants:

1×Kit de Démarrage DIYables ESP32 (ESP32 inclus)
1×Kit de Capteurs DIYables (30 capteurs/écrans)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

Note d'achat: De nombreux capteurs d'humidité du sol capacitifs sur le marché sont de faible qualité, quelle que soit la version. Nous recommandons vivement d'acheter le capteur avec puce TLC555I de la marque DIYables en utilisant le lien ci-dessus. Nous l'avons testé et il a bien fonctionné.

À propos du capteur d'humidité du sol capteur

Capteur d'humidité capacitif contre capteur d'humidité résistif

Il existe deux types de capteurs d'humidité :

  • Capteur d'humidité résistif
  • Capteur d'humidité capacitif

Les deux capteurs mesurent l'humidité du sol, mais ils fonctionnent différemment. Nous recommandons vivement d'utiliser le capteur d'humidité capacitif pour ces raisons :

  • Le capteur d'humidité résistif rouille avec le temps. Cela se produit parce qu'un courant électrique passe entre ses sondes, provoquant de la corrosion.
  • Le capteur d'humidité capacitif ne rouille pas avec le temps. Ses composants sont protégés et aucun courant électrique ne circule entre eux.

L'image ci-dessous montre la rouille sur un capteur d'humidité du sol résistif.

Capteur résistif d'humidité du sol corrodé.

Le reste de ce guide se concentrera sur la manière d'utiliser le capteur capacitif d'humidité du sol.

Schéma de brochage du capteur d'humidité du sol capacitif

Un capteur capacitif d'humidité du sol possède trois broches :

  • Broche GND : connectez à la masse (0 V)
  • Broche VCC : connectez à VCC (5 V ou 3,3 V)
  • Broche AOUT : envoie un signal qui varie en fonction de l'humidité du sol. Connectez-le à l'entrée analogique de l'ESP32.
Schéma des broches du capteur d'humidité du sol capacitif

Comment cela fonctionne

Plus il y a d'eau dans le sol, plus la tension au pin AOUT est faible.

Diagramme de câblage

  • Comment connecter l'ESP32 et le capteur d'humidité du sol en utilisant breadboard
Schéma de câblage du capteur d'humidité du sol ESP32 MicroPython

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Comment connecter l'ESP32 et le capteur d'humidité du sol

Code MicroPython pour ESP32

/* * Ce code ESP32 MicroPython a été développé par newbiely.fr * Ce code ESP32 MicroPython est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-micropython/esp32-micropython-soil-moisture-sensor */ from machine import ADC, Pin import time AOUT_PIN = 36 # The ESP32 pin GPIO36 (ADC0) connected to the moisture sensor # Initialize the analog pin for reading moisture_sensor = ADC(Pin(AOUT_PIN)) # Set the ADC width (resolution) to 12 bits moisture_sensor.width(ADC.WIDTH_12BIT) # Set the attenuation to 11 dB, allowing input range up to ~3.3V moisture_sensor.atten(ADC.ATTN_11DB) # Infinite loop while True: value = moisture_sensor.read() # Read the moisture level from the sensor print("Moisture: {}".format(value)) # Print the 12-bit moisture level to the serial monitor time.sleep(0.5) # Pause the loop for 500 milliseconds

Étapes rapides

Voici des instructions sur la façon de configurer et d’exécuter votre code MicroPython sur l’ESP32 en utilisant l’IDE Thonny :

  • Assurez-vous que l'IDE Thonny est installé sur votre ordinateur.
  • Vérifiez que le firmware MicroPython est chargé sur votre carte ESP32.
  • Si c'est la première fois que vous utilisez un ESP32 avec MicroPython, consultez le guide ESP32 - Premiers pas. pour des instructions étape par étape.
  • Connectez la carte ESP32 au capteur d'humidité du sol selon le diagramme fourni.
  • Connectez la carte ESP32 à votre ordinateur avec un câble USB.
  • Ouvrez l'IDE Thonny sur votre ordinateur.
  • Dans l'IDE Thonny, allez dans Outils Options.
  • Dans l'onglet Interpréteur, choisissez MicroPython (ESP32) dans le menu déroulant.
  • Assurez-vous que le bon port est sélectionné. Thonny IDE le détecte généralement automatiquement, mais vous devrez peut-être le sélectionner manuellement (comme COM12 sur Windows ou /dev/ttyACM0 sur Linux).
  • Copiez le code MicroPython fourni et collez-le dans l'éditeur de Thonny.
  • Enregistrez le code sur votre ESP32 en procédant comme suit :
    • Cliquez sur le bouton Enregistrer ou appuyez sur Ctrl+S.
    • Dans la boîte de dialogue d'enregistrement, choisissez Périphérique MicroPython.
    • Nommez le fichier main.py.
  • Cliquez sur le bouton Vert Exécuter (ou appuyez sur F5) pour exécuter le script.
  • Insérez le capteur dans le sol et arrosez-le, ou vous pouvez l'immerger lentement dans un gobelet d'eau salée.
  • Consultez le message dans le Shell en bas de Thonny.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Moisture: 2223 Moisture: 2255 Moisture: 2279 Moisture: 2313 Moisture: 2350 Moisture: 2383 Moisture: 2395 Moisture: 1260 Moisture: 1325 Moisture: 1271 Moisture: 1261 Moisture: 1254 Moisture: 1261 Moisture: 1264 Moisture: 1360 Moisture: 1258 Moisture: 1263 Moisture: 1266 Moisture: 1258 Moisture: 1239 Moisture: 1264 Moisture: 1307 Moisture: 1488
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

※ Note:

  • N’utilisez pas d’eau pure pour les tests, car elle ne conduit pas l’électricité et n’aura pas d’effet sur les lectures du capteur.
  • Les lectures du capteur ne seront jamais égales à zéro. Il est normal que les valeurs varient entre 1200 et 2300, mais cela peut changer en fonction de facteurs tels que la profondeur à laquelle le capteur est placé, le type de sol ou d’eau, et la tension d’alimentation.
  • Gardez la partie circuit (en haut du capteur) hors du sol ou de l’eau afin d’éviter d’endommager le capteur.

Étalonnage du capteur capacitif d'humidité du sol

Les lectures du capteur varient en fonction du type de sol et de sa teneur en eau. Pour l'utiliser correctement, nous devons définir un point qui indique si le sol est humide ou sec.

Étapes de calibration:
  1. Exécutez le code fourni sur l'ESP32.
  2. Insérez le capteur d'humidité dans le sol.
  3. Ajoutez progressivement de l'eau au sol.
  4. Regardez le message dans le Shell en bas de Thonny.
  5. Notez la valeur lorsque le sol passe de sec à humide. Cette valeur est appelée le SEUIL.

Déterminez si le sol est humide ou sec

Après la calibration, mettez à jour la valeur du seuil que vous avez enregistrée avec ce nouveau code. Ce code détermine si le sol est humide ou sec.

/* * Ce code ESP32 MicroPython a été développé par newbiely.fr * Ce code ESP32 MicroPython est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-micropython/esp32-micropython-soil-moisture-sensor */ from machine import ADC, Pin import time AOUT_PIN = 36 # The ESP32 pin GPIO36 (ADC0) connected to the moisture sensor THRESHOLD = 1500 # Set threshold value for moisture level # Initialize the analog pin for reading moisture_sensor = ADC(Pin(AOUT_PIN)) # Set the ADC width (resolution) to 12 bits moisture_sensor.width(ADC.WIDTH_12BIT) # Set the attenuation to 11 dB, allowing input range up to ~3.3V moisture_sensor.atten(ADC.ATTN_11DB) # Infinite loop while True: value = moisture_sensor.read() # Read the moisture level from the sensor if value_12bit > THRESHOLD: # Compare sensor reading to threshold print("The soil is DRY ({})".format(value_12bit)) # Print dry status if above threshold else: print("The soil is WET ({})".format(value_12bit)) # Print wet status if below threshold time.sleep(0.5) # Wait for half a second before next read

Consultez le message dans le Shell en bas de Thonny.

Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot The soil is DRY (2124) The soil is DRY (2000) The soil is DRY (1864) The soil is DRY (1588) The soil is DRY (1556) The soil is WET (1484) The soil is WET (1452) The soil is WET (1368) The soil is WET (1252)
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

※ Note:

Ce tutoriel montre comment utiliser la fonction adc.read() pour lire des valeurs d'un ADC (convertisseur analogique-numérique) connecté à un capteur d'humidité du sol. L'ADC de l'ESP32 convient pour des projets qui n'exigent pas une grande précision. Cependant, si votre projet nécessite des mesures précises, gardez les éléments suivants à l'esprit :

  • L'ADC de l'ESP32 n'est pas parfaitement précis et peut nécessiter une calibration pour des résultats précis. Chaque carte ESP32 peut varier légèrement, il est donc nécessaire de calibrer chaque carte individuellement.
  • La calibration peut être difficile, surtout pour les débutants, et elle pourrait ne pas toujours donner les résultats exacts que vous souhaitez.

Pour les projets nécessitant une grande précision, envisagez d'utiliser un ADC externe (par exemple ADS1115) avec l'ESP32 ou optez pour un Arduino, qui dispose d'un ADC plus fiable. Si vous souhaitez toujours calibrer l'ADC de l'ESP32, reportez-vous au ESP32 ADC Calibration Driver.

Vidéo

Tutoriels connexes

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !