Raspberry Pi - Water Sensor

Deze tutorial legt uit hoe u de Raspberry Pi gebruikt met de water sensor. In detail leren we:

Hardware Benodigdheden

1×Raspberry Pi 5
1×ADS1115 ADC-Module
1×Waterniveausensor
1×Jumper draden
1×(Aanbevolen) Schroefklem Block Shield voor Raspberry Pi
1×(Aanbevolen) Raspberry Pi Prototyping Basisplaat & Breadboard Kit
1×(Aanbevolen) HDMI-Touchscreen-Monitor voor Raspberry Pi

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 Waterniveausensor

Waterniveausensor Pinout

De waterniveausensor heeft 3 pinnen:

  • De S (Signal) pin: Dit is een analoge uitgang die verbonden moet worden met een van de analoge ingangen van uw Raspberry Pi.
  • De + (VCC) pin: Deze levert voeding voor de sensor en het wordt aanbevolen deze tussen 3,3V – 5V te gebruiken.
  • De - (GND) pin: Dit is een aardingsverbinding.
water sensor pinout

※ Notiz:

De signaalpin van de sensor produceert een analoge uitgang die afhankelijk is van de spanning geleverd aan de VCC-pin.

Hoe de Waterniveausensor Werkt

Kort gezegd stijgt de uitgangsspanning op de signaalpin naarmate de hoeveelheid water waarin de sensor ondergedompeld is toeneemt.

Laten we wat dieper ingaan.

Deze sectie is gewijd aan diepgaande kennis. Maak u GEEN zorgen als u het niet begrijpt. Sla deze sectie over als deze u overweldigt en kom op een andere dag terug. Lees verder met de volgende secties.

De sensor heeft tien blootgestelde koperen banen, waarvan vijf als voedingsbanen dienen en de andere vijf als meetbanen. Deze banen zijn parallel gerangschikt, met één meetbaan tussen elke twee voedingsbanen. Tenzij ze door water worden overbrugd wanneer ze ondergedompeld zijn, blijven deze banen niet met elkaar verbonden.

De banen werken als een variabele weerstand, vergelijkbaar met een potentiometer, waarvan de weerstand afhankelijk is van het waterniveau:

  • De weerstand wordt bepaald door de afstand vanaf de bovenkant van de sensor tot het wateroppervlak.
  • De weerstand is omgekeerd evenredig aan de hoeveelheid aanwezig water:
  • Hoe meer water de sensor onderdompelt, hoe hoger de geleiding en des te lager de weerstand.
  • Hoe minder water de sensor onderdompelt, hoe lager de geleiding en des te hoger de weerstand.
  • De uitgangsspanning van de sensor is gebaseerd op deze weerstand.

Het bepalen van het waterniveau kan gedaan worden door de spanning te meten.

Bedradingsschema

Raspberry Pi water sensor bedrading schema

This image is created using Fritzing. Click to enlarge image

Om uw bekabelingsopstelling te vereenvoudigen en te organiseren, raden we het gebruik van een Schroevenklemaansluiting-shield voor Raspberry Pi aan. Deze shield zorgt voor veiligere en beter beheerbare verbindingen, zoals hieronder weergegeven:

Raspberry Pi Schroevenklemaansluiting-Shield

Raspberry Pi Code - Waarde uitlezen van Water Sensor

Snelle Stappen

  • Zorg dat u Raspbian of een ander Raspberry Pi compatibel besturingssysteem op uw Pi heeft geïnstalleerd.
  • Zorg dat uw Raspberry Pi verbonden is met hetzelfde lokale netwerk als uw pc.
  • Zorg dat uw Raspberry Pi internettoegang heeft als u libraries moet installeren.
  • Als dit de eerste keer is dat u de Raspberry Pi gebruikt, bekijk dan hoe u de Raspberry Pi installeert.
  • Verbind uw pc met de Raspberry Pi via SSH met de ingebouwde SSH client op Linux en macOS of PuTTY op Windows. Zie hoe u uw pc met Raspberry Pi verbindt via SSH.
  • Zorg dat u de RPi.GPIO bibliotheek geïnstalleerd heeft. Zo niet, installeer deze met het volgende commando:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Installeer de Adafruit_ADS1x15 bibliotheek door de volgende commando’s uit te voeren in de terminal van uw Raspberry Pi:
sudo pip install Adafruit-ADS1x15
  • Maak een Python scriptbestand met de naam water_sensor.py en voeg de volgende code toe:
# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/tutorials/raspberry-pi/raspberry-pi-water-sensor import time import Adafruit_ADS1x15 # Create an ADS1115 ADC instance ADC = Adafruit_ADS1x15.ADS1115() # Specify the ADC channel (0-3) based on your connection ADC_CHANNEL = 3 # A3 of ADS1115 module # Set the gain (input voltage range) for your application GAIN = 1 # Gain of 1 corresponds to +/-4.096V # Define the conversion factor for water level calculation MIN_ADC_VALUE = 0 # Replace with the minimum ADC value for your sensor MAX_ADC_VALUE = 32767 # Replace with the maximum ADC value for your sensor try: while True: # Read the raw ADC value adc_value = ADC.read_adc(ADC_CHANNEL, gain=GAIN) # Convert the raw ADC value to a water level percentage water_level = (adc_value - MIN_ADC_VALUE) / (MAX_ADC_VALUE - MIN_ADC_VALUE) * 100 print(f"ADC Value: {adc_value} | Water Level: {water_level:.2f}%") time.sleep(1) # Wait for a second before the next reading except KeyboardInterrupt: print("\nScript terminated by user.")
  • Sla het bestand op en voer het Python script uit met het volgende commando in de terminal:
python3 water_sensor.py
  • Laat de sensor voorzichtig in een glas water zakken.
  • Controleer de output in de Terminal; deze zou 0 moeten zijn wanneer de sensor geen contact heeft met iets.
PuTTY - Raspberry Pi
ADC Value: 0 | Water Level: 0.00% ADC Value: 8192 | Water Level: 10.00% ADC Value: 8192 | Water Level: 10.00% ADC Value: 13503 | Water Level: 22.30% ADC Value: 13503 | Water Level: 22.30% ADC Value: 18714 | Water Level: 34.59% ADC Value: 18714 | Water Level: 34.59% ADC Value: 23925 | Water Level: 46.89% ADC Value: 29136 | Water Level: 59.18% ADC Value: 29136 | Water Level: 59.18%

Het script draait continu in een oneindige lus totdat u Ctrl + C indrukt in de terminal.

※ Notiz:

De sensor is niet bedoeld om volledig ondergedompeld te worden; alleen de blootgestelde banen op de printplaat mogen in contact komen met water. Wees voorzichtig bij het installeren.

Hoe Waterlekkage te Detecteren

Om waterlekkage, regenval en tankoverloop te detecteren, hoeven we alleen maar de uitgelezen waarde te vergelijken met een drempelwaarde die bepaald wordt tijdens het kalibratiegedeelte van deze tutorial.

Laten we een concreet voorbeeld nemen. Als water wordt gedetecteerd, zal de Raspberry Pi een LED laten branden. Voor de bedrading, zie hoe u een LED aansluit op de Raspberry Pi.

Raspberry Pi Code - Detecteren van Waterlekkage

Snelle Stappen

  • Maak een Python scriptbestand met de naam water_sensor_led.py en voeg de volgende code toe:
# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/tutorials/raspberry-pi/raspberry-pi-water-sensor import time import Adafruit_ADS1x15 import RPi.GPIO as GPIO # Create an ADS1115 ADC instance ADC = Adafruit_ADS1x15.ADS1115() # Specify the ADC channel (0-3) based on your connection ADC_CHANNEL = 3 # A3 of ADS1115 module # Set the gain (input voltage range) for your application GAIN = 1 # Gain of 1 corresponds to +/-4.096V # Define the conversion factor for water level calculation MIN_ADC_VALUE = 0 # Replace with the minimum ADC value for your sensor MAX_ADC_VALUE = 32767 # Replace with the maximum ADC value for your sensor # Define the threshold ADC value for triggering the LED LED_THRESHOLD = 20000 # Replace with your desired threshold # Define the LED GPIO pin LED_PIN = 16 # Replace with the GPIO pin number you're using # Set up the GPIO mode and LED pin GPIO.setmode(GPIO.BCM) GPIO.setup(LED_PIN, GPIO.OUT) try: while True: # Read the raw ADC value adc_value = ADC.read_adc(ADC_CHANNEL, gain=GAIN) # Convert the raw ADC value to a water level percentage water_level = (adc_value - MIN_ADC_VALUE) / (MAX_ADC_VALUE - MIN_ADC_VALUE) * 100 print(f"ADC Value: {adc_value} | Water Level: {water_level:.2f}%") # Turn on the LED if the water level is greater than the threshold if adc_value > LED_THRESHOLD: GPIO.output(LED_PIN, GPIO.HIGH) else: GPIO.output(LED_PIN, GPIO.LOW) time.sleep(1) # Wait for a second before the next reading except KeyboardInterrupt: print("\nScript terminated by user.") GPIO.cleanup() # Clean up GPIO settings on exit
  • Sla het bestand op en voer het Python script uit met het volgende commando in de terminal:
python3 water_sensor_led.py
  • Laat de sensor voorzichtig in een glas water zakken.
  • Controleer de status van de LED output.

Kalibratie van de Waterniveausensor

De uitgang van de sensor wordt niet alleen beïnvloed door het waterniveau, maar ook door de geleidbaarheid van het water. Puur water is niet geleidend, terwijl water met mineralen en onzuiverheden dat wel is. Hoe hoger de geleidbaarheid van het water, des te gevoeliger de sensor is. Daarnaast is de uitgangswaarde afhankelijk van de spanning die wordt geleverd aan de VCC-pin van de sensor.

Om nauwkeurig te kunnen uitlezen met de water sensor, raden we aan de sensor te kalibreren voor het specifieke type water dat u wilt monitoren.

Instructies voor kalibratie:

  • Gebruik de eerder gegeven sketch om de sensorkwaarde uit te lezen.
  • Dompel de sensor onder tot het gewenste waterniveau om de drempelwaarde in te stellen.
  • Noteer de waarde die de sensor toont in de terminal.
  • Gebruik deze waarde als drempelwaarde om een actie te activeren.

Deze test kan ook gebruikt worden om te bepalen:

  • MIN_ADC_VALUE waarde, wanneer de sensor niet ondergedompeld is in de vloeistof
  • MAX_ADC_VALUE waarde, wanneer de sensor volledig ondergedompeld is in de vloeistof

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.

Daag uzelf uit

  • Wanneer waterlekkage wordt gedetecteerd:
  • Verstuur een e-mail
  • Verstuur een SMS-bericht
  • Activeer een geluidssignaal

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