Arduino-gebaseerd vroege overstromingsdetectiesysteem – Broncode & schakelingontwerp
Vroege overstromingsbewakingssysteem – Schakeling & project broncode
Zowel in ontwikkelings- als in niet-ontwikkelingslanden is overstroming de grote natuurramp die verlies van menselijk en dierlijk leven en eigendom veroorzaakt. Overstromingen door aardbevingen in oceanen, orkanen, regenval en andere natuurrampen voordoen in veel delen van de wereld elk jaar.
Tijdens regenval leidt een onbeheerd rioolstelsel in diverse geografische regio's tot overstromingen waarbij veel levens verloren gaan. Als we een systeem zouden hebben dat ons vroegtijdig waarschuwt voor overstroming, dan kunnen we mensenlevens redden. Een systeem dat technologie gebruikt om de stijging van het waterpeil te detecteren en mensen van tevoren te waarschuwen, zodat veel mensen geëvacueerd kunnen worden.
In dit project brengen we u een prototype dat kan worden gebruikt om het waterpeil in een vijver, dam of reservoir te detecteren en vervolgens een alarm te geven via een buzzer. Dit is slechts een kleinschalig prototype waarin we een Arduino UNO, ultrasone sensor, buzzer, LCD en enkele verbindingsdraden gaan gebruiken.
Gerelateerde projecten:
- Automatisch plantenwatering & irrigatiesysteem – Schakeling, code & projectverslag
- Regenalarm schakeling – Sneeuw, water en regendetector project
Schakelingsschema voor vroege overstromingsdetectie

Benodigde componenten
- Arduino UNO
- HC-SR04 ultrasone sensor
- Buzzer
- 16×2 LCD display
- Jumper of verbindingsdraden
Gerelateerde projecten:
- Afstandsmeting met Arduino en ultrasone sensor
- Variabele voeding met Arduino UNO – Schakeling en code
Nu leren we de componenten die in deze basisschakeling worden gebruikt, stap voor stap kennen.
Arduino UNO
Arduino is een open source platform dat gebruikt wordt om elektronica projecten te ontwikkelen. Het kan eenvoudig worden geprogrammeerd, gewist en herprogrammeerd op elk moment. Er zijn veel Arduino boards beschikbaar op de markt zoals Arduino UNO, Arduino Nano, Arduino Mega, Arduino LilyPad, enz. met verschillende specificaties volgens hun gebruik.
In dit project gaan we Arduino UNO gebruiken om huishoudelijke apparaten automatisch te controleren. Het heeft een ATmega328 microcontroller IC erop die op 16MHz kloksnelheid draait. Het is een krachtige controller die kan werken met USART, I2C en SPI communicatieprotocollen.
Deze board wordt meestal geprogrammeerd met de software Arduino IDE via een micro USB kabel. De ATmega328 wordt geleverd met een voorgeprogrammeerde onboard bootloader wat het makkelijker maakt om de code te uploaden zonder de hulp van externe hardware. Het heeft veel toepassingen in het maken van elektronica projecten of producten. De C en C++ taal wordt gebruikt om de board te programmeren, wat heel makkelijk te leren en te gebruiken is.
Gerelateerde projecten:
- Waterpeil indicator schakelingsschema – twee eenvoudige projecten
- Volledig automatische waterpeil controller met SRF04
De Arduino IDE maakt programmeren veel makkelijker. Het scheidt de code in twee delen: void setup() en void loop(). De functie void setup() draait slechts één keer en wordt voornamelijk gebruikt voor het initiëren van processen, terwijl void loop() het deel van de code bevat dat continu moet worden uitgevoerd.
Dit model bestaat uit 6 analoge ingangspinnen en 14 digitale GPIO-pinnen die als in- en uitgang kunnen worden gebruikt, waarvan 6 PWM-uitgang bieden en analoog met pinMode(), digitalWrite(), digitalRead() en analogRead() functies. De 6 analoge ingangskanalen lopen van pinnen A0 tot A5 en bieden 10-bit resolutie.
De board kan worden gevoed via USB-kabel (5 volt) of via DC-jack (7 tot 20 volt). Er is een onboard spanningsregelaar om 3,3 volt te genereren voor laagvermogen apparaten.
Omdat de ATmega328 werkt met USART, SPI en I2C communicatieprotocol, heeft hij pinnen 0 (Rx) en 1 (Tx) voor USART, SDA (A4) en SCL (A5) voor I2C en SS (10), MOSI (11), MISO (12) en SCK (13) voor SPI communicatieprotocol.
Gerelateerde projecten:
- Automatische deurbel met objectdetectie door Arduino
- Automatische nachtlamp met Arduino
HC-SR04 ultrasone sensor
De HC-SR04 is een ultrasone sensor die helpt om afstanden te meten op veel plaatsen zonder menselijke contact. Het werkt op hetzelfde principe als RADAR en SONAR en biedt een efficiënte manier om afstanden op een zeer nauwkeurige manier te meten.
Theoretisch kan het afstanden tot 450 cm meten, maar praktisch kan het afstanden meten van 2 cm tot 80 cm met een nauwkeurigheid van 3 mm. Het werkt op 5 volt, stroom minder dan 15mA en 40 Hertz frequentie.

De HC-SR04 heeft één zender en één ontvanger geïnstalleerd. De afstand wordt berekend met de basis snelheid, afstand en tijd formule die we allemaal op school geleerd hebben:
Afstand = Snelheid × Tijd
De zender van de HC-SR04 sensor zendt een ultrasone golf in de lucht uit. Als deze golf wordt gereflecteerd door een object in het bereik van de sensor, dan wordt de gereflecteerde golf in de lucht ontvangen door de ontvanger van de sensor. Om de afstand te berekenen met de bovenstaande formule moeten we de snelheid en tijd kennen.
We weten dat de universele snelheid van de ultrasone golf ongeveer 330 m/s is. De tijd wordt gemeten door de schakeling op de microcontroller. De echo pin wordt hoog voor de tijdsperiode waarin de ultrasone golf terugkeert naar de ontvanger. Op deze manier kunnen we de afstand tussen het object en de HC-SR04 ultrasone sensor berekenen.
Gerelateerde projecten:
- Automatisch spoorwegovergang controle systeem – Schakeling & broncode
- Autosnelheidsdetector schakeling – werking en broncode
Interfacing HC-SR04 met Arduino UNO
De HC-SR04 ultrasone sensor kan worden gebruikt met alle microcontrollers zoals Arduino, PIC, Raspberry Pi, enz. In dit project gaan we de HC-SR04 ultrasone sensor interfacen met Arduino UNO. De HC-SR04 module heeft vier pinnen: VCC, GND, Trig en Echo.
We voeden de HC-SR04 module met 5 volt en GND aan de Arduino UNO. De trigger pin en echo pin zijn de in- en uitgangspinnen, dus moeten ze worden aangesloten op de in- en uitgangspinnen van de Arduino UNO. Om de afstand te meten, zetten we eerst de trigger pin op "hoog" voor 10 microseconden en daarna op "laag".
Dit genereert een ultrasone golf van 40 kHz frequentie die naar het object gaat en weerkaatst naar de ontvanger van de module. Als de golf een object detecteert, keert deze onmiddellijk terug naar het ontvangerdeel van de module en wordt de echo pin "hoog" voor de tijdsperiode waarin het terugkeert naar de sensor.
Nu geeft deze tijdsperiode vermenigvuldigd met de golfsnelheid van 330 m/s de afstand tussen de HC-SR04 module en het object.
Gerelateerd artikel:
- Slimme huishoudautomatiseringssysteem – Schakeling en broncode
- Arduino PWM programmering en zijn functies in Arduino
16×2 LCD display
Interfacing van 16×2 LCD met Arduino UNO is vrij eenvoudig. Er zijn verschillende typen LCD's beschikbaar op de markt, maar degene die we in dit project gebruiken is 16×2, wat betekent dat het twee rijen heeft en in elke rij 16 karakters kunnen worden weergegeven.
Deze module heeft een HD44780 driver van Hitachi erop wat helpt om te interfacen en te communiceren met microcontrollers. Deze LCD kan werken in 4-bit en 8-bit modus. In 4-bit modus zijn slechts 4 datapinnen nodig om verbinding te maken tussen LCD en microcontroller, terwijl in 8-bit modus 8 datapinnen nodig zijn.
Hier gaan we het in 4-bit modus gebruiken omdat het minder draden vereist en de schakeling vereenvoudigt. Laten we kijken naar de pinbeschrijving van de 16×2 LCD.

Pin beschrijving 16×2 LCD module:
| Pin op LCD | Beschrijving |
|---|---|
| VSS | Massa pin |
| VCC | +5V voeding |
| VEE | Pin om contrast van LCD aan te passen |
| RS | Register select: datamodus of commandomodus |
| RW | Lees of schrijf modus |
| E | Enable LCD |
| DB0-DB7 | Data en commando worden via deze pinnen gevoerd |
| LED+ | Anode van backlight LED |
| LED- | Kathode van backlight LED |
Deze LCD heeft geen eigen licht, dus zit er een LED achter het scherm die fungeert als backlight voor het display. Interfacing van deze LCD met Arduino UNO is makkelijk omdat de Arduino IDE een LiquidCrystal bibliotheek biedt met veel ingebouwde functies om het initialiseren en printen op het display te vereenvoudigen. De LCD functies die we voornamelijk in dit project gaan gebruiken zijn:
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); lcd.begin() lcd.clear() lcd.print()
Werking van vroege overstromingsdetectiesysteem & broncode
Een ultrasone sensor wordt op een bepaald basisniveau geplaatst zodanig dat de zender en ontvanger het waterpeil afkijken. De Arduino UNO meet de afstand tussen sensor en waterpeil.
De LCD print de afstand tussen hen. We stellen een referentiewaarde in voor overstromingsniveau en zodra het water de referentie bereikt, zetten we de buzzer op 'hoog' en print de LCD een waarschuwingstekst over de overstroming.
Code uitleg
#include LiquidCrystal lcd(2,3,4,5,6,7); lcd.begin(16,2);
De ingebouwde bibliotheek voor LCD display wordt opgenomen. De functie LiquidCrystal lcd() neemt de pinnummers van de data verbonden met Arduino UNO. Lcd.begin() initialiseert de 16×2 LCD.
pinMode(18,OUTPUT); // trigger pin pinMode(19,INPUT); // echo pin pinMode(20,OUTPUT); // buzzer
Pinnen 18 en 20 worden ingesteld als uitgangspinnen voor trigger en buzzer respectievelijk en pin 19 als ingang voor echo pin.
t=pulseIn(19,HIGH); dist=t*340/20000;
Tijdvariabele 't' detecteert de hoeveelheid tijd tot de trigger pin hoog wordt gezet, wat verder wordt gebruikt om de tijd in centimeters te berekenen en de waarde op te slaan in variabele 'dist'.
if(dist<40) { digitalWrite(20,HIGH); lcd.clear(); lcd.setCursor(0,1); lcd.print("Waterpeil stijgt. Evacueer onmiddellijk"); delay(2000); } else { digitalWrite(20,LOW); delay(2000); }
In deze code hebben we de overstromingsconditie ingesteld als de afstand tussen waterpeil en ultrasone sensor 40cm wordt. Dus zodra het waterpeil 40 cm of minder bereikt, zal de buzzer HIGH gaan om alarm te geven en de LCD zal de overstromingswaarschuwing tonen.
Volledige broncode:
#include LiquidCrystal lcd(2,3,4,5,6,7); float t = 0; float dist = 0; void setup() { lcd.begin(16,2); pinMode(18,OUTPUT); // trigger pin pinMode(19,INPUT); // echo pin pinMode(20,OUTPUT); // buzzer lcd.setCursor(0,1); lcd.print(" Waterpeil Detector"); delay(2000); } void loop() { lcd.clear(); digitalWrite(20,LOW); digitalWrite(18,LOW); delayMicroseconds(2); digitalWrite(18,HIGH); delayMicroseconds(10); digitalWrite(18,LOW); delayMicroseconds(2); t=pulseIn(19,HIGH); dist=t*340/20000; lcd.clear(); lcd.setCursor(0,1); lcd.print("Afstand : "); lcd.print(dist/100); lcd.print(" m"); delay(1000); if(dist<40) { digitalWrite(20,HIGH); lcd.clear(); lcd.setCursor(0,1); lcd.print("Waterpeil stijgt. Evacueer onmiddellijk"); delay(2000); } else { digitalWrite(20,LOW); delay(2000); } }
Gerelateerde projecten:
- Verkeerslicht regeling elektronisch project met IC 4017 & 555 timer
- Eenvoudige GSM lader schakeling – 5V van 230V AC
- Elektronische relais schakeling – NPN, PNP, N & P kanaal relais schakelaars
- LED roulette schakeling met 555 timer & 4017 teller
- Elektronische stroomonderbreker – schema en werking
- Infrarood bewegingdetector schakeling
- Eenvoudige gevoelige aanraakschakelaar schakeling
- Basis spanningsverdubbelaar schakeling met 555 timer IC
- Dubbele voeding schakeling – 230VAC naar ±12VDC
- Eenvoudige GSM lader schakeling – 5V van 230V AC
Industriële technologie
- LM35-gebaseerd temperatuurregelsysteem met AT89S52 microcontroller
- Een DTMF-decoder bouwen met alleen een Arduino – Geen extra IC's nodig
- Betrouwbaar Arduino RFID Aanwezigheidssysteem Aangedreven door Python
- Arduino Uno Gebaseerde Mensendetectie Robot: Stap-voor-stap Sensorintegratie
- SERENA: Een Aangepast Arduino Mega 2560 Alarmsysteem Met TFT LCD Touchscreen
- Real-time Bosbrandbewakingssysteem met SMS-alarmen
- Geavanceerd Valdetectiesysteem met Arduino, Windows IoT en Azure Cloud
- Geavanceerd Arduino Botsingswaarschuwingsysteem – Visuele & Audio Alerts voor Voertuigveiligheid
- Symphony Link: Betrouwbare waterlekdetectie voor datacenters
- Waarom Biz4Intellia's IoT Waterlekdetectie Industriële Efficiëntie Boost – 5 Belangrijkste Voordelen
- C# using-statements: imports, aliasen en static directives