UnifiedWater v1 – Komplettes Arduino Wasserqualitäts-Sensorkit
Komponenten und Zubehör
| Arduino MKR GSM 1400 | × | 1 |
| Adafruit NeoPixel Ring: WS2812 5050 RGB LED | × | 1 |
| GY21 Temperatur- und Feuchtigkeitssensor | × | 1 |
| Trübungssensor, Phototransistor-Ausgang | × | 1 |
| Adafruit Wasserdichter DS18B20 Digitaler Temperatursensor | × | 1 |
| DFRobot Gravity: Analoger Spitzen-pH-Sensor / Messkit | × | 1 |
| SparkFun Drucktaster 12mm | × | 1 |
| Jumper-Kabel (generisch) | × | 1 |
| Widerstand 220 Ohm | × | 1 |
Benötigte Werkzeuge und Maschinen
- Lötkolben
Apps und Online-Dienste
- Arduino Web Editor
- SORACOM Air IoT Connectivity Platform
- SORACOM Harvest
- SORACOM Lagoon
Über dieses Projekt
Übersicht
Flüsse. Essenziell für unser Überleben, Handel und mehr. In den letzten zehn Jahren wurden große Anstrengungen unternommen, um unsere Verschmutzung der weltweiten Gewässer zu reduzieren. Die Flüsse sind die Quelle der Verschmutzung, da Menschen nicht ins Meer gehen, um ihren Müll zu entsorgen. Sie werfen ihn in die Flüsse.
Diese Flüsse münden dann in das Meer, den Ozean und so findet sich die Zahnbürste, die einst in einen Fluss geworfen wurde, auf der anderen Seite der Welt wieder.
In einer Welt, die versucht, Verschmutzung zu bekämpfen, sind Daten entscheidend. Es sollte für Unternehmen und Organisationen einfach sein, an einem globalen Projekt zur Reduzierung der Wasserverschmutzung zusammenzuarbeiten. Hier kommt UnifiedWater ins Spiel.
Ein Gerät, das günstig und skalierbar genug ist, um diese Daten einfach zu sammeln und zu analysieren, die so notwendig sind, um zu wissen, wie stark ein Fluss verschmutzt ist. WaterAid kommt in 2 Modi: einer für Unternehmen und einer für Einzelpersonen.
Mehrere Geräte können zusammenarbeiten, an verschiedenen Punkten entlang eines Stroms oder in verschiedenen Gewässern platziert. Diese Geräte sammeln Daten in einem festgelegten Zeitintervall und senden sie an dieselbe Datenbank. Dies ermöglicht dem Unternehmen, den Status des überwachten Flusses oder Sees per Knopfdruck zu überprüfen.
Eine tragbare Version des Geräts ist ebenfalls verfügbar. In dieser Version kann die Person das Gerät bei sich tragen und wenn sie eine Wasserprobe entnehmen möchte, drückt sie einen Knopf am Gerät und hält es 30 Sekunden ins Wasser. Die Daten sind dann auf einem Online-Dashboard verfügbar.
Durch Erfassung von Wassertemperatur, pH-Wert und Trübung sowie atmosphärischer Temperatur und Luftfeuchtigkeit ist WaterAid mit allen Sensoren ausgestattet, die Sie zur Überwachung der Flussverschmutzung benötigen.
Funktionalität
WaterAid ermöglicht dem Nutzer – Unternehmen oder Einzelpersonen – Daten sicher und genau zu sammeln und all diese Daten an einem Ort zu visualisieren, dank Soracoms Cloud. Das Projekt besteht aus einem Frontend und einem Backend.
Frontend
Das Frontend des Projekts ist das physische Gerät, das zur Datensammlung und -übertragung in die Cloud verwendet wird. Das Gerät kann in Modus 1 oder 2 versetzt werden. Im Modus 1 zeichnet das Gerät einen Datensatz per Knopfdruck auf – nützlich für gelegentliche Überwachung eines Gewässers. Modus 2 setzt das Gerät so, dass es in einem definierten Zeitintervall Messwerte nimmt und diese in die Cloud pusht.
Ein MKR GSM wird für das Frontend verwendet, da er einfach zu bedienen und zuverlässig ist. Er kann auch über GSM auf Soracom zugreifen. Unten sind die Schritte, die das Gerät bei der Datensammlung durchläuft.
Batterie
Das Gerät kann auf verschiedene Weise mit Strom versorgt werden: über einen LiPo-Akku über den vorgesehenen Anschluss, über eine Powerbank oder durch Anschluss einer Batterie über den VIN-Pin am Gerät.
Die Lebensdauer des Geräts hängt stark von der Batteriekapazität ab. Das Gerät geht zwischen den Messungen in den Schlafmodus, um so viel Energie wie möglich zu sparen.
LED-Ring
Das Gerät ist auch mit einem LED-Ring ausgestattet. Dieser gibt dem Nutzer Feedback darüber, was das Gerät gerade tut. Es gibt 3 Modi, in denen der Ring sein kann:
- Mehrfarbig zeigt an, dass das Gerät sich einrichtet oder Daten verarbeitet
- Blinkend Rot eine Warnung, meist bedeutet es, dass das Gerät ins Wasser gelegt werden muss, könnte aber auch einen Fehler anzeigen
- Fortschreitend Blau oder Grün zeigt an, dass das Gerät gerade eine Probe nimmt und ins Wasser gelegt werden sollte.
Probe nehmen
Alle Sensoren des Geräts sollten im Wasser sein, wenn das Gerät eine Probe nimmt. Eine 6-sekündige Verzögerung wird vor der Probenahme eingefügt, um die Sensoren aufzuwärmen. Für beste Ergebnisse sollten die Sensoren während des Aufwärmens bereits unter Wasser sein.
Daten verarbeiten
Die Daten müssen als JSON-String an Soracom gesendet werden. Dies gibt allen verwendeten Schlüsseln einen Wert. Die Daten sind dann für das Backend leicht zu interpretieren. Unten ist ein Beispiel für eine Payload, die gesendet würde:
{
"Latitude":53.3474617,
"Longitude":-6.2514529,
"waterpH":7.30,
"waterTurbidity":94,
"waterTemp":12.10,
"atmoTemp":14.50,
"atmoHum":82,
"deviceID":1,
"deviceName":"device1",
"epoch":1559392636,
"mode":2
}
Backend
Das Backend des Projekts bezieht sich auf Soracom. Daten werden im Backend auf Dashboards gesammelt und visualisiert. Diese Dashboards werden mit Soracom Lagoon erstellt.
Das Dashboard
Das Dashboard fasst alle vom Gerät gesammelten Daten zusammen. Es zeichnet die Orte, an denen Daten gesammelt wurden, auf einer Karte ein, die Farbe variiert je nach Verschmutzungsgrad des Wassers. Die Daten werden dann in Liniendiagrammen darunter grafisch dargestellt und vollständig in einer Tabelle zusammengefasst.
Der Nutzer erhält auch E-Mail-Benachrichtigungen, wenn der pH-Wert oder die Trübung des Wassers abnormale Werte annehmen.
Skalierbarkeit
Das Gerät lässt sich leicht skalieren und alle Daten können auf demselben Dashboard gesammelt und veranschaulicht werden. Mehrere Geräte können Daten an Soracom streamen und die Daten auf dem Dashboard visualisieren.
Der Preis des Geräts und die extreme Einfachheit beim Bau und der Programmierung machen es einfach, eine Flotte von Geräten einzusetzen. Diese Geräte können auch leicht mit Tools wie Soracom Krypton in Soracom registriert werden.
Jedes Unternehmen oder jeder Einzelne wird sein persönliches Dashboard haben, auf dem die Daten seiner Geräte visualisiert werden. Hoffentlich können Menschen in naher Zukunft auf demselben Dashboard zusammenarbeiten und ihre Daten miteinander teilen.
Vorteile
Der Einzelne oder das Unternehmen, das dieses Produkt nutzt, profitiert von:
- Reduzierte Betriebskosten, da das Gerät sehr autark ist.
- Leicht skalierbar, das Gerät kann problemlos solo oder in einer Flotte von Dutzenden anderen arbeiten.
- Schnelle Datensammlung, sodass Daten in Echtzeit in die Cloud gepusht und visualisiert werden können.
- Einfache Visualisierung, Daten können überall und jederzeit über das Online-Dashboard eingesehen werden.
Projektbau
Schritt 1: Benötigte Apparatur
Dieses Projekt erfordert viele Sensoren, die viele Parameter überwachen, die mit dem Wasser und der Atmosphäre, in der es platziert ist, zusammenhängen. Unten ist eine Liste aller benötigten Materialien.
- 1x Arduino MKR GSM
- 1x 16 LEDs RGB LED-Ring
- 1x GY-21 Temperatur- und Feuchtigkeitsmodul
- 1x Trübungssensor
- 1x Wasserdichter Temperatursensor
- 1x pH-Sensor und Modul
- 1x Drucktaster
- 1x Widerstand (220Ω)
- Jumper-Kabel
Schritt 2: Schaltung verbinden
Die Komponenten sollten zusammen gelötet werden. Zur Erleichterung des Verständnisses der Schaltpläne wurde ein Breadboard verwendet. Die Schaltpläne finden Sie unten.
MKR GSM vorbereiten
Nachdem die Sensoren an das Gerät gelötet wurden, müssen die SIM-Karte, die GSM-Antenne und die Batterie an das Gerät angeschlossen werden. Ich versorge das Board mit 2 AA-Batterien über den VIN-Port.
Schritt 3: Code verstehen
Es gibt 4 Hauptabschnitte im Code des Projekts:
- Sensordaten sammeln
- Zeit und Datum ermitteln
- Daten verarbeiten
- Daten senden
Alle diese Abschnitte werden unten beschrieben und detailliert.
Sensordaten sammeln
Der obige Codeabschnitt beginnt damit, 6 Sekunden auf die Kalibrierung der Sensoren im Wasser zu warten. Das Gerät durchläuft dann 16-mal eine Schleife, bei jeder Schleife leuchtet eine neue LED am Ring auf.
Daten von Sensoren mit schwankenden Werten werden 16-mal gesammelt und dann der Mittelwert gebildet. Die hochpräzisen Sensoren werden in der letzten Schleife einmal eingelesen.
Zeit und Datum ermitteln
Die erste Schleife handhabt die Anmeldedaten. Die Zeit wird vom onboard RTC extrahiert, da sie im Setup mit dem GSM-Netzwerk synchronisiert wurde. Die Geolokalisierung wird aus GPRS extrahiert.
Daten verarbeiten
processData() berechnet den Mittelwert der von den schwankenden Sensoren gesammelten Daten und gibt dann alle Daten an den Serial Monitor aus.
makeLine() kompiliert alle Daten in den JSON-String, der an Soracom gesendet wird. Alle Werte werden in einen JSON-Puffer geparsed, bereit zum Senden an das Backend.
Daten senden
Schließlich werden die Daten an Soracom gesendet. Das Gerät baut eine Verbindung zum Server auf und bereitet die Anmeldedaten vor. Die Daten werden an den Server gesendet und die Antwort wird an den Serial Monitor ausgegeben.
Das Gerät geht dann in den Schlafmodus, bis ein Trigger es aufweckt, und wiederholt die Schritte erneut.
Schritt 4: Variablen einrichten
Es gibt bestimmte Variablen, die vor der Verwendung des Projekts bearbeitet werden müssen. Diese sind unten aufgelistet. Anweisungen zur Einrichtung sind ebenfalls unten.
mode– der Modus des Geräts bestimmt, ob es periodisch Proben nimmt oder bei Betätigung eines Knopfs. Wenn diese Variable auf 1 gesetzt ist, muss das Gerät über einen Knopf ausgelöst werden. Wenn der Modus auf 2 gesetzt ist, nimmt das Gerät periodisch Proben.deviceID und deviceName– dies sind benutzerdefinierte Variablen, die zur Identifizierung des Geräts verwendet werden, wenn eine Flotte von Geräten genutzt wird. Jedes verwendete Gerät sollte eine eindeutige ID und einen Namen erhalten, damit sie leicht identifiziert werden können.sleepTime– speichert die Zeit, die das Gerät zwischen den Messungen schläft. Im Code auf 5 Sekunden gesetzt, was für Tests angemessen ist, muss aber im Feldeinsatz geändert werden. Eine Probe könnte z.B. alle 15 Minuten genommen werden.proDebug– wird beim Debuggen verwendet, im Code auf false gesetzt. Wenn der Serial Monitor beim Debuggen benötigt wird, sollte er auf true gesetzt werden. Beachten Sie, dass das Gerät auch dann auf den Serial Monitor ausgibt, wenn Debug aus ist. Wenn Debug an ist, läuft das Gerät nicht, solange der Serial Monitor nicht offen ist.
Schritt 5: Code hochladen
Bevor das Backend eingerichtet wird, müssen Daten dorthin gesendet werden. Verbinden Sie Ihren MKR GSM mit Ihrem Computer und laden Sie den Code auf das Gerät hoch, stellen Sie sicher, dass der Modus des Geräts für dieses Setup auf 1 eingestellt ist. Nach dem Hochladen des Codes alle Sensoren ins Wasser legen. Nun den Knopf am Gerät drücken und warten, bis die Daten gesammelt und gesendet sind. Dies ein paar Mal wiederholen, um Soracom Air zu füllen.
Schritt 6: Soracom einrichten
Dieser Schritt ist in 2 Abschnitte unterteilt: der erste behandelt die Erstellung eines Kontos bei Soracom und die Registrierung Ihrer SIM, der zweite die Einrichtung von Soracom Harvest zur Datensammlung aus Air. Wenn Sie bereits ein Soracom-Konto haben, überspringen Sie den ersten Abschnitt.
Abschnitt 1: Konto erstellen – Screenshots im Originalprojekt verfügbar.
Abschnitt 2: Gruppen und Harvest – Screenshots im Originalprojekt verfügbar.
Schritt 7: Lagoon einrichten
Das Letzte, was auf Soracom einzurichten ist, ist Lagoon – das Tool, das wir zur Visualisierung unserer Daten und zur Erstellung von E-Mail-Benachrichtigungen bei schlechten Daten verwenden. Folgen Sie den Schritten unten. Screenshots im Originalprojekt verfügbar.
Kalibrierungsprobleme
Die Trübungs- und pH-Sensoren müssen kalibriert werden, um präzise genutzt werden zu können. Sie könnten feststellen, dass die Trübung 105% beträgt oder der pH-Wert von Wasser 3 anzeigt. In diesem Fall müssen die Sensoren kalibriert werden. Eine Kurzanleitung:
- pH-Sensor: Der pH-Sensor kann mit den Potentiometern am Modul kalibriert werden. Legen Sie die Sonde in stilles Flaschenwasser mit pH 7 und warten Sie 5 Minuten. Entwickeln Sie nun einen Code, der den pH-Wert des Sensors auf dem Serial Monitor ausgibt. Drehen Sie das Potentiometer, bis der pH-Wert 7 anzeigt.
- Trübungssensor: Der Trübungssensor ist nicht sehr präzise, daher wird ein relativer Prozentsatz im Vergleich zu reinem Wasser genommen. Um den Wert von reinem Wasser zu verfeinern: Wenn Ihre Messwerte 100% Trübung überschreiten, müssen Sie den Trübungssensor in reines Wasser legen und einen Code entwickeln, der die Spannung am analogen Pin des pH-Sensors auf dem Serial Monitor ausgibt. Eine Variable namens
calibrationfindet sich insensors.h, ändern Sie den Wert dieser Variable auf die empfangene Spannung, als die Sonde in reinem Wasser war.
Bibliotheken
- ArduinoLowPower (c) 2016 Arduino LLC GNU LGPL
- Adafruit_Neopixel (c) Phil Burges LGPL
- MKRGSM (c) 2016 Arduino AG GNU LGPL
- Wire (c) 2006 Nicholas Zambetti GNU LGPL
- OneWire (c) 2007 Jim Studt GNU GPL
- DallasTemperature GNU GPL
- RTCZero (c) 2015 Arduino LLC GNU LGPL
Abschluss
Schließlich habe ich ein Gehäuse für das Projekt gebaut, das leicht tragbar ist, aber fest installiert werden kann, um Proben sowohl in Modus 1 als auch 2 zu sammeln. Bilder im Originalprojekt verfügbar.
Stellen Sie abschließend sicher, dass der Modus entsprechend eingestellt ist, und beginnen Sie mit der Nutzung des Geräts im Feld. Überprüfen Sie Ihren lokalen Fluss oder See und sehen Sie, wie sauber er ist. Spielen Sie mit dem Dashboard und entdecken Sie, welche anderen Widgets es hat.
Hintergrund
Heute sind Daten die neue Währung und sie einfach und effizient zu sammeln, ist der Schlüssel zu einer besseren Umwelt. Indem wir die Verschmutzung von Flüssen und Seen gemeinsam messen, können wir das Bewusstsein schärfen, dass die Gewässer schmutziger werden und etwas getan werden muss.
Ich suchte eine Idee für den Soracom-Wettbewerb und fühlte, dass ich etwas Umweltförderndes bauen musste. Die Idee, dass Menschen und Unternehmen gemeinsam an kollektiven Dashboards arbeiten, um den Status von Flüssen und Seen weltweit zu visualisieren, hat mich inspiriert, dieses Projekt anzugehen.
Was werden Sie tun, um die Wasserverschmutzung zu stoppen? Denn Handeln muss heute geschehen, morgen ist einen Tag zu spät.
Code
Das Repository für das Projekt: GitHub-Link
Schaltpläne
Schaltplan-Datei (Fritzing) im Originalprojekt verfügbar.
Herstellungsprozess
- Lambda-Sonde (O2-Sensor) verstehen: Rolle, Position und Ausfallanzeichen
- LED mit PIR-Bewegungsmelder am Raspberry Pi steuern
- Günstiger Raspberry Pi Bodenfeuchtesensor für smarte Bewässerung
- DS18B20 Temperatursensor am Raspberry Pi testen
- Raspberry Pi Heimtemperaturmonitor mit MCP9808, InfluxDB & Grafana bauen
- Sensor Telemetrie 2.0.1 – Fortschrittliche Temperaturüberwachung mit Azure IoT Hub
- Emotionssensor & EEG: Günstige Hardware für Echtzeit-Emotionserkennung
- Adafruit 10DOF IMU Daten von Raspberry Pi 2 an Azure Event Hubs senden (Windows 10 IoT Core)
- River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem
- Sensorturm mit Arduino Cloud: Temperatur, Bewegung & Gase überwachen