Echtzeit-Wasserqualitäts-Monitoring mit Arduino & GPRS/GPS
Komponenten und Zubehör
![]() |
|
× | 1 | |||
|
× | 1 | ||||
|
× | 1 |
Notwendige Werkzeuge und Maschinen
![]() |
|
Apps und Online-Dienste
![]() |
|
|||
![]() |
|
Über dieses Projekt
Einführung
Im September 2016 musste ein Wasserwerk stillgelegt werden, weil verschmutztes Wasser in die Anlage floss. Der Wasserversorger konnte die Kontaminationsquelle nicht lokalisieren, was zu einer ernsthaften Unterbrechung der Wasserversorgung führte.
Mein Universitätskurs verlangt von den Studierenden, ein System zu bauen, das Gemeinschaftsprobleme löst. Ein automatisiertes Wasserqualitäts-Monitoring-System würde die Suche nach der Verschmutzungsquelle erleichtern!
Systemüberblick

4 Sensoren sind an den Arduino Genuino 101 angebunden. Alle erfordern eine Interface-Schaltung, da sie Stromausgangssensoren sind. Der Arduino Genuino 101 sammelt die Messdaten periodisch, ermittelt die GPS-Koordinaten und lädt das Datenbündel über die GPRS-Datenverbindung in eine Datenbank hoch. Nutzer können auf der Website die Ergebnisse einsehen, wie unten gezeigt.
Sensor-Sonden

Die drei Stromausgangssensoren stammen von Global Water, bereitgestellt vom betreuenden Dozenten. Ich verwende Temperatur-, pH- und Gelöst-Sauerstoff-Sensoren in diesem Projekt. Leider ist der Gelöst-Sauerstoff-Sensor defekt.
Der andere Sensor ist ein Trübungssensor, der ein Spannungssignal proportional zur Menge der suspendierten Feststoffpartikel im Wasser ausgibt.
Sensoren und Arduino verbinden
Ein Widerstand wandelt den Stromausgang in ein messbares Spannungssignal um.
A7 GPRS und GPS Modul

Ich wählte dieses A7-Modul, weil es relativ günstiger als die SIM900-Variante ist und sowohl GPRS als auch GPS in einem einzigen Gehäuse kombiniert!
Der günstigere Preis hat jedoch seinen Preis. Erstens ist die mitgelieferte GPS-Antenne nicht wirklich eine GPS-Antenne – man muss sich selbst eine besorgen. Zweitens unterstützt es standardmäßig nur 115200 Baud UART-Kommunikation, und selbst wenn man es per Software ändert, kehrt es nach einem Stromzyklus zum Standard-Baudrate zurück, und Software Serial bei 115200 Baud ist extrem unzuverlässig. Ich habe mir 2 Tage lang die Haare gerauft wegen dieses Problems. Danach implementierte ich eine Baudrate-Änderungsfunktion im Arduino-Code.
Und da es ein neues Modul ist, musste ich meine eigene Bibliothek dafür erstellen. Der Quellcode stammt aus verschiedenen Quellen, wie SIM900 und Adafruit GPS Modul. Er ist unordentlich, aber er funktioniert – bitte verurteilt mich nicht.
Eine Schaltung muss entworfen werden, um das Modul einzuschalten. Es hat zwei Pins, RESET und PWR_KEY, die gesteuert werden müssen. Eine Spannung wird für mindestens 2 s an PWR_KEY angelegt, um das Modul zu booten. Zum Reset wird der RESET-Pin auf GND gezogen. Ansonsten sollte RESET auf 5 V hochgezogen sein. Ich resette das Modul zuerst und schalte es dann ein, um sicherzustellen, dass es korrekt startet.
Stromversorgung
Die Stromversorgung verdient eine besondere Erwähnung (denke ich?) wegen der Stromausgangssensoren. Sie benötigen mindestens 10 V zum Betrieb, höher als unsere geliebten 5 V. Da ich die Fähigkeit des Systems demonstrieren wollte, remote zu arbeiten, entschied ich mich für Li-Ion-Batterien.

2 Li-Ion-Batterien in Reihe liefern 7,4–8,4 V, ein Buck-Converter bringt sie auf 5 V für Arduino und A7-Modul herunter, ein Boost-Converter liefert eine 11-V-Schiene für die Wassersensoren. Mit diesem Setup läuft das System nicht lange, aber das ist für diesen Prototyp nicht das Hauptanliegen.
Die Platine
Das System ist auf einer Lochrasterplatine aufgebaut. Die Platine und der Arduino Genuino 101 passen gut in das Gehäuse.

Gehäuse
Der Dozent gab auch ein altes Gehäuse, mit Löchern, die von früheren Studenten für Projekte mit den Wassersensoren gebohrt wurden. Wunderbar!

Beachten Sie die Anschlüsse zu den Sensoren. Ich fand sie an den Sensoren angebracht, also suchte ich nach passenden Gegenstücken. Ich fand sie mit dem Code GX16. Sie sind sehr vielseitig und werden sicher in zukünftigen Projekten nützlich sein!
Webseite
Schließlich der Teil, der mich Wochen kostete, von Grund auf zu bauen. Ich hatte null Kenntnisse in Server, Website und lernte im Laufe dieses Projekts PHP, SQL-Abfragen, JavaScript, CSS und HTML.
Ich hostete die Website auf Microsoft Azure, weil sie einen kostenlosen Service für Studenten anbieten. Er hat Einschränkungen, reicht aber für diese Anwendung.
Die Datenbank wird von ClearDB bereitgestellt, in Partnerschaft mit Azure. Wieder Speicherbeschränkungen, aber ausreichend für dieses Projekt.
Die Codes sind im Repository, aber denken Sie daran, Ihre Zugangsdaten in die Datei username_password.php einzutragen.
Die Datei log.php speichert alle vom Arduino empfangenen Daten in der Datenbank.
Dann zeigt die Webseite eine Google Map mit Markern an Orten, an denen Messdaten vorliegen. Die anderen PHP-Dateien sind alles „Tools“, um auf die Datenbank zuzugreifen und die Daten abzurufen.
Die Antwortzeit der Website ist recht langsam, und da ich das alles nur zusammengehackt habe, möchte ich es verbessern. Vorschläge sind sehr willkommen! :)
Code
Wasserqualitäts-Monitoring-System
Website-Codes in /Website, Arduino-Sketches und A7-Modul-Bibliothek in /Arduino
https://github.com/JohnHJ01/Water-Quality-Monitoring-System
Schaltpläne
Schaltpläne für das gesamte System
Herstellungsprozess
- Raspberry Pi-gesteuertes Aquaponik-System: Bauanleitung & Code
- Luftqualität messen mit OpenSensors: Arduino & Python Anleitung
- Smartes System zur Luftqualitäts- & Abfallüberwachung mit Raspberry Pi, Arduino & IOTA
- K30 CO₂-Sensor: Echtzeit-Luftqualitätsmessung mit Arduino
- SERENA: Eigenes Arduino Mega 2560 Alarmsystem mit TFT-LCD-Touchscreen
- Intelligente, bewegungsaktivierte Wasserpistole mit Arduino Nano
- Berührungsloses Temperatur-Überwachungstor für schnelles Screening
- Echtzeit-Waldbrand-Überwachungssystem mit SMS-Alarm
- Intelligente Kellerbelüftung: Arduino-gesteuerte Feuchteregelung
- IoT-gestützte Umgebungsluft-Qualitätsüberwachung: Sicherheit, Produktivität & Nachhaltigkeit



