Hardware components | ||||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
Software apps and online services | ||||||
![]() |
| |||||
![]() |
|
#include <LiquidCrystal.h> // Importing the LCD library
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Initialize the LCD object with the pins connected to the LCD screen
int turbidityPin = A1; // Assign turbidity sensor pin to analog pin A1
void setup() {
Serial.begin(9600); // Initialize serial communication
lcd.begin(16, 2); // Initialize the LCD screen
lcd.clear(); // Clear the LCD screen
}
void loop() {
int sensorReading = analogRead(turbidityPin); // Read turbidity sensor value
float relative = 660.00 - sensorReading;// Find relative value
float turbidityValue = (relative/660.00) * 100.00; // Convert to percentage
if (turbidityValue < 310%) {
lcd.setCursor(0, 0);
lcd.print("Turbidity:");
lcd.print(turbidityValue);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Water is ideal");
Serial.println("Water is ideal for consumption");
delay(5000);
lcd.clear();
delay(5000);
}
else if (turbidityValue >= 10 && turbidityValue < 25) {
lcd.setCursor(0, 0);
lcd.print("Turbidity:");
lcd.print(turbidityValue);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Water is contaminated");
Serial.println("Contaminated");
delay(5000);
lcd.clear();
delay(5000);
}
else {
lcd.setCursor(0, 0);
lcd.print("Turbidity:");
lcd.print(turbidityValue);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Water is very contaminated");
Serial.println("V.Contaminated");
delay(5000);
lcd.clear();
delay(5000);
}
delay(1000); // Wait for 1 second
}
#include "DFRobot_PH.h"
#include <EEPROM.h>
#define PH_PIN A0
float voltage,phValue,temperature = 25;
DFRobot_PH ph;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Initialize the LCD object with the pins connected to the LCD screen
void setup()
{
Serial.begin(9600);
ph.begin();
lcd.begin(16, 2); // Initialize the LCD screen
lcd.clear(); // Clear the LCD screen
}
void loop()
{
static unsigned long timepoint = millis();
if(millis()-timepoint>1000U){ //time interval: 1s
timepoint = millis();
voltage = analogRead(PH_PIN)/1024.0*5000; // read the voltage
phValue = ph.readPH(voltage); // convert voltage to pH with temperature compensation
if(phValue >= 7.00 && phValue <= 8.50){
lcd.setCursor(0,0);
lcd.print("pH:"); // display the sensor value
lcd.print(phValue);
Serial.print("pH:");
Serial.println(phValue);
Serial.println("Water is ideal for consumption");
lcd.setCursor(0,1);
lcd.print("Water is ideal");
delay(5000);
lcd.clear();
delay(5000);
}
else if(phValue > 8.50){
lcd.setCursor(0,0);
lcd.print("pH:"); // display the sensor value
lcd.print(phValue);
Serial.print("pH:");
Serial.println(phValue);
Serial.println("Water is contaminated by alkaline component");
lcd.setCursor(0,1);
lcd.print("Water is alkaline");
delay(5000);
lcd.clear();
delay(5000);
}
else if(phValue < 7.00 && phValue > 4.50){
lcd.setCursor(0,0);
lcd.print("pH:"); // display the sensor value
lcd.print(phValue);
Serial.print("pH:");
Serial.println(phValue);
Serial.println("Water is contaminated by acidic component");
lcd.setCursor(0,1);
lcd.print("Water is acidic");
delay(5000);
lcd.clear();
delay(5000);
}
else if(phValue <= 4.50){
lcd.setCursor(0,0);
lcd.print("pH:"); // display the sensor value
lcd.print(phValue);
Serial.print("pH:");
Serial.println(phValue);
Serial.println("Water likely has carbonic acid from organic matter/bacteria");
lcd.setCursor(0,1);
lcd.print("Do Not Drink!");
delay(5000);
lcd.clear();
delay(5000);
}
delay(2000);
}
ph.calibration(voltage,temperature); // calibration process by Serail CMD
}
#include "DFRobot_PH.h"
#include <EEPROM.h>
#define PH_PIN A0
float voltage,phValue,temperature = 25;
DFRobot_PH ph;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Initialize the LCD object with the pins connected to the LCD screen
void setup()
{
Serial.begin(9600);
ph.begin();
lcd.begin(16, 2); // Initialize the LCD screen
lcd.clear(); // Clear the LCD screen
}
void loop()
{
static unsigned long timepoint = millis();
if(millis()-timepoint>1000U){ //time interval: 1s
timepoint = millis();
voltage = analogRead(PH_PIN)/1024.0*5000; // read the voltage
phValue = ph.readPH(voltage); // convert voltage to pH with temperature compensation
if(phValue >= 7.00 && phValue <= 8.50){
lcd.setCursor(0,0);
lcd.print("pH:"); // display the sensor value
lcd.print(phValue);
Serial.print("pH:");
Serial.println(phValue);
Serial.println("Water is ideal for consumption");
lcd.setCursor(0,1);
lcd.print("Water is ideal");
delay(5000);
lcd.clear();
delay(5000);
}
else if(phValue > 8.50){
lcd.setCursor(0,0);
lcd.print("pH:"); // display the sensor value
lcd.print(phValue);
Serial.print("pH:");
Serial.println(phValue);
Serial.println("Water is contaminated by alkaline detergent");
lcd.setCursor(0,1);
lcd.print("Detergent");
delay(5000);
lcd.clear();
delay(5000);
}
else if(phValue >= 2.00 && phValue <= 4.50){
lcd.setCursor(0,0);
lcd.print("pH:"); // display the sensor value
lcd.print(phValue);
Serial.print("pH:");
Serial.println(phValue);
Serial.println("Water is contaminated by acetic or citric acid");
lcd.setCursor(0,1);
lcd.print("Acetic / Citric");
delay(5000);
lcd.clear();
delay(5000);
}
else {
lcd.setCursor(0,0);
lcd.print("pH:"); // display the sensor value
lcd.print(phValue);
Serial.print("pH:");
Serial.println(phValue);
Serial.println("Water is contaminated by other acid");
lcd.setCursor(0,1);
lcd.print("Water is acidic");
delay(5000);
lcd.clear();
delay(5000);
}
delay(2000);
}
ph.calibration(voltage,temperature); // calibration process by Serail CMD
}
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Initialize the LCD object with the pins connected to the LCD screen
int TDSsensorPin = A1; // Assign TDS sensor pin to analog pin A0
void setup() {
Serial.begin(9600); // Initialize serial communication
lcd.begin(16, 2); // Initialize the LCD screen
lcd.clear(); // Clear the LCD screen
}
void loop() {
int TDSsensorValue = analogRead(TDSsensorPin); // Read TDS sensor value
float voltage = TDSsensorValue * (5.0 / 1023.0); // Convert sensor value to voltage
float tdsValue = voltage / 0.005; // Convert voltage to TDS value
if (tdsValue < 500){
lcd.setCursor(0,0);
lcd.print("TDS Value:"); // display the sensor value
lcd.print(tdsValue);
lcd.print("ppm");
Serial.print("TDS Value: "); // Print the sensor value
Serial.print(tdsValue);
Serial.println(" ppm");
Serial.println("Water is ideal for consumption");
lcd.setCursor(0,1);
lcd.print("Water is ideal");
delay(5000);
lcd.clear();
delay(5000);
}
else {
lcd.setCursor(0,0);
lcd.print("TDS Value:"); // display the sensor value
lcd.print(tdsValue);
lcd.print("ppm");
Serial.print("TDS Value: "); // Print the sensor value
Serial.print(tdsValue);
Serial.println(" ppm");
Serial.println("Water is contaminated");
lcd.setCursor(0,1);
lcd.print("Contaminated");
delay(5000);
lcd.clear();
delay(5000);
}
delay(1000); // Wait for 1 second
}
#include "DFRobot_PH.h"
#include <EEPROM.h>
#include <LiquidCrystal.h>
int TDSsensorPin = A0; // Assign TDS sensor pin to analog pin A0
#define PH_PIN A1 // Assign turbidity sensor pin to analog pin A1
int turbidityPin = A2; // Assign turbidity sensor pin to analog pin A2
float voltage,phValue,temperature = 25;
DFRobot_PH ph;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Initialize the LCD object with the pins connected to the LCD screen
const int filterValve = 6;
const int acidValve = 7;
const int baseValve = 8;
const int heater = 9;
const int UV = 13;
void setup() {
Serial.begin(9600); // Initialize serial communication
ph.begin(); // Initialize pH object
lcd.begin(16, 2); // Initialize the LCD screen
lcd.clear(); // Clear the LCD screen
pinMode(filterValve, OUTPUT);
pinMode(acidValve, OUTPUT);
pinMode(baseValve, OUTPUT);
pinMode(heater, OUTPUT);
pinMode(UV, OUTPUT);
}
void loop() {
int TDSsensorValue = analogRead(TDSsensorPin); // Read TDS sensor value
float voltage = TDSsensorValue * (5.0 / 1023.0); // Convert sensor value to voltage
float tdsValue = voltage / 0.005; // Convert voltage to TDS value
int sensorReading = analogRead(turbidityPin); // Read turbidity sensor value
float relative = 385 - sensorReading;// Find relative value
float turbidityValue = (relative/385.00) * 100.00; // Convert to percentage
static unsigned long timepoint = millis();
if(millis()-timepoint>1000U){ //time interval: 1s
timepoint = millis();
voltage = analogRead(PH_PIN)/1024.0*5000; // read the voltage
phValue = ph.readPH(voltage, temperature); // convert voltage to pH with temperature compensation
if(phValue >= 6.00 && phValue <= 8.50 && tdsValue < 200 && turbidityValue < 5.00){
digitalWrite(acidValve, HIGH);
digitalWrite(baseValve, HIGH);
digitalWrite(filterValve, HIGH);
digitalWrite(heater, HIGH);
digitalWrite(UV, LOW);
Serial.print("pH:");
Serial.println(phValue);
Serial.print("TDS Value: ");
Serial.print(tdsValue);
Serial.println("ppm");
Serial.print("Turbidity Value: ");
Serial.print(turbidityValue);
Serial.println("%");
Serial.println("Water is ideal for consumption");
lcd.setCursor(0,0);
lcd.print("Water is ideal");
delay(2000);
lcd.clear();
delay(2000);
}
else if(phValue > 8.50 && tdsValue < 200 && turbidityValue < 5.00){
digitalWrite(acidValve, LOW);
digitalWrite(baseValve, HIGH);
digitalWrite(filterValve, HIGH);
digitalWrite(heater, HIGH);
digitalWrite(UV, LOW);
Serial.print("pH:");
Serial.println(phValue);
Serial.print("TDS Value: ");
Serial.print(tdsValue);
Serial.println("ppm");
Serial.print("Turbidity Value: ");
Serial.print(turbidityValue);
Serial.println("%");
Serial.println("Water is contaminated by alkaline detergent");
lcd.setCursor(0,0);
lcd.print("Alkaline");
delay(2000);
lcd.clear();
delay(2000);
}
else if(phValue < 4.00 && tdsValue < 200 && turbidityValue < 5.00){
digitalWrite(acidValve, HIGH);
digitalWrite(baseValve, LOW);
digitalWrite(filterValve, HIGH);
digitalWrite(heater, HIGH);
digitalWrite(UV, LOW);
Serial.print("pH:");
Serial.println(phValue);
Serial.print("TDS Value: ");
Serial.print(tdsValue);
Serial.println("ppm");
Serial.print("Turbidity Value: ");
Serial.print(turbidityValue);
Serial.println("%");
Serial.println("Water is contaminated by acetic/citric acid");
lcd.setCursor(0,0);
lcd.print("Acetic/Citric");
delay(2000);
lcd.clear();
delay(2000);
}
else if(phValue >= 4.00 && tdsValue < 200 && turbidityValue < 5.00){
digitalWrite(acidValve, HIGH);
digitalWrite(baseValve, HIGH);
digitalWrite(filterValve, HIGH);
digitalWrite(heater, HIGH);
digitalWrite(UV, HIGH);
Serial.print("pH:");
Serial.println(phValue);
Serial.print("TDS Value: ");
Serial.print(tdsValue);
Serial.println("ppm");
Serial.print("Turbidity Value: ");
Serial.print(turbidityValue);
Serial.println("%");
Serial.println("Water is contaminated by carbonic acid. Might have bacteria");
lcd.setCursor(0,0);
lcd.print("Carbonic");
delay(2000);
lcd.clear();
delay(2000);
}
else if(phValue >= 6.00 && phValue <= 8.50 && turbidityValue >= 5.00){
digitalWrite(acidValve, HIGH);
digitalWrite(baseValve, HIGH);
digitalWrite(filterValve, LOW);
digitalWrite(heater, HIGH);
digitalWrite(UV, LOW);
Serial.print("pH:");
Serial.println(phValue);
Serial.print("TDS Value: ");
Serial.print(tdsValue);
Serial.println("ppm");
Serial.print("Turbidity Value: ");
Serial.print(turbidityValue);
Serial.println("%");
Serial.println("Water is contaminated by insoluble foreign particles");
lcd.setCursor(0,0);
lcd.print("High Turbidity");
delay(2000);
lcd.clear();
delay(2000);
}
else if(phValue >= 6.00 && phValue <= 8.50 && tdsValue >= 200.00 ){
digitalWrite(acidValve, HIGH);
digitalWrite(baseValve, HIGH);
digitalWrite(filterValve, HIGH);
digitalWrite(heater, LOW);
digitalWrite(UV, LOW);
Serial.print("pH:");
Serial.println(phValue);
Serial.print("TDS Value: ");
Serial.print(tdsValue);
Serial.println("ppm");
Serial.print("Turbidity Value: ");
Serial.print(turbidityValue);
Serial.println("%");
Serial.println("Water has high dissolved salts consentration");
lcd.setCursor(0,0);
lcd.print("High TDS");
delay(2000);
lcd.clear();
delay(2000);
}
delay(2000);
}
ph.calibration(voltage,temperature); // calibration process by Serail CMD
}
Comments
Please log in or sign up to comment.