~cristobalmedinalopez/+junk/activarelellamada

« back to all changes in this revision

Viewing changes to activarelellamada.ino

  • Committer: cristobalmedinalopez at gmail
  • Date: 2012-08-01 20:46:57 UTC
  • Revision ID: cristobalmedinalopez@gmail.com-20120801204657-784nalz7o2zqur2s
Añadido código para proteger el sistema con una alarma que realiza una llamada de teléfono para avisar de la manipulación mientras emite una señal sonora.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
 
14
14
SoftwareSerial mySerial(10,11); //rx,tx
15
15
String inGSM; //para almacenar la informacion leida desde el modulo gsm
16
 
String numList[]={"600000000","612345678"}; //lista de numeros permitidos
 
16
String numList[]={"600112233","612345678"}; //lista de numeros permitidos
 
17
boolean intrusos=false;
17
18
 
18
19
void setup()
19
20
{
20
21
  pinMode(9, OUTPUT); //pin para activar el rele
 
22
  pinMode(2, INPUT); //pin pulsador alarma
 
23
  pinMode(3, OUTPUT); //pin altavoz (buzzer)
 
24
  pinMode(12, OUTPUT); //pin ign modulo gsm tc35
21
25
  mySerial.begin(9600);
22
26
  initGSM(); //iniciar el modulo gsm
23
27
}
24
28
 
25
29
//Funcion para inicializar el modulo gsm 
26
30
void initGSM(){
 
31
  digitalWrite(12, LOW); //activamos el modulo gsm (activo a nivel bajo)
 
32
  delay(4000);
27
33
  mySerial.print("AT+CPIN=1234\r\n"); //Enviar PIN (1234 en este caso)
28
 
  delay(5000);
 
34
  delay(8000);
29
35
  mySerial.print("AT+CLIP=1\r\n"); //Activar alerta de llamada
30
36
  delay(100);  
31
37
}
43
49
//Función que activa el rele durante 1.5 segundos
44
50
void fire(){
45
51
   digitalWrite(9,HIGH);
46
 
   delay(1500);
 
52
   delay(600); //tiempo que permanece activo el rele
47
53
   digitalWrite(9,LOW);
48
54
}
49
55
 
51
57
  Serial.flush();
52
58
  inGSM="";
53
59
  
 
60
  //Detectamos si la alarma se ha activado (se ha liberado el pulsador)
 
61
  if (digitalRead(2) == HIGH && intrusos==false){
 
62
      intrusos=true;
 
63
      mySerial.print("ATD600112233;\r\n"); //llamada avisando de intrusos al numero 600112233
 
64
  }
 
65
  
 
66
  //Si hay intrusos se activa un pitido intermitente por el altavoz
 
67
  if (intrusos){
 
68
     tone(3,800,100); 
 
69
     delay(200);
 
70
  }
 
71
  
54
72
  //Leer del modulo gsm si hay informacion disponible
55
73
  while (mySerial.available()>0){
56
74
     delay(10);
68
86
      int inicio=inGSM.indexOf('"')+1;
69
87
      int fin=inicio+9;
70
88
      num=inGSM.substring(inicio,fin);      
71
 
       
 
89
      
 
90
      //Si el numero es el 600112233 se detiene la alarma
 
91
      if (num=="600112233"){
 
92
         intrusos=false; 
 
93
      }
 
94
      
72
95
      //Si tiene permiso se acciona el rele    
73
96
      if (isAllow(num)){
74
97
        fire();