You are on page 1of 7

#include <SoftwareSerial.

h>
#include <EEPROM.h>
SoftwareSerial SIM900(7, 8);

char a,m,n,p,q,r;
int i,i2,i3;
int b,c,memo;
void setup()
{
a=0;
pinMode(5, INPUT);// lee el estado de la puerta
pinMode(4, OUTPUT);// encender/apagar alarma
pinMode(3, OUTPUT);// idicador de sensado
pinMode(6, OUTPUT);// apagar total del sistema (corte de energia)
pinMode(9, OUTPUT);// encender la tarjeta GSM
Serial.begin(19200);
SIM900.begin(19200);
SIM900power(); //encender la tarjeta GSM
delay(15000); //tiempo para coger señal

SIM900.print("AT+CMGF=1\r"); //modo mensajes


delay(100);
SIM900.print("AT+CNMI=2,2,0,0,0\r");//la tarjeta envia todos los mensajes al
arduino via serial

delay(100);
}
void SIM900power()
//encender la tarjeta
{
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(7000);
memo=EEPROM.read(0);
/////////
if (memo==1)//hay una clave guardada
{
m=EEPROM.read(1);
delay(20);
n=EEPROM.read(2);
delay(20);
p=EEPROM.read(3);
delay(20);
q=EEPROM.read(4);
delay(20);
r=EEPROM.read(5);
delay(20);
}
else //NO hay clave guardada
{
EEPROM.write(0,1);//indicador que se guardo una clave
EEPROM.write(1,'a');
EEPROM.write(2,'b');
EEPROM.write(3,'c');
EEPROM.write(4,'d');
}
///////
}
////////////
void llamar()
{
for (i3=1;i3<=2;i3++)//llamar 2 veces
{
SIM900.println("ATD + +593992342828;"); //D=Dial=llamar.Llamar al numero del
usuario
delay(100);
SIM900.println();
delay(15000); // duración de llamada 15s
SIM900.println("ATH"); //H=Hang up= colgar
delay(3000);
}
}
///////////

void loop()
{

digitalWrite(3,HIGH);//led indicador de sensado

if(SIM900.available() >0)
{
a=SIM900.read(); //obtenemos los caracteres del GSM
///////////DESCONECTAR
if(a==m)
{
delay(10);
a=SIM900.read();
if(a==n)
{
delay(10);
a=SIM900.read();
if(a==p)
{
delay(10);
a=SIM900.read();
if(a==q)
{
delay(10);
a=SIM900.read();
if(a==r)
{
delay(10);
SIM900.print("AT+CMGF=1\r"); //modo mensaje
delay(100);
SIM900.println("AT + CMGS = \"+593992342828\""); // numero
usuario
delay(100);
SIM900.println("SISTEMA DESCONECTADO"); // mensaje ha enviar
delay(100);
SIM900.println((char)26); // termino la
comunicacion
delay(100);
SIM900.println();
delay(5000);
SIM900.flush ();

digitalWrite(6,HIGH); //Apagamos todo el sistema


delay(80000);
}
}
}
}
}
else
{
///////////CAMBIO CLAVE
if(a=='@')
{
a=SIM900.read();
if(a==m)
{
delay(10);
a=SIM900.read();
if(a==n)
{
delay(10);
a=SIM900.read();
if(a==p)
{
delay(10);
a=SIM900.read();
if(a==q)
{
delay(10);
a=SIM900.read();
if(a==r)
{
delay(10);
a=SIM900.read();
if(a=='*')
{
delay(10);
a=SIM900.read();
delay(10);
EEPROM.write(1,a);
delay(20);
a=SIM900.read();
delay(10);
EEPROM.write(2,a);
delay(20);
a=SIM900.read();
delay(10);
EEPROM.write(3,a);
delay(20);
a=SIM900.read();
delay(10);
EEPROM.write(4,a);
delay(20);
a=SIM900.read();
delay(10);
EEPROM.write(5,a);
delay(20);

SIM900.print("AT+CMGF=1\r");
delay(100);
SIM900.println("AT + CMGS = \"+593992342828\"");
delay(100);
SIM900.println("CLAVE NUEVA GUARDADA");
delay(100);
SIM900.println((char)26);
delay(100);
SIM900.println();
delay(5000);
SIM900.flush ();
//////////////
m=EEPROM.read(1);
delay(20);
n=EEPROM.read(2);
delay(20);
p=EEPROM.read(3);
delay(20);
q=EEPROM.read(4);
delay(20);
r=EEPROM.read(5);
delay(20);
//////////////
}
}
}
}
}
}
}
else
{
/////////CONSULTA
if(a=='#')
{
SIM900.print("AT+CMGF=1\r");
delay(100);
SIM900.println("AT + CMGS = \"+593992342828\"");
delay(100);
if(digitalRead(5)==LOW)
{
SIM900.println("PUERTA ABIERTA");
}
else
{
if(digitalRead(5)==HIGH)
{
SIM900.println("PUERTA CERRADA");
}
}
delay(100);
SIM900.println((char)26);
delay(100);
SIM900.println();
delay(5000);
SIM900.flush ();
}

}
}
}
///////////////////////////////////////////////////
if(digitalRead(5)==LOW)//sensor
{
b=1;
c=1;
digitalWrite(4,HIGH);//encendido de alarma
while(b==1)
{

llamar();
delay(100);
SIM900.print("AT+CMGF=1\r"); //set SMS mode to text
delay(100);
SIM900.print("AT+CNMI=2,2,0,0,0\r");
delay(100);
SIM900.flush();
delay(10000);
SIM900.flush();
for(i=1;i<=254;i++)
{
delay(290);
//////////////
if(SIM900.available()>0)
{
if(c==1)
{
c=2;
for(i2=1;i2<=45;i2++)//numero de caracteres "basura"
{
a=SIM900.read();
}
}
a=SIM900.read();
if(a==m)
{
delay(10);
a=SIM900.read();
if(a==n)
{
delay(10);
a=SIM900.read();
if(a==p)
{
delay(10);
a=SIM900.read();
if(a==q)
{
delay(10);
a=SIM900.read();
if(a==r)
{
SIM900.flush ();
delay(10);
digitalWrite(4,LOW);//Apagar la alarma
b=2;
i=255;
////////////////
SIM900.print("AT+CMGF=1\r");
delay(100);
SIM900.println("AT + CMGS = \"+593992342828\"");
delay(100);
SIM900.println("Electricidad UNT :)");
delay(100);
SIM900.println((char)26);
delay(100);
SIM900.println();
delay(5000);
SIM900.flush ();
///////////////
}
}
}
}
}
}
//////////////
}
}

You might also like