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

IoT-Wasserqualitätssensor-System – Arduino-basierte Echtzeitüberwachung

Komponenten und Materialien

Arduino UNO×1
Jumper-Kabel (männlich/weiblich)×1
HC-05 Bluetooth-Modul×1
RGB-LED (gemeinsame Kathode)×1
Widerstand 330 Ω×3
Drehpotentiometer×1
RGB LCD Shield Kit, 16x2 Zeichen×1
Widerstand 1 kΩ×1

Benötigte Werkzeuge und Maschinen

Apps und Online-Dienste

Über dieses Projekt

Wasser ist eine lebenswichtige Ressource. Wir müssen sicherstellen, dass es eine gute Qualität für den Gebrauch hat.

Was ist TDS?

TDS steht für Total Dissolved Solids (gesamte gelöste Feststoffe). Es gibt die Menge der in einer bestimmten Wassermenge gelösten Feststoffe in ppm (parts per million) an. TDS wird basierend auf der elektrischen Leitfähigkeit [S/m] berechnet. Je höher die Leitfähigkeit, desto höher der TDS-Wert. Hier sind typische TDS-Werte verschiedener Wasserarten:

Die WHO empfiehlt für Trinkwasser einen TDS-Wert unter 300 ppm. Wasser unter 100 ppm sollte jedoch nicht getrunken werden, da es essentielle Mineralien fehlen. Wasser über 300 ppm gilt als zu „hart“, da es mehr Mineralien enthält als nötig.

Normalerweise misst man TDS mit einem TDS-Stift. Da dieser sich nicht in Arduino integrieren lässt, gibt es spezielle TDS-Messmodule für Arduino. In diesem Projekt wurde jedoch auf ein solches Modul verzichtet.

IoT-Wasserqualitätssensor-System – Arduino-basierte Echtzeitüberwachung

Die Schaltung

Arduino

IoT-Wasserqualitätssensor-System – Arduino-basierte Echtzeitüberwachung

LCD-Display

IoT-Wasserqualitätssensor-System – Arduino-basierte Echtzeitüberwachung

HC-05 Bluetooth-Modul

IoT-Wasserqualitätssensor-System – Arduino-basierte Echtzeitüberwachung

RGB-LED

IoT-Wasserqualitätssensor-System – Arduino-basierte Echtzeitüberwachung

Herleitung zur Berechnung des Widerstands zwischen den freien Drähten

Wir nutzen das Ohmsche Gesetz: V = I × R.

IoT-Wasserqualitätssensor-System – Arduino-basierte Echtzeitüberwachung

Obwohl ein Draht zwischen den beiden Widerständen (R₁ = 1000 Ω, R₂ = Widerstand zwischen den freien Drähten) zum analogen Pin A0 führt, kann der Widerstand dieses Drahts vernachlässigt werden; es fließt minimaler Strom hindurch. Daher sind R₁ und R₂ in Reihe geschaltet.

Daraus folgt: V₁ = I·R₁ und V₂ = I·R₂. Also V₂/V₁ = R₂/R₁. V₂ ist unbekannt, aber in einer Reihenschaltung gilt V₁ + V₂ = V = 5 V, also V₂ = 5 – V₁.

Einsetzen ergibt: (5 – V₁)/V₁ = R₂/R₁. Definieren wir buffer = (5 – V₁)/V₁, so ist R₂ = buffer × R₁.

Funktionsweise

Wir berechnen den Widerstand des Testwassers und daraus den spezifischen Widerstand (Widerstandswiderstand). Dabei müssen Länge und Querschnittsfläche des Behälters berücksichtigt werden:

R = ρ·L/A  ⇒  ρ = R·A/L

Aus dem spezifischen Widerstand erhalten wir die Leitfähigkeit:

c = 1/ρ

Schließlich berechnen wir TDS aus der Leitfähigkeit:

TDS = c × 7000

Bibliotheken

Sie können die Bibliotheken herunterladen und in die Arduino IDE importieren oder über Werkzeuge → Bibliotheken verwalten suchen und installieren.

IoT-Wasserqualitätssensor-System – Arduino-basierte Echtzeitüberwachung

Code

Wasserqualitäts-Überwachungscode
// Bibliotheken einbinden
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>

// Bluetooth: BTserial mit RX=3, TX=2
SoftwareSerial BTserial(3, 2); // RX | TX

// Variablendeklaration
float reads;
int pin = A0;
float vOut = 0;
float vIn = 5;
float R1 = 1000;
float R2 = 0;
float buffer = 0;
float TDS;
float R = 0;
float r = 0;
float L = 0.06; // Abstand der Drähte in m
double A = 0.000154; // Querschnittsfläche in m²
float C = 0; // Leitfähigkeit in S/m
float Cm = 0; // Leitfähigkeit in mS/cm
int rPin = 9, bPin = 5, gPin = 6;
int rVal = 255, bVal = 255, gVal = 255;

LiquidCrystal lcd(7, 8, 10, 11, 12, 13);

void setup() {
  Serial.begin(9600);
  BTserial.begin(9600);
  lcd.begin(16, 2);
  pinMode(rPin, OUTPUT);
  pinMode(bPin, OUTPUT);
  pinMode(gPin, OUTPUT);
  pinMode(pin, INPUT);
  lcd.print("Conductivity: ");
}

void loop() {
  reads = analogRead(A0);
  vOut = reads * 5.0 / 1023.0;
  Serial.println(reads);
  buffer = (vIn / vOut) - 1;
  R2 = R1 * buffer;
  Serial.println(R2);
  delay(500);

  // Widerstand in Widerstandswiderstand umrechnen
  r = R2 * A / L;
  // Leitfähigkeit
  C = 1 / r;
  Cm = C * 10;
  // TDS
  TDS = Cm * 700;

  lcd.setCursor(0, 1);
  lcd.println(C);

  // RGB-LED je nach Messwert färben
  if (reads < 600) {
    if (reads <= 300) setColor(255, 0, 255);
    else if (reads > 200) setColor(200, 0, 255);
  } else {
    if (reads <= 900) setColor(0, 0, 255);
    else if (reads > 700) setColor(0, 255, 255);
  }

  // Daten per Bluetooth an Ardutooth-App senden
  BTserial.print(C); BTserial.print(",");
  BTserial.print(TDS); BTserial.print(";");
  delay(500);
}

void setColor(int red, int green, int blue) {
  analogWrite(rPin, 255 - red);
  analogWrite(gPin, 255 - green);
  analogWrite(bPin, 255 - blue);
}

Gehäuse & Custom Parts

Ich habe ein altes Reagenzglas verwendet. Löcher an beiden Enden gebohrt, Drähte eingeführt und mit Kitt fixiert.

IoT-Wasserqualitätssensor-System – Arduino-basierte Echtzeitüberwachung

Schaltpläne

IoT-Wasserqualitätssensor-System – Arduino-basierte Echtzeitüberwachung

Herstellungsprozess

  1. Raspberry Pi & HDC2010: Kompletter I2C Temperatur- & Feuchtigkeitssensor Setup-Guide
  2. Raspberry Pi 3 mit DHT11 verbinden und Daten an ThingsIo.ai Cloud hochladen
  3. Intelligenter Mülleimer: Zellulare IoT-Lösung für automatisiertes Abfallmanagement
  4. Helium-basierter solarbetriebener Luftqualitätssensor: Design- und Deployments-Guide
  5. Phantom YoYo Hochsensibler Wassersensor mit MCP3008 ADC am Raspberry Pi
  6. Präzise Temperatur- & Feuchtigkeitsüberwachung mit SHT15 unter Windows 10 IoT Core
  7. Multi-Position Temperatursensor-System für Smart-Home-Integration
  8. Smarte Arduino-Trinkflasche: Echtzeit-Überwachung & Trinkerinnerung
  9. Intelligente, bewegungsaktivierte Wasserpistole mit Arduino Nano
  10. Fortschrittlicher kohlenstoffbasierter NO₂-Sensor verbessert Innenraumluftüberwachung