Coding File
Coding File
h>
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
LiquidCrystal lcd(7,6,5,4,3,2);
SoftwareSerial mySerial(9,10);
int led=0;
#define pulsein 8
#define relay 12
float units=0;
float watt_factor=2.3125;
char str[70],flag1=0,flag2=0,flag3=0,flag4=0,flag5=0;
void setup()
lcd.begin(16,2);
mySerial.begin(9600);
Serial.begin(9600);
//pinMode(led, OUTPUT);
pinMode(pulsein, INPUT);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
digitalWrite(pulsein, HIGH);
lcd.setCursor(0,0);
lcd.setCursor(0,1);
delay(2000);
lcd.clear();
lcd.print("Circuit Digest");
delay(2000);
lcd.clear();
lcd.print("GSM Initilizing...");
gsm_init();
lcd.clear();
lcd.print("System Ready");
Serial.println("AT+CNMI=2,2,0,0,0");
init_sms();
send_data("System Ready");
send_sms();
delay(1000);
digitalWrite(led, LOW);
lcd.clear();
// EEPROM.write(1,0);
// rupees=EEPROM.read(1);
void loop()
serialEvent();
rupees=EEPROM.read(1);
units=rupees/5.0;
lcd.setCursor(0,0);
lcd.print("Units:");
lcd.print(units);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Rupee:");
lcd.print(rupees);
lcd.print(" ");
read_pulse();
check_status();
if(temp==1)
send_confirmation_sms();
void serialEvent()
while(mySerial.available())
char ch=(char)mySerial.read();
str[i++]=ch;
if(ch == '*')
temp=1;
lcd.clear();
lcd.print("Message Received");
delay(500);
break;
}
void init_sms()
mySerial.println("AT+CMGF=1");
delay(200);
mySerial.println("AT+CMGS=\"+917418401584\"");
delay(200);
mySerial.println(message);
delay(200);
void send_sms()
mySerial.write(26);
mySerial.write(0X0D);
mySerial.write(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;
EEPROM.write(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;
digitalWrite(relay1, LOW);
init_sms();
send_data("Units Consumed:30");
delay(2000);
send_sms();
flag1=0;
digitalWrite(relay2, LOW);
init_sms();
send_data("Units Consumed:40");
delay(2000);
send_sms();
flag2=0;
digitalWrite(relay3, LOW);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Existing Limits");
delay(2000);
lcd.clear();
lcd.setCursor(0,1);
delay(2000);
init_sms();
send_data("Units Consumed:30");
delay(2000);
send_sms();
flag3=0;
void send_confirmation_sms()
void message_sent()
lcd.clear();
lcd.print("Message Sent.");
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");