IoT-basierter Wasserqualitätssensor
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Notwendige Werkzeuge und Maschinen
|
Apps und Onlinedienste
| ||||
|
Über dieses Projekt
Wasser ist eine lebensnotwendige Ressource in unserem täglichen Leben. Daher müssen wir sicherstellen, dass es von guter Qualität für den Gebrauch ist.
Was ist TDS?
TDS steht für Total Dissolved Solids. Wie der Name schon sagt, gibt er uns die Anzahl der in einer bestimmten Menge Wasser gelösten Feststoffe in ppm (parts per million) an. TDS wird basierend auf der elektrischen Leitfähigkeit [S/m] berechnet. Je höher die elektrische Leitfähigkeit, desto höher der TDS-Wert. Hier ist eine Liste der TDS-Werte verschiedener Wasserarten:
- Reines Wasser:80-150
- Leitungswasser:250-350
- Grundwasser:500-1000
- Meerwasser:etwa 30000
Wie von der WHO (Weltgesundheitsorganisation) empfohlen, liegt der geeignete TDS von Trinkwasser unter 300. Das Wasser mit TDS unter 100 kann jedoch nicht konsumiert werden, da ihm die essentiellen Mineralien fehlen würden. Wasser über 300 gilt als zu "hart", da es mehr Mineralien enthält als benötigt.
Normalerweise verwenden wir einen TDS-Stift, um den TDS von Wasser zu messen. Wir können den Stift jedoch nicht mit dem Arduino integrieren. Es gibt also spezielle TDS-Meter, die in den Arduino integriert werden können. Ich habe mich jedoch entschieden, dieses Projekt ohne die Verwendung des TDS-Stifts durchzuführen.
Die Schaltung
Arduino
- Schließen Sie 5V von Arduino an eine Stromschiene des Steckbretts an
- Verbinden Sie die Masse von Arduino mit der anderen Stromschiene des Steckbretts
- Verbinden Sie ein Ende eines 1k-Ohm-Widerstands mit Masse und das andere Ende mit dem Steckbrett. Verbinden Sie den analogen Pin A0 des Arduino mit dem Widerstand. Schließen Sie schließlich einen Draht an den Widerstand und einen anderen Draht an 5V an. Verbinden Sie die freien Enden dieser Drähte mit den Krokodilklemmen.
LCD Anzeige
- VSS-Pin mit der Erdungsschiene verbinden
- VDD-Pin mit 5V-Schiene verbinden
- V0 mit dem Mittelstift des Potentiometers verbinden
- Verbinde die Enden des Potentiometers mit 5V und Masse
- RS-Pin mit Arduino-Pin 7 verbinden
- Verbinde den R/W-Pin mit der Erdungsschiene
- E-Pin mit Arduino-Pin 8 verbinden
- D4 mit Arduino-Pin 10 verbinden
- D5 mit Arduino-Pin 11 verbinden
- D6 mit Arduino-Pin 12 verbinden
- D7 mit Arduino-Pin 13 verbinden
HC-05 Bluetooth-Modul
- VCC-Pin mit 5V-Schiene verbinden
- GND-Pin mit Masse verbinden
- Verbinde den TX-Pin mit dem Arduino-Pin 3 (dient als RX)
- Verbinde den RX-Pin mit dem Arduino-Pin 2 (dient als TX)
RGB-LED
- Verbinde die gemeinsame Kathode (längster Pin) mit Masse
- Verbinde den roten Pin (rechts vom Kathodenpin) mit dem PWM-Pin 9 des Arduino über einen 330-Ohm-Widerstand
- Verbinde den grünen Pin (links vom Kathodenpin) mit dem PWM-Pin 6 des Arduino über einen 330-Ohm-Widerstand
- Verbinden Sie den blauen Pin (ganz links) mit dem PWM-Pin 5 des Arduino über einen 330-Ohm-Widerstand
Ableitung zur Berechnung des Widerstands zwischen freien Drähten
Wir verwenden das Ohmsche Gesetz, das besagt, dass die Spannung [V] durch einen Widerstand des Widerstands R direkt proportional zum Strom [I] ist, der durch den Widerstand fließt. Mit anderen Worten, V =IR
Obwohl ein Draht zwischen den 2 Widerständen [R₁ - 1000-Ohm und R₂ - zwischen den freien Drähten] mit dem Analog-Pin A0 des Arduino verbunden ist, kann der Widerstand dieses Drahtes vernachlässigt werden, und daher können wir sagen, dass minimaler Strom fließt durch den Draht. R₁ und R₂ sind also in Reihe geschaltet.
Wir können also sagen, dass V₁ =IR₁
und V₂ =IR₂
.
Daher können wir sagen V₂/V₁=IR₂/IR₁ =R₂/R₁
. Allerdings kennen wir V₂ nicht.
Wir wissen, dass in einer Reihenschaltung von Widerständen V₁+V₂ =V
, wobei V =5 Volt. Daraus erhalten wir V₂ =5-V₁
Schließlich ersetzen wir den erhaltenen Wert für V₂
in V₂/V₁ =R₂/R₁
, können wir einen variablen Puffer als 5-V₁/V₁
. definieren , statt V₂/V₁
.
Schließlich können wir sagen, dass R₂ =Puffer * R₁
.
Die Arbeit
Wir berechnen den Widerstand des zu prüfenden Wassers und erhalten daraus den spezifischen Widerstand. Dazu müssen wir die Länge und die Querschnittsfläche unseres Containers berücksichtigen.
R =r L/A=> r =R A/L
Aus dem spezifischen Widerstand können wir die Leitfähigkeit erhalten
c =1/r
Schließlich erhalten wir den TDS aus der Leitfähigkeit
TDS =c*7000
Bibliotheken
- Flüssigkristallbibliothek:https://www.arduinolibraries.info/libraries/liquid-crystal
- Serielle Softwarebibliothek:https://pdfpunk.weebly.com/softwareserial-library-download.html
Sie können diese Bibliotheken entweder herunterladen und zu Ihrer Arduino-IDE hinzufügen, oder Sie gehen zu Tools -> Bibliotheken verwalten -> suchen Sie nach der Bibliothek, die Sie herunterladen möchten
Code
- Überwachungscode für die Wasserqualität
Code zur Überwachung der WasserqualitätArduino
//include library#include#include //für Bluetooth - Erstellen Sie ein Objekt namens BTserial, mit RX-Pin bei 3 und TX-Pin bei 2SoftwareSerial BTserial(3,2); // RX | TX // Decraration aller unserer Variablenfloat liest;int pin =A0;float vOut =0;//Spannungsabfall über 2 Punktefloat vIn =5;float R1 =1000;float R2 =0;float Puffer =0;float TDS;float R =0; // Widerstand zwischen den 2 Drähtenfloat r =0; // Widerstandsfloat L =0,06; // Abstand zwischen den Drähten in mdouble A =0,000154; // Querschnittsfläche des Drahtes in m^2float C =0;//Leitfähigkeit in S/mfloat Cm =0;//Leitfähigkeit in mS/cmint rPin =9;int bPin =5;int gPin =6;int rVal =255;int bVal =255;int gVal =255;// Wir verwenden diese Formel, um den spezifischen Widerstand zu erhalten, nachdem wir das Ohmsche Gesetz verwendet haben -> R =r L/A => r =RA/L // Erstellen eines LCD-Objekts aus der FlüssigkristallbibliothekLiquidCrystal lcd(7,8,10,11,12,13 );void setup () {// BT seriellen und seriellen Monitor initialisieren Serial.begin (9600); BTserial.begin(9600); // lcd initialisieren lcd.begin (16, 2); // RGB-LED-Pins (alle als PWM-Pins auf Arduino) als Ausgang einstellen PinMode (rPin, OUTPUT); pinMode (bPin, AUSGANG); pinMode (gPin, AUSGANG); PinMode (Pin, EINGANG); // Stagnierende Nachricht auf LCD drucken lcd.print ("Leitfähigkeit:");} ungültige Schleife () { liest =analogRead (A0); vOut =liest*5/1023; Serial.println (liest); // Serial.println (vOut); Puffer =(vIn/vOut)-1; R2 =R1*Puffer; Serial.println (R2); Verzögerung (500); // Spannung in Widerstand umwandeln // Obige Formel anwenden r =R2 * A/L; // R =rL/A // Widerstand in Leitfähigkeit umwandeln C =1/r; Cm =C*10; // Leitfähigkeit in mS/cm in TDS umwandeln TDS =Cm * 700; // Cursor des LCD auf die nächste Zeile setzen lcd.setCursor (0,1); lcd.println(C); // Anzeige entsprechender Farben auf RGB-LED gemäß dem analogen Lesen if (liest <600) { if (liest <=300) {setColor (255, 0, 255); aufrechtzuerhalten. Wenn (liest> 200) {setColor (200, 0, 255); } } Else{ if (liest <=900) { setColor (0, 0, 255); } if (liest> 700) { setColor (0, 255, 255); } } // Daten an die Ardutooth-App auf dem Mobiltelefon über Bluetooth sendenBTserial.print(C);BTserial.print(",");BTserial.print(TDS);BTserial.print(";");Verzögerung(500); }void setColor (int rot, int grün, int blau) { analogWrite (rPin, 255 - rot); analogWrite( gPin, 255 - grün ); analogWrite( bPin, 255 - blau ); }
Kundenspezifische Teile und Gehäuse
Ich habe ein altes Reagenzglas verwendet, das ich machen musste. Ich stieß Löcher an beiden Enden des Rohres und führte Drähte von beiden Enden ein. Schließlich, um die Drähte an Ort und Stelle zu halten, befestigte ich etwas Kitt.Schaltpläne
Herstellungsprozess
- Einfaches IoT – RaspberryPI HDC2010 wie es geht
- Raspberry PI-basiertes IoT-Projekt zum Verbinden des DHT11-Sensors
- Mobiles IoT:Intelligenter Mülleimer
- Helium-Luftqualitätssensor
- Hochempfindlicher Wassersensor am MCP3008
- Windows 10 IoT Core und SHT15
- Multi-Temperatursensor
- Arduino-betriebene Wasserflasche
- Bewegungssensor-Wasserpistole
- Kohlenstoffbasierter Luftqualitätssensor