Sei sulla pagina 1di 6

#include<LiquidCrystal.

h>
#include <SoftwareSerial.h>

LiquidCrystal lcd(6, 7, 8, 9, 10, 11);

int R1= 1000;


int Ra=25; //Resistance of powering Pins
int ECPin= A1;
int ECGround=A2;
int ECPower =A3;

#define vehisw 12

boolean sms_flag=1;

float PPMconversion=0.7;

float TemperatureCoef = 0.019; //this changes depending on what chemical we are


measuring

float K=2.88;

float Temperature=10;
float EC=0;
float EC25 =0;
int ppm =0;

float raw= 0;
float Vin= 5;
float Vdrop= 0;
float Rc= 0;
float buffer=0;

const int analogInPin = A0;


int sensorValue = 0;
unsigned long int avgValue;
float b;
int buf[10],temp;

void setup()
{
Serial.begin(9600);

pinMode(vehisw, OUTPUT);

pinMode(ECPin,INPUT);
pinMode(ECPower,OUTPUT);//Setting pin for sourcing current
pinMode(ECGround,OUTPUT);//setting pin for sinking current
digitalWrite(vehisw, LOW);
digitalWrite(ECGround,LOW);//We can leave the ground connected permanantly

delay(100);// gives sensor time to settle

delay(100);

R1=(R1+Ra);// Taking into acount Powering Pin Resitance


lcd.begin(16, 2);
lcd.clear();

lcd.print("Arduino Based ..");


lcd.setCursor(0,1);
lcd.print("Water Purificatio");
delay(2000);
lcd.clear();
lcd.print(" RCPIT Shirpur..");

lcd.setCursor(0,1);
lcd.print("Please Wait.....");
delay(2000);

lcd.clear();
lcd.print("PH Value :");
lcd.setCursor(0,1);
lcd.print("PPM Valu :");

//gsm_init();

void loop()

for(int i=0;i<10;i++)
{
buf[i]=analogRead(analogInPin);
delay(10);
}
for(int i=0;i<9;i++)
{
for(int j=i+1;j<10;j++)
{
if(buf[i]>buf[j])
{
temp=buf[i];
buf[i]=buf[j];
buf[j]=temp;
}
}
}
avgValue=0;
for(int i=2;i<8;i++)
avgValue+=buf[i];
float pHVol=(float)avgValue*5.0/1024/6;
float phValue = -5.70 * pHVol + 21.34;

lcd.setCursor(12,0);
lcd.print(phValue);
delay(4000);

GetEC();
PrintReadings();
delay(5000);

digitalWrite(vehisw, HIGH);
lcd.clear();
lcd.print("PH Value :");
lcd.setCursor(0,1);
lcd.print("PPM Valu :");
}

void GetEC()
{

digitalWrite(ECPower,HIGH);
raw= analogRead(ECPin);
raw= analogRead(ECPin);
digitalWrite(ECPower,LOW);

Vdrop= (Vin*raw)/1024.0;
Rc=(Vdrop*R1)/(Vin-Vdrop);
Rc=Rc-Ra; //acounting for Digital Pin Resitance
EC = 1000/(Rc*K);

EC25 = EC/ (1+ TemperatureCoef*(20-25.0));


ppm=(EC25)*(PPMconversion*1000);

void PrintReadings()
{

lcd.setCursor(12,1);
lcd.print(ppm);

delay(4000);

if (ppm >= 300)


{

lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Water Quality ");
lcd.setCursor(0,1);
lcd.print("is Not Good");
delay(3000);
if (sms_flag == 1)
{

trackingsp();
delay(1000);

};

void gsm_init()
{
lcd.clear();
lcd.print("Finding Module..");
boolean at_flag=1;
while(at_flag)
{
Serial.println("AT");
while(Serial.available()>0)
{
if(Serial.find("OK"))
at_flag=0;
}

delay(1000);
}

lcd.clear();
lcd.print("Module Connected..");
delay(1000);
lcd.clear();
lcd.print("Disabling ECHO");
boolean echo_flag=1;
while(echo_flag)
{
Serial.println("ATE0");
while(Serial.available()>0)
{
if(Serial.find("OK"))
echo_flag=0;
}
delay(1000);
}

lcd.clear();
lcd.print("Echo OFF");
delay(1000);
lcd.clear();
lcd.print("Finding Network..");
boolean net_flag=1;
while(net_flag)
{
Serial.println("AT+CPIN?");
while(Serial.available()>0)
{
if(Serial.find("+CPIN: READY"))
net_flag=0;
}
delay(1000);
}
lcd.clear();
lcd.print("Network Found..");
delay(1000);
lcd.clear();
}

void init_sms()
{
Serial.println("AT+CMGF=1");
delay(400);
Serial.println("AT+CMGS=\"+918007480377\""); // use your 10 digit cell no. here
delay(400);
}

void send_data(String message)


{
Serial.println(message);
delay(200);
}

void send_sms()
{
Serial.write(26);
}

void lcd_status()
{
lcd.clear();
lcd.print("Message Sent");
delay(2000);
lcd.clear();
lcd.print("System Ready");
return;
}

void trackingsp()
{
init_sms();
send_data("Filter Water Quality ");
send_data("IS not good");
send_data("Please take some action soon..\nThankyou");
send_sms();
delay(2000);
lcd_status();
sms_flag = 0;
}

Potrebbero piacerti anche