Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 9

#include <EEPROM.

h>

#include <gprs.h>

#include <SoftwareSerial.h>

#include <String.h>

#define SOP "R"

//#define EOP '>'

bool started = false;

bool ended = false;

char inData[80];

byte index;

int addr = 0;

int i=0,j=0,value,k=1,truenum;

char lastCharRead[100];

#define TIMEOUT 5000

#define LED1 5

#define LED2 10

#define SIM800_RX_PIN 7

//SIM800 RX is connected to Arduino D7

#define SIM800_TX_PIN 8

//Create software serial object to communicate with SIM800

SoftwareSerial serialSIM800(SIM800_TX_PIN,SIM800_RX_PIN);

bool ledStatus1;

bool ledStatus2;

GPRS gprs;

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

delay(1000);

pinMode(LED1,OUTPUT);

pinMode(LED2,OUTPUT);

digitalWrite(LED1,LOW);

digitalWrite(LED2,LOW);

while(!Serial);

Serial.println("Starting SIM800 SMS Command Processor");

gprs.preInit();

delay(1000);

while(0 != gprs.init())

delay(1000);

Serial.print("init error\r\n");

delay(40000);

//Set SMS mode to ASCII

if(0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1\r\n", "OK", TIMEOUT))

ERROR("ERROR:CNMI");

return;

//Start listening to New SMS Message Indications

if(0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0\r\n", "OK", TIMEOUT))


{

ERROR("ERROR:CNMI");

return;

Serial.println("Init success");

serialSIM800.println( "AT+CMGF=1");

serialSIM800.write("AT+CMGL=ALL");

serialSIM800.write("AT+CMGD=,4");

delay(500);

Serial.println("deleted");

for(int j=1;j<11;j++)

value = EEPROM.read(j);

Serial.print(value, DEC);

inData[80]=value;

//Variable to hold last line of serial output from SIM800

char currentLine[500] = "";

int currentLineIndex = 0;
//Boolean to be set to true if message notificaion was found and next

//line of serial output is the actual SMS message content

bool nextLineIsMessage = false;

void loop()

//Write current status to LED pin

digitalWrite(LED1,LOW);

digitalWrite(LED2,LOW);

//If there is serial output from SIM800

if(gprs.serialSIM800.available())

for(i=0;i<65;i++)

lastCharRead[i] = gprs.serialSIM800.read();

delay(5);

if(lastCharRead[51] == SOP)

for(i=0;i<11;i++)

Serial.println(lastCharRead[11+i]);

EEPROM.write(i,lastCharRead[11+i]-48);

}
}

//Read each character from serial output until \r or \n is reached (which denotes end of line)

if(lastCharRead[51]=='O' && lastCharRead[52]=='N')

for(i=0;i<50;i++)

lastCharRead[i];

delay(5);

numberVerify();

Serial.println("verify");

if(truenum == 1){

k=0;

digitalWrite(LED1, HIGH);

ledStatus1 = 1;

delay(3000);

digitalWrite(LED1, LOW);

ledStatus1 = 0;

delay(1000);

Serial.println("motor on");

//Sets the GSM Module in Text Mode

delay(1000);

gprs.serialSIM800.write("AT+CMGF=1\r\n");

delay(1000);

// Delay of 1000 milli seconds or 1 second


gprs.serialSIM800.write("AT+CMGS=\"+91");

for(int j=1;j<11;j++){

value = EEPROM.read(j);

gprs.serialSIM800.print(value);

delay(3);

gprs.serialSIM800.write("\"\r\n");

delay(1000);

gprs.serialSIM800.write("Motor activated");// The SMS text you want to send

delay(100);

gprs.serialSIM800.write((char)26);// ASCII code of CTRL+Z

delay(1000);

if(lastCharRead[51]=='O' && lastCharRead[52]=='F')

for(i=0;i<50;i++)

lastCharRead[i];

delay(5);

numberVerify();

Serial.println("verify");

if(truenum == 1){

k=0;
digitalWrite(LED2, HIGH);

ledStatus2 = 1;

delay(3000);

digitalWrite(LED2, LOW);

ledStatus2 = 0;

delay(1000);

Serial.println("motor off");

//Sets the GSM Module in Text Mode

delay(1000);

gprs.serialSIM800.write("AT+CMGF=1\r\n");

delay(1000);

// Delay of 1000 milli seconds or 1 second

gprs.serialSIM800.write("AT+CMGS=\"+91");

for(int j=1;j<11;j++){

value = EEPROM.read(j);

gprs.serialSIM800.print(value);

delay(3);

gprs.serialSIM800.write("\"\r\n");

delay(1000);

gprs.serialSIM800.write("Motor Deactivated");// The SMS text you want to send

delay(100);

gprs.serialSIM800.write((char)26);// ASCII code of CTRL+Z

delay(1000);

}
}

if(lastCharRead[51]=='T' && lastCharRead[52]=='E')

for(i=0;i<50;i++)

lastCharRead[i];

delay(5);

numberVerify();

Serial.println("ooohhn");

if(truenum == 1){

k=0;

gprs.serialSIM800.write("AT+CMGF=1\r\n");

delay(1000);

// Delay of 1000 milli seconds or 1 second

gprs.serialSIM800.write("AT+CMGS=\"+91");

for(int j=1;j<11;j++){

value = EEPROM.read(j);

gprs.serialSIM800.print(value);

delay(3);

gprs.serialSIM800.write("\"\r\n");

delay(1000);

gprs.serialSIM800.write("SYSTEM IS WORKING PROPERLY");// The SMS text you want to send

delay(100);
gprs.serialSIM800.write((char)26);// ASCII code of CTRL+Z

delay(1000);

}}}

void numberVerify(){

value = EEPROM.read(k);

if(lastCharRead[i]-48 == value){

k++;}

if(k>=9){

truenum = 1; }

if(k<5){

truenum = 0; }

You might also like