Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

Komponenten und Materialien

Komponente Menge
Arduino MKR1000 (MKR FOX 1200) 1
Wasserstandssensor 1
pH-Sensor 1
LED (weiß, falls möglich) 1
Widerstand 220 Ohm 2
Fotowiderstand (LDR) 1
Jumper-Kabel 1 Set

Benötigte Werkzeuge

Apps und Online-Dienste

Über das Projekt

Übersicht

Ein Fluss oder See kann Erholung bieten – wird er schmutzig und kontaminiert, ist der Spaß vorbei. Viele Menschen sind auf Flusswasser für ihre Tiere angewiesen und können kein dreckiges Wasser riskieren.

Stellen Sie sich vor, Sie wohnen direkt am Fluss: Sie wollen nicht nachts von einer Überschwemmung überrascht werden. Oder ein Nachbar kippt Benzin in den Fluss – Ihre Tiere sollen nicht krank werden.

MyRiver löst all diese Probleme: Dank Sigfox funktioniert es in abgelegenen Gebieten, damit jeder Zugriff hat. Das Gerät misst pH-Wert, Verschmutzungsgrad (innovative Methode) und Wasserstand. Live-Monitoring auf Handy/PC überall via Wia. Sofortige Benachrichtigung bei Problemen.

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

Funktionsweise

Basiert auf Arduino MKR FOX (für Remote-Einsatz). SAM D Low-Power-Modus ermöglicht monatelangen Betrieb mit 2 AA-Batterien.

Messintervall: alle 30 Minuten, dann Deep Sleep (min. 20 Min. Schlaf).

Sensoren:

Daten → Sigfox (12 Bytes HEX) → Wia → Verarbeitung & Visualisierung → Benachrichtigung.

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

Datenverarbeitung (Code-Logik)

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem
  1. Read Sensors – pH, Wasserstand, LDR einlesen & in Variablen speichern
  2. Format Buffer – 3 Werte in 12-Byte-Puffer packen (je 4 Bytes)
  3. Parse Data – Puffer an Sigfox senden

Sigfox limitiert auf 12 Bytes. Alle Sensoren geben 0-1023 (10-bit ADC). Jeder Wert = 4 Bytes (mit führenden Nullen aufgefüllt).

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

Beispiel: LDR=620 → "0620", Wasserstand=24 → "0024". Zusammen: 12-Byte-String → Sigfox.

Gerät im Einsatz

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

Vorteile

Projektbau

Schritt 1: Benötigte Bauteile

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

Schritt 2: Schaltung aufbauen

Schaltung nicht auf Breadboard – alle Komponenten werden verlötet. Bei Schwierigkeiten: Fritzing-Datei herunterladen und virtuell verdrahten.

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem
River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem
River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

MKR FOX vorbereiten

Batteriehalter & Antenne anschließen (Batterie erst NACH Sensoren). Weitere Verkabelung unter "Final".

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem
River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem
River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem
River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem
River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

Schritt 3: Code verstehen

3 Hauptteile:

1. Sensoren lesen

struct GetValue {
  int riverLevel() { // Wasserstand
    const int val = analogRead(A2);
    if(proDebug) { Serial.print("River Level "); Serial.println(val); }
    return val;
  }
  int riverPh() { // pH-Wert
    const int val = (analogRead(A1) / 5 * 3.3);
    if(proDebug) { Serial.print("River Ph "); Serial.println(val); }
    return val;
  }
  int riverPol() { // Verschmutzung (LDR)
    const int val = analogRead(A3);
    if(proDebug) { Serial.print("River Pollution "); Serial.println(val); }
    return val;
  }
};

2. Buffer formatieren

String data(int level, int ph, int pol) {
  int values[3] = {level, ph, pol};
  String newValues;
  for(int i = 0; i < 3; i++) {
    if(values[i] < 10) { newValues += "000"; }
    else if(values[i] < 100) { newValues += "00"; }
    else if(values[i] < 1000) { newValues += "0"; }
    newValues += values[i];
  }
  return newValues;
}

3. An Sigfox senden

void parseData(String data) {
  SigFox.beginPacket();
  SigFox.print(data);
  int ret = SigFox.endPacket();
}

Schritt 4: Wia-Sigfox Integration einrichten

Voraussetzungen: Sigfox-Account, Wia-Account, Wia-App (iOS/Android) für Push-Benachrichtigungen.

Sigfox Callback konfigurieren:

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

Schritt 5: Wia Flow einrichten

Der Flow konvertiert HEX→String, parst die 3 Sensorwerte, wandelt um:

Schritt-für-Schritt-Anleitung mit Screenshots (im Original). Hier die wichtigsten Wia Functions:

processPayload (HEX → String)

if(input.body) {
  output.body.name = "value";
  output.body.data = toByteArrayStr(input.body.data.sigfoxData);
}
function toByteArrayStr(sigfoxData) {
  let result = Buffer(sigfoxData, 'hex');
  return result.toString('utf8');
}

riverPollution (LDR → POLLUTED/OK)

let minVal = 200; // Schwelle anpassen!
if(input.body.data.sigfoxData) {
  let data = input.body.data.sigfoxData;
  let processedData = toByteArrayStr(data);
  let newData = cutString(processedData); // Bytes 8-11
  output.body.name = "waterPollution";
  output.body.data = processData(newData);
}
function cutString(data) { /* Bytes 8-11 extrahieren */ }
function processData(data) {
  return (data < minVal) ? "POLLUTED" : "OK";
}

riverPh (Raw → pH-Wert)

let minVal = 300, maxVal = 600; // Rohwerte für pH 6.5-8.5
// Bytes 4-7 extrahieren, /73.1428571 → pH mit 2 Dezimalstellen

riverLevel (Wasserstand → HIGH/OK)

let minVal = 0, maxVal = 200; // Schwelle anpassen!
// Bytes 0-3 extrahieren

E-Mail-Vorlagen

Variablen einstellen

LDR-Schwelle (minVal in riverPollution) muss kalibriert werden: Test-Code aufspielen, LDR-Werte im sauberen Wasser notieren, Schwelle setzen.

void setup() { pinMode(1, OUTPUT); Serial.begin(9600); while(!Serial); digitalWrite(1, HIGH); }
void loop() { const int val = analogRead(A3); Serial.println(val); delay(5000); }

proDebug (default false): true = Serial-Ausgaben für Debugging (USB-Verbindung nötig).

Bibliotheken

Schritt 6: Finale Montage & Gehäuse

Code hochladen, Batteriehalter anschließen, Schaltung prüfen.

Gehäuse: Aus einer Wasserflasche (ökologisch & wasserdicht).

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

Bau-Schritte (Bilder im Original): Flasche zuschneiden, Sensoren positionieren, abdichten, Elektronik einbauen.

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

Installation am Fluss

Wichtig: Bei Hochwasser (High Tide) installieren, damit Gezeiten nicht als Hochwasser-Alarm gewertet werden.

Flaschenhals mit Klebeband abdichten. Sonde so positionieren: Wasserstandssensor unten im Wasser, Fotowiderstand vollständig bedeckt. Am Ufer befestigen (Klebeband oder Schrauben).

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

Test an dreckigem Fluss: Alle Alarme funktionierten korrekt.

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

Hintergrund

Ein sauberer Fluss vor dem Fenster – oder ein grüner, schlammiger? Nachts flutet der Fluss ins Haus? MyRiver warnt rechtzeitig.

In der Stadt: Warnung vor illegaler Einleitung (Öl, Chemikalien). Auf dem Bauernhof: Warnung vor dreckigem Trinkwasser für Tiere & vor Überschwemmung.

Nur pH messen reicht nicht – unlösliche Schadstoffe (Quecksilber, Metalle) ändern den pH nicht. Neuartige Methode dieses Projekts: LED + Fotowiderstand detektiert Trübung/Partikel im Wasser. So wird jede Verunreinigung erkannt.

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

Code

Vollständiger Code: MyRiver (Download im Original)

Schaltplan

River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem

Fritzing-Datei: schematics_lXO5SiusZO.fzz

Herstellungsprozess

  1. Lambda-Sonde (O2-Sensor) verstehen: Rolle, Position und Ausfallanzeichen
  2. Raspberry Pi Heimtemperaturmonitor mit MCP9808, InfluxDB & Grafana bauen
  3. Emotionssensor & EEG: Günstige Hardware für Echtzeit-Emotionserkennung
  4. Präzise Druck- & Luftstrommessung mit analogem Sensor und Arduino
  5. DHT11 Temperatur- & Feuchtesensor mit LED-Anzeige & Piezo-Summer
  6. UnifiedWater v1 – Komplettes Arduino Wasserqualitäts-Sensorkit
  7. 3D RGB Arduclock – Bluetooth-LED-Uhr mit Echtzeituhr
  8. Einfachen Hindernissensor mit Arduino bauen – IR-LED & Photodiode Tutorial
  9. Interaktives Joystick-Spiel mit Arduino & LED-Feedback
  10. Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth