ESP32 - Regen Sensor

De regensensor kan regen- en sneeuwniveaus detecteren en meten. De regensensor biedt twee uitgangen: een digitale uitgang (LOW/HIGH) en een analoge uitgang.

In deze tutorial leert u hoe u een ESP32 en een regensensor gebruikt om regen te detecteren en te meten. Specifiek behandelen we het volgende:

esp32 rain sensor

Hierna kunt u de code aanpassen om bijvoorbeeld een motor te activeren of een waarschuwing te geven wanneer regen/sneeuw wordt gedetecteerd.

Hardware Benodigdheden

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB Kabel Type-C
1×Regensensor
1×Breadboard (experimenteerprint)
1×Jumper Wires (verbindingsdraden)
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.

Over de Regensensor

De regensensor kan worden gebruikt om de aanwezigheid van regen te detecteren of om het regenwaterniveau te meten. De regensensor biedt twee opties via een digitale uitgangspin en een analoge uitgangspin.

De regensensor bestaat uit twee onderdelen:

  • Het sensing pad (detectievlak)
  • De elektronische module
Rain Sensor Pinout
image source: diyables.io

Het sensing pad

Het sensing pad wordt buiten geplaatst en is gericht op regen/sneeuw (bijvoorbeeld op het dak). Het sensing pad bevat een reeks blootgestelde kopersporen, verdeeld in twee groepen: stroomsporen (power traces) en detectiesporen (sense traces). Deze stroomsporen en detectiesporen zijn niet met elkaar verbonden tenzij ze worden overbrugd door water of sneeuw. Er is geen verschil in functie tussen de stroomsporen en detectiesporen; u kunt één groep als stroomspoor aanwijzen en de andere als detectiespoor gebruiken.

De elektronische module

De elektronische module van de regensensor zet het signaal van het sensing pad om in een analoge of digitale waarde die door de ESP32 kan worden gelezen. Deze module heeft vier pinnen:

  • VCC pin: Deze moet worden aangesloten op VCC (3,3V tot 5V).
  • GND pin: Deze moet worden aangesloten op GND (0V).
  • DO pin (Digital Output): Dit is een digitale uitgangspin. Hij is HIGH als er geen regen wordt gedetecteerd en LOW als er regen wordt gedetecteerd. De drempelwaarde voor regen detectie kan worden aangepast met een ingebouwde potentiometer.
  • AO pin (Analog Output): Dit is een analoge uitgangspin. De uitgangswaarde daalt naarmate er meer water op het sensing pad ligt, en stijgt als het waterniveau afneemt.

Daarnaast heeft de module twee LED-indicatoren:

  • Een PWR-LED die stroom aangeeft.
  • Een DO-LED die de status van het digitale signaal aangeeft: deze brandt wanneer regen wordt gedetecteerd.

Hoe het werkt

Voor de DO pin:

  • De module heeft een ingebouwde potentiometer om de drempelwaarde (gevoeligheid) in te stellen.
  • Wanneer de intensiteit boven de drempelwaarde komt, wordt regen gedetecteerd, is de uitgangspin van de sensor LOW, en brandt de DO-LED.
  • Wanneer de intensiteit onder de drempelwaarde is, wordt regen NIET gedetecteerd, is de uitgangspin HIGH, en is de DO-LED uit.

Voor de AO pin:

  • Hoe meer water zich op het sensing pad bevindt, hoe lager de waarde die aan de AO pin wordt uitgelezen.
  • Hoe minder water op het sensing pad ligt, hoe hoger de waarde die aan de AO pin wordt uitgelezen.

Let op: de potentiometer heeft geen invloed op de waarde bij de AO pin.

Aansluitschema

Zoals hierboven vermeld, moet de VCC-pin van de sensor worden aangesloten op 3,3V of 5V. Wanneer we deze pin direct aansluiten op de 3,3V of 5V pin van de ESP32, kan de levensduur van de sensor worden verkort door elektrochemische corrosie. De beste aanpak is om de VCC-pin van de regensensor aan te sluiten op een uitgangspin van de ESP32. Vervolgens kunt u die pin programmeren om de regensensor alleen van stroom te voorzien als u een meting wilt doen. Dit vermindert de impact van elektrochemische corrosie.

Omdat de regensensormodule twee uitgangen heeft, kunt u ervoor kiezen één of beide te gebruiken, afhankelijk van uw behoeften.

  • Hoe ESP32 en regensensor aansluiten met een breadboard

De regensensormodule biedt twee uitgangen. U kunt er één of beide gebruiken zoals nodig.

ESP32 rain sensor wiring diagram

This image is created using Fritzing. Click to enlarge image

Als u niet weet hoe u ESP32 en andere componenten van stroom moet voorzien, vindt u instructies in de volgende tutorial: Hoe ESP32 van stroom te voorzien.

Hoe ESP32 en regensensor aansluiten

ESP32 Code - Lees waarde van DO pin

/* * 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-rain-sensor */ #define POWER_PIN 19 // ESP32's pin GPIO19 that provides the power to the rain sensor #define DO_PIN 21 // ESP32's pin GPIO21 connected to DO pin of the rain sensor void setup() { // initialize serial communication Serial.begin(9600); // initialize the Arduino's pin as an input pinMode(POWER_PIN, OUTPUT); // configure the power pin pin as an OUTPUT pinMode(DO_PIN, INPUT); } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the rain sensor's power ON delay(10); // wait 10 milliseconds int rain_state = digitalRead(DO_PIN); digitalWrite(POWER_PIN, LOW); // turn the rain sensor's power OFF if (rain_state == HIGH) Serial.println("The rain is NOT detected"); else Serial.println("The rain is detected"); delay(1000); // pause for 1 sec to avoid reading sensors frequently to prolong the sensor lifetime }

Snelle Stappen

  • Als u ESP32 voor het eerst gebruikt, bekijk dan hoe u de omgeving opzet voor ESP32 in Arduino IDE
  • Kopieer de bovenstaande code en open deze in Arduino IDE
  • Klik op de knop Upload in Arduino IDE om de code naar ESP32 te uploaden
  • Druppel wat water op de regensensor
  • Bekijk het resultaat in de Seriële Monitor.
COM6
Send
The rain is NOT detected The rain is NOT detected The rain is NOT detected The rain is detected The rain is detected The rain is detected The rain is detected The rain is detected The rain is NOT detected The rain is NOT detected The rain is NOT detected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Houd er rekening mee dat, indien de LED-status constant aan of uit blijft terwijl de sensor nat is, u met de potentiometer de gevoeligheid van de sensor kunt afstellen.

ESP32 Code - Lees waarde van AO pin

/* * 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-rain-sensor */ #define POWER_PIN 19 // ESP32's pin GPIO19 that provides the power to the rain sensor #define AO_PIN 36 // ESP32's pin GPIO36 connected to AO pin of the rain sensor void setup() { // initialize serial communication Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); pinMode(POWER_PIN, OUTPUT); // configure the power pin pin as an OUTPUT } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the rain sensor's power ON delay(10); // wait 10 milliseconds int rain_value = analogRead(AO_PIN); digitalWrite(POWER_PIN, LOW); // turn the rain sensor's power OFF Serial.println(rain_value); // print out the analog value delay(1000); // pause for 1 sec to avoid reading sensors frequently to prolong the sensor lifetime }

Snelle Stappen

  • Kopieer de bovenstaande code en open deze in Arduino IDE
  • Klik op de knop Upload in Arduino IDE om de code naar ESP32 te uploaden
  • Druppel wat water op de regensensor
  • Bekijk het resultaat in de Seriële Monitor.
COM6
Send
225 2426 236 563 687 959 975 1009 1017 1053 1078 841 743 440 279
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Notiz:

In deze tutorial wordt de functie analogRead() gebruikt om de waarden uit te lezen van een ADC (Analog-to-Digital Converter) die is aangesloten op de regensensor. De ADC van de ESP32 is geschikt voor projecten die geen extreem hoge nauwkeurigheid vereisen. Houd echter rekening met het volgende bij projecten die precisie nodig hebben:

  • De ADC van de ESP32 is niet perfect nauwkeurig en kan kalibratie vereisen voor correcte resultaten. Elke ESP32 kan iets verschillen, dus kalibratie per bord is aan te raden.
  • Kalibratie kan lastig zijn, vooral voor beginners, en levert mogelijk niet altijd de gewenste resultaten op.

Voor projecten die hoge precisie vereisen, kunt u overwegen een externe ADC te gebruiken (bijvoorbeeld de ADS1115) in combinatie met de ESP32, of een Arduino die doorgaans betrouwbaardere ADC-prestaties heeft. Wilt u toch de ADC van de ESP32 kalibreren, raadpleeg dan de ESP32 ADC Kalibratie 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 een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u snel aan de slag te gaan met de ESP32 en regensensor.

※ 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!