Professional Documents
Culture Documents
h>
#include <EEPROM.h>
#include <SoftwareSerial.h>
#define load 9
void gsm_init(void);
char gsm_clear_msg(char num);
void gsm_send_num_mesg1(char *num, char *msg1, char *msg2, char *msg3, char *msg4);
void load_on()
{
pinMode(load, OUTPUT);
digitalWrite(load, LOW);
}
void load_off()
{
pinMode(load, OUTPUT);
digitalWrite(load, HIGH);
}
void clear_gsm()
{
unsigned char uc;
for (uc = 0; uc < 70; uc++)
gsm[uc] = '\0';
}
void read_gsm(void)
{
while (Serial.available())
{
gsm[irq_gsm] = Serial.read();
irq_gsm++;
if (irq_gsm > 62)
irq_gsm = 63;
}
}
//==============================
void blink()
{
pulse++;
if ((pulse / 4) == 3)
{
pulse = 0;
unit++;
intrr = 1;
}
}
void setup()
{
load_off();
Serial.begin(9600);
mySerial.begin(9600);
lcd.begin(16, 2);
lcd.clear(); lcd.setCursor(4, 0); lcd.print("WELCOME"); delay(2000);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), blink, FALLING);
gsm_init();
gsm_clear_msg(1); gsm_clear_msg(2);
lcd.clear();
lcd.setCursor(0, 0); lcd.print(F("Send any MSG to "));
lcd.setCursor(0, 1); lcd.print(F("Store ur ph.num "));
clear_gsm(); irq_gsm = 0;
delay(200);
while (1)
{
if (Serial.available())
{
delay(300); read_gsm(); clear_gsm(); irq_gsm = 0;
if (gsm[2] == '+' && gsm[3] == 'C' && gsm[4] == 'M' && gsm[5] == 'G' &&
gsm[6] == 'R' && gsm[7] == ':')
{
lcd.clear(); lcd.setCursor(2, 0); lcd.print(F("I GOT MSG")); delay(1000);
read_msg();
lcd.clear();
lcd.setCursor(0, 0); lcd.print((String)mobilenum);
lcd.setCursor(0, 1); lcd.print((String)msg); delay(3000);
irq_gsm = 0;
/*
char bal = 0, bal_f, send_bit = 1, war = 1, bit_s = 0;
int bill_status = 0, m_bill = 0;
char s1[10], s2[10], s3[10], s4[10], s5[10], s6[10], s7[10];
void loop()
{
int cnt = 0;
intrr = 0;
char firsttime = 1, l1 = 1;
start:
lcd.clear();
lcd.setCursor(0, 0); lcd.print(F("P: BU: "));
lcd.setCursor(0, 1); lcd.print(F("TU: "));
while (1)
{
lcd.setCursor(2, 0); lcd.print(pulse / 2);
if (mySerial.available())
{
lcd.clear(); lcd.setCursor(0, 0); lcd.print(F("card detected.."));
delay(1500);
cnt = 0; delay(20);
while ( (mySerial.available()) && (cnt < 13)) // Read 12 characters
and store them in input array
{
card_no[cnt] = mySerial.read();
cnt++;
}
card_no[12] = '\0';// Print RFID tag number
newcard = 1;
}
if (newcard == 1)
{
newcard = 0;
delay(100);
if (!strcmp(card_no, card1))
{
lcd.clear();
lcd.setCursor(0, 0); lcd.print(F("authorised card."));
lcd.setCursor(0, 1); lcd.print(F("C.MNY:10/- ")); delay(2000);
lcd.clear();
lcd.setCursor(0, 0); lcd.print(F("Unit Cost:5/-"));
lcd.setCursor(0, 1); lcd.print(F("YOU GOT 2 UNITS")); delay(2000);
lcd.clear();
lcd.setCursor(0, 0); lcd.print(F("Pre Bal Uni:"));
lcd.setCursor(12, 0); lcd.print(ba_units + 0); delay(2000);
EEPROM.write(1, ba_units);
ba_units = EEPROM.read(1);
lcd.clear();
lcd.setCursor(0, 0); lcd.print(F("Recharged Succes"));
lcd.setCursor(0, 1); lcd.print("P.Bal:");
lcd.setCursor(8, 1); lcd.print(ba_units + 0); delay(2000);
}
else
{
lcd.setCursor(0, 1); lcd.print(F("un auth card..."));
}
lcd.clear();
lcd.setCursor(0, 0); lcd.print(F("P: BU: "));
lcd.setCursor(0, 1); lcd.print(F("TU: "));
if (ba_units > 0)
{
load_on();
}
else
{
load_off();
}
if (intrr == 1)
{
t_units = (t_units + 1);
EEPROM.write(1, ba_units); delay(100);
EEPROM.write(2, t_units); delay(100);
intrr = 0;
ba_units = EEPROM.read(1);
t_units = EEPROM.read(2);
lcd.clear();
lcd.setCursor(0, 0); lcd.print(F("P: BU: "));
lcd.setCursor(0, 1); lcd.print(F("TU: "));
void gsm_init(void)
{
char E_count = 0;
gsminit:
clear_gsm();
lcd.clear(); lcd.print(F("GSM INIT..."));
Serial.print("AT"); irq_gsm = 0; Serial.println(); delay(500);
Serial.print("ATE0"); irq_gsm = 0; Serial.println(); delay(500);
clear_gsm(); E_count = 0;
ATCPIN:
Serial.print("AT+CPIN?"); Serial.println(); irq_gsm = 0; delay(500);
read_gsm();
if (gsm[2] == '+' && gsm[3] == 'C' && gsm[4] == 'P' && gsm[5] == 'I' && gsm[6] ==
'N' && gsm[7] == ':' && gsm[8] == ' ' && gsm[9] == 'R')
{
lcd.clear(); lcd.print(F(" SIM "));
lcd.setCursor(0, 1); lcd.print(F(" CONNECTED")); delay(800);
}
else
{
E_count++;
lcd.clear(); lcd.print(F("SIM CHECKING "));
lcd.setCursor(0, 1); lcd.print(F(" PLEASE WAIT")); delay(800);
if (E_count > 20)
{
E_count = 0;
goto gsminit;
}
goto ATCPIN;
}
clear_gsm(); E_count = 0;
clear_gsm(); E_count = 0;
ATCMGF:
Serial.print("AT+CMGF=1"); irq_gsm = 0; Serial.println(); delay(500);
read_gsm();
clear_gsm(); E_count = 0;
ATCNMI:
Serial.print("AT+CNMI=2,1"); irq_gsm = 0; Serial.println(); delay(500);
read_gsm();
}
char gsm_clear_msg(char num)
{
char E_count = 0;
clear_gsm(); E_count = 0;
ATCMGD:
Serial.print("AT+CMGD="); Serial.print(num, DEC); irq_gsm = 0;
Serial.println(); delay(500);
read_gsm();
void gsm_send_num_mesg1(char *num, char *msg1, char *msg2, char *msg3, char *msg4)
{
lcd.clear(); lcd.print(F("MSG SENDING..."));
lcd.setCursor(0, 1); lcd.print((String )num); delay(500);
Serial.print("AT+CMGS="); Serial.print('"'); Serial.print((String)num);
Serial.print('"');
Serial.println(""); delay(1000);
Serial.print((String)msg1);
Serial.print('\n');
Serial.print((String)msg2);
Serial.print('\n');
Serial.print((String)msg3);
Serial.print('\n');
Serial.print((String)msg4);
Serial.print(" "); delay(500);
Serial.write(0x1A); delay(500);
read_gsm();
while (!Serial.available());
delay(3000);
irq_gsm = 0; clear_gsm();
read_gsm();
lcd.clear();
//lcd.print(gsm); delay(3000);
if (gsm[2] == '+' && gsm[3] == 'C')
{
lcd.print(F(" MSG SENT "));
lcd.setCursor(0, 1); lcd.print(F(" Successfully"));
}
else
{
lcd.print(F(" MSG Sending "));
lcd.setCursor(0, 1); lcd.print(F("Error"));
}
Serial.println(); delay(2000);
}
void read_msg()
{
unsigned char a, b, i, count, numcnt, j;
while (Serial.available())
{
j = !Serial.available();
delay(100);
}
Serial.print("AT+CMGR=1");
Serial.println();
count = 0;
i = 0;
a = 0;
numcnt = 0;
while (count != 3)
{
while (!Serial.available());
b = Serial.read();;