ESP32 - Bodemvochtigheidssensor

Deze handleiding legt uit hoe u met een ESP32 de bodemvochtigheid uitleest met een sensor. We behandelen in detail:

Hardware Vereist

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×Capacitieve Bodemvochtsensor
1×Breadboard (experimenteerprint)
1×Jumper wires (verbindingsdraden)
1×(Optioneel) DC Power Jack
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Aankoopadvies: Veel capacitieve bodemvochtsensoren op de markt zijn van lage kwaliteit, ongeacht de versie. We raden u ten zeerste aan de sensor met TLC555I-chip van het merk DIYables te kopen via de bovenstaande link. We hebben het getest en het werkte goed.

Over de Bodemvochtigheidssensor

capacitive moisture sensor vs resistive moisture sensor

Er zijn twee typen vochtigheidssensoren:

  • Resistive moisture sensor
  • Capacitive moisture sensor

Beide sensoren leveren een bodemvochtigheidswaarde, maar hun werkingsprincipe verschilt. Wij raden sterk aan om de capacitive moisture sensor te gebruiken vanwege de volgende redenen:

  • De resistive bodemvochtigheidssensor corrodeert na verloop van tijd. De elektrische stroom die tussen de sondes van de sensor vloeit veroorzaakt elektrochemische corrosie.
  • De capacitive bodemvochtigheidssensor corrodeert NIET. De elektroden van de sensor zijn niet blootgesteld en er vloeit geen elektrische stroom tussen.

De onderstaande afbeelding toont corrosie op een resistive bodemvochtigheidssensor.

resistive soil moisture sensor corrosion

In de rest van deze handleiding gebruiken we de capacitive bodemvochtigheidssensor.

Pinout van de Capacitive Soil Moisture Sensor

Een capacitive bodemvochtigheidssensor heeft drie pinnen:

  • GND pin: sluit deze aan op GND (0V)
  • VCC pin: sluit deze aan op VCC (5V of 3.3V)
  • AOUT pin: analoge signaaluitgang die een spanning levert die omgekeerd evenredig is aan het vochtigheidsniveau van de bodem. Verbind deze pin met een analoge inputpin van de ESP32.
capacitive soil moisture sensor pinout

Hoe Het Werkt

Hoe meer water aanwezig is in de bodem, hoe lager de spanning op de AOUT-pin is.

Aansluitschema

  • Hoe u de ESP32 en bodemvochtigheidssensor aansluit met een breadboard
ESP32 soil moisture sensor Wiring Diagram

This image is created using Fritzing. Click to enlarge image

How to connect ESP32 and soil moisture sensor

ESP32 Code

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-soil-moisture-sensor */ #define AOUT_PIN 36 // ESP32 pin GPIO36 (ADC0) that connects to AOUT pin of moisture sensor void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } void loop() { int value = analogRead(AOUT_PIN); // read the analog value from sensor Serial.print("Moisture value: "); Serial.println(value); delay(500); }

Snelle Stappen

  • Kopieer bovenstaande code en plak deze in de Arduino IDE
  • Klik op de Upload-knop in de Arduino IDE om de code naar de ESP32 te uploaden
  • Graaf de sensor in de bodem en giet daarna water in de bodem. Of dompel de sensor langzaam onder in een glas zoutwater.
  • Controleer het resultaat in de Serial Monitor. Dit ziet er ongeveer zo uit:
COM6
Send
Moisture value: 2383 Moisture value: 2395 Moisture value: 1260 Moisture value: 1325 Moisture value: 1271 Moisture value: 1261 Moisture value: 1254 Moisture value: 1241 Moisture value: 1244 Moisture value: 1380 Moisture value: 1368 Moisture value: 1279 Moisture value: 1268 Moisture value: 1259 Moisture value: 1243 Moisture value: 1265 Moisture value: 1308 Moisture value: 1487 Moisture value: 1646
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Notiz:

  • Vermijd het gebruik van puur water voor de test, aangezien dit geen elektriciteit geleidt en dus de sensorwaarden niet beïnvloedt.
  • De sensorwaarden komen nooit op nul uit. Het is normaal dat de waarden tussen ongeveer 3100 en 2600 liggen, maar dit kan variëren afhankelijk van diverse factoren: de diepte van het inbrengen van de sensor, samenstelling van de bodem of het water, voedingsspanning.
  • Begraaf het circuitgedeelte (bovenop de sensor) niet in de bodem of water, omdat dit de sensor kan beschadigen.

Kalibratie voor Capacitive Soil Moisture Sensor

De gemeten waarde van de vochtigheidssensor is relatief. Het is afhankelijk van de samenstelling van de bodem en water. In de praktijk moet u kalibreren om een drempelwaarde (THRESHOLD) te bepalen die nat en droog van elkaar scheidt.

Hoe kalibreren:

  • Start de bovenstaande code op de ESP32
  • Plaats de vochtigheidssensor in de bodem
  • Bewater de bodem langzaam
  • Kijk in de Serial Monitor
  • Noteer de waarde wanneer u merkt dat de bodem overgaat van droog naar nat. Deze waarde heet de THRESHOLD.

Bepalen of de Bodem Nat of Droog is

Na de kalibratie werkt u de THRESHOLD-waarde bij in de onderstaande code. Deze code bepaalt of de bodem nat of droog is.

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-soil-moisture-sensor */ #define AOUT_PIN 36 // ESP32 pin GPIO36 (ADC0) that connects to AOUT pin of moisture sensor #define THRESHOLD 1488 // CHANGE YOUR THRESHOLD HERE void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } void loop() { int value = analogRead(AOUT_PIN); // read the analog value from sensor if (value > THRESHOLD) Serial.print("The soil is DRY ("); else Serial.print("The soil is WET ("); Serial.print(value); Serial.println(")"); delay(500); }

Het resultaat in de Serial Monitor:

COM6
Send
The soil is DRY (2126) The soil is DRY (1841) The soil is DRY (1667) The soil is DRY (1540) The soil is WET (1481) The soil is WET (1419) The soil is WET (1357) The soil is WET (1243) The soil is WET (1224)
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Notiz:

Deze handleiding maakt gebruik van de functie analogRead() om waarden uit te lezen van een ADC (Analog-to-Digital Converter) verbonden met de bodemvochtigheidssensor. De ADC van de ESP32 is geschikt voor projecten die geen hoge nauwkeurigheid vereisen. Voor projecten die preciezere metingen vragen, geldt:

  • De ADC van de ESP32 is niet perfect nauwkeurig en kan kalibratie nodig hebben voor correcte resultaten. Elke ESP32 kan iets verschillen, dus u moet de ADC voor elk board apart kalibreren.
  • Kalibratie kan lastig zijn, zeker voor beginners, en levert niet altijd de gewenste nauwkeurigheid op.

Voor projecten met hoge precisie, overweeg het gebruik van een externe ADC (bijv. ADS1115) samen met de ESP32, of gebruik een Arduino die een betrouwbaardere ADC heeft. Wilt u toch de ADC van de ESP32 kalibreren, raadpleeg dan ESP32 ADC Calibration Driver

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor visuele begeleiding bij dit project! De video biedt extra inzichten en toont stap-voor-stap het aansluitproces, de codeupload en het uitlezen van de sensorwaarden.

Functie Referenties

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!