#include<EEPROM.
h>
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
LiquidCrystal lcd(7,6,5,4,3,2);
SoftwareSerial mySerial(9,10);
int led=0;
const int relay1=13;
const int relay2=12;
const int relay3=11;;
const int pulsein=8;
#define pulsein 8
#define relay 12
unsigned int pusle_count=0;
float units=0;
unsigned int rupees=0;
float watt_factor=2.3125;
unsigned int temp=0,i=0,x=0,k=0;
char str[70],flag1=0,flag2=0,flag3=0,flag4=0,flag5=0;
void setup()
[Link](16,2);
[Link](9600);
[Link](9600);
//pinMode(led, OUTPUT);
pinMode(pulsein, INPUT);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
digitalWrite(pulsein, HIGH);
[Link](0,0);
[Link]("POWER CONSUMPTION ALERT");
[Link](0,1);
[Link]("AND LOAD CONTROL");
delay(2000);
[Link]();
[Link]("Circuit Digest");
delay(2000);
[Link]();
[Link]("GSM Initilizing...");
gsm_init();
[Link]();
[Link]("System Ready");
[Link]("AT+CNMI=2,2,0,0,0");
init_sms();
send_data("System Ready");
send_sms();
delay(1000);
digitalWrite(led, LOW);
[Link]();
// [Link](1,0);
// rupees=[Link](1);
void loop()
serialEvent();
rupees=[Link](1);
units=rupees/5.0;
[Link](0,0);
[Link]("Units:");
[Link](units);
[Link](" ");
[Link](0,1);
[Link]("Rupee:");
[Link](rupees);
[Link](" ");
read_pulse();
check_status();
if(temp==1)
send_confirmation_sms();
void serialEvent()
while([Link]())
char ch=(char)[Link]();
str[i++]=ch;
if(ch == '*')
temp=1;
[Link]();
[Link]("Message Received");
delay(500);
break;
}
void init_sms()
[Link]("AT+CMGF=1");
delay(200);
[Link]("AT+CMGS=\"+917418401584\"");
delay(200);
void send_data(String message)
[Link](message);
delay(200);
void send_sms()
[Link](26);
[Link](0X0D);
[Link](0X0A);
void read_pulse()
if(!digitalRead(pulsein))
digitalWrite(led, HIGH);
pusle_count++;
units=watt_factor*pusle_count/1;
if(units>100){}
else
units++;
rupees=units*5;
[Link](1,rupees);
while(!digitalRead(pulsein));
digitalWrite(led,LOW);
//delay(2000);
void check_status()
if(rupees<150)
digitalWrite(relay1, HIGH);
flag1=1;
if(rupees<200)
digitalWrite(relay2, HIGH);
flag2=1;
if(rupees<250)
digitalWrite(relay3, HIGH);
flag3=1;
if(rupees>150 && flag1==1)
digitalWrite(relay1, LOW);
init_sms();
send_data("Units Consumed:30");
delay(2000);
send_sms();
flag1=0;
if(rupees>200 && flag2==1)
digitalWrite(relay2, LOW);
init_sms();
send_data("Units Consumed:40");
delay(2000);
send_sms();
flag2=0;
if(rupees>250 && flag3==1)
digitalWrite(relay3, LOW);
[Link]();
[Link]("Light Cut Due to");
[Link](0,1);
[Link]("Existing Limits");
delay(2000);
[Link]();
[Link]("Please Pay Bill ");
[Link](0,1);
[Link]("UR Energy Meter ");
delay(2000);
init_sms();
send_data("Units Consumed:30");
delay(2000);
send_sms();
flag3=0;
void send_confirmation_sms()
void message_sent()
[Link]();
[Link]("Message Sent.");
delay(1000);
void gsm_init()
[Link]();
[Link]("Finding Module..");
boolean at_flag=1;
while(at_flag)
[Link]("AT");
while([Link]()>0)
if([Link]("OK"))
at_flag=0;
delay(1000);
}
[Link]();
[Link]("Module Connected..");
delay(1000);
[Link]();
[Link]("Disabling ECHO");