Alarma con sensores PIR de calor los detecta por medio de interrupciones, que filtran falsos disparos del sensor, da orden de grabar video con tres cámaras, acciona una sirena

Dependencies:   mbed

Fork of INTERUPCIONES by Gustavo Ramirez

Committer:
tony63
Date:
Tue Dec 12 08:22:49 2017 +0000
Revision:
1:d8dfdd1c3f6b
Parent:
0:38bcc53b1324
Alarma con sensores PIR de calor los detecta por medio de interrupciones, que filtran falsos disparos del sensor, da orden de grabar video con tres c?maras, acciona una sirena

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tony63 0:38bcc53b1324 1 /*
tony63 1:d8dfdd1c3f6b 2 Este programa se escribe para un sistema de alarmas de una Finca.
tony63 1:d8dfdd1c3f6b 3 dispone de tres sensores PIR instalados en tres partes de la finca: adelante, atras
tony63 1:d8dfdd1c3f6b 4 y vigilan un plato de directTV.
tony63 1:d8dfdd1c3f6b 5 se instalaron tres camaras para gravar video
tony63 1:d8dfdd1c3f6b 6 la alarma tiene sirena de potencia
tony63 1:d8dfdd1c3f6b 7 con la deteccion de cualquier PIR se acciona su camara respectiva de su zona y
tony63 1:d8dfdd1c3f6b 8 la sirena por un minuto
tony63 1:d8dfdd1c3f6b 9 Los sensores se captan en modo interupcion
tony63 1:d8dfdd1c3f6b 10 el sensor normalmente tiene una resistencia baja en la salida (10-50 ohmios)
tony63 1:d8dfdd1c3f6b 11 cuando hay señal o objeto detectado la resistencia es muy alta casi infinita
tony63 1:d8dfdd1c3f6b 12 ese valor se conserva durante tres segundos y vuelve a ser baja.
tony63 1:d8dfdd1c3f6b 13 el programa espera que la señal sea estable en un periodo de 600mS
tony63 1:d8dfdd1c3f6b 14 si el pulso es mas corto ignora la alarma para evitar falsos disparos
tony63 1:d8dfdd1c3f6b 15 mas adelante le incorporaremos enviar mensajes por modem GSM
tony63 1:d8dfdd1c3f6b 16 la prueba se hace al pulso bajo
tony63 1:d8dfdd1c3f6b 17 para pulso alto cambiar a "rise" la configuracion de la interupcion
tony63 1:d8dfdd1c3f6b 18 y las lineas parecidas a estas de abajo
tony63 1:d8dfdd1c3f6b 19 asi: if(!PIR_PORTON){ para los de caida (con fall)
tony63 1:d8dfdd1c3f6b 20 asi: if(PIR_PORTON){ para los de subida (con rise)
tony63 0:38bcc53b1324 21
tony63 0:38bcc53b1324 22 */
tony63 0:38bcc53b1324 23
tony63 0:38bcc53b1324 24 #include "mbed.h"
tony63 1:d8dfdd1c3f6b 25 int porton,trasera,plato;
tony63 1:d8dfdd1c3f6b 26 int espera=600;
tony63 1:d8dfdd1c3f6b 27
tony63 1:d8dfdd1c3f6b 28
tony63 1:d8dfdd1c3f6b 29 //interupcion de sensores pir instalados
tony63 1:d8dfdd1c3f6b 30 InterruptIn PIR_PORTON(PTA12); //piroelectrico de entrada principal
tony63 1:d8dfdd1c3f6b 31 InterruptIn PIR_TRASERO(PTA13);//piroeelectrico de ventana de atras
tony63 1:d8dfdd1c3f6b 32 InterruptIn PIR_PLATO(PTA17);//piroelectrico del plato DIRECtv
tony63 1:d8dfdd1c3f6b 33 InterruptIn button(PTD4);
tony63 1:d8dfdd1c3f6b 34
tony63 1:d8dfdd1c3f6b 35 //Salidas para activar Camaras
tony63 1:d8dfdd1c3f6b 36 DigitalOut Camara_porton(PTB1);
tony63 1:d8dfdd1c3f6b 37 DigitalOut Camara_trasera(PTB2);
tony63 1:d8dfdd1c3f6b 38 DigitalOut Camara_plato(PTB3);
tony63 1:d8dfdd1c3f6b 39
tony63 1:d8dfdd1c3f6b 40 //salidas para el parlante;
tony63 1:d8dfdd1c3f6b 41 DigitalOut sirena(PTB4);
tony63 1:d8dfdd1c3f6b 42 DigitalOut led1(LED1);
tony63 1:d8dfdd1c3f6b 43 DigitalOut led2(LED2);
tony63 1:d8dfdd1c3f6b 44 DigitalOut led3(LED3);
tony63 0:38bcc53b1324 45 DigitalOut flash(LED3);
tony63 1:d8dfdd1c3f6b 46
tony63 1:d8dfdd1c3f6b 47 //las interupciones se disparan por flanco de caida de los sensores pir
tony63 1:d8dfdd1c3f6b 48 //para filtrar falsos disparos se determina si la señal del pir alcanza el tiempo minimo
tony63 1:d8dfdd1c3f6b 49 //llamado "espera" en ms.
tony63 1:d8dfdd1c3f6b 50 //se usan las banderas: porton, plato, trasera para determinar que alarma se activa
tony63 1:d8dfdd1c3f6b 51
tony63 1:d8dfdd1c3f6b 52 //interupcion por deteccion PIR del porton
tony63 1:d8dfdd1c3f6b 53 void Pir_Del(){
tony63 1:d8dfdd1c3f6b 54 wait_ms(espera);
tony63 1:d8dfdd1c3f6b 55 if(!PIR_PORTON){
tony63 1:d8dfdd1c3f6b 56 porton=1;
tony63 1:d8dfdd1c3f6b 57 return;
tony63 0:38bcc53b1324 58 }
tony63 0:38bcc53b1324 59 }
tony63 1:d8dfdd1c3f6b 60
tony63 1:d8dfdd1c3f6b 61 //interupcion por deteccion PIR trasero
tony63 1:d8dfdd1c3f6b 62 void Pir_Tras() {
tony63 1:d8dfdd1c3f6b 63 wait_ms(espera);
tony63 1:d8dfdd1c3f6b 64 if(!PIR_TRASERO){
tony63 1:d8dfdd1c3f6b 65 trasera=1;
tony63 1:d8dfdd1c3f6b 66 return;
tony63 1:d8dfdd1c3f6b 67 }
tony63 1:d8dfdd1c3f6b 68 }
tony63 1:d8dfdd1c3f6b 69
tony63 1:d8dfdd1c3f6b 70 //interupcion por deteccion PIR plato
tony63 1:d8dfdd1c3f6b 71 void Pir_Plato() {
tony63 1:d8dfdd1c3f6b 72 wait_ms(espera);
tony63 1:d8dfdd1c3f6b 73 if(!PIR_PLATO){
tony63 1:d8dfdd1c3f6b 74 plato=1;
tony63 1:d8dfdd1c3f6b 75 return;
tony63 1:d8dfdd1c3f6b 76 }
tony63 1:d8dfdd1c3f6b 77 }
tony63 1:d8dfdd1c3f6b 78
tony63 1:d8dfdd1c3f6b 79 //ciclo principal;
tony63 1:d8dfdd1c3f6b 80
tony63 1:d8dfdd1c3f6b 81 int main(){
tony63 1:d8dfdd1c3f6b 82 led1=1;
tony63 1:d8dfdd1c3f6b 83 led2=1;
tony63 1:d8dfdd1c3f6b 84 led3=1;
tony63 1:d8dfdd1c3f6b 85 led1=0;
tony63 1:d8dfdd1c3f6b 86 wait(2);
tony63 1:d8dfdd1c3f6b 87 led1=1;
tony63 1:d8dfdd1c3f6b 88 //declaracion de las tres interupciones
tony63 1:d8dfdd1c3f6b 89 PIR_PORTON.fall(&Pir_Del);
tony63 1:d8dfdd1c3f6b 90 PIR_TRASERO.fall(&Pir_Tras);
tony63 1:d8dfdd1c3f6b 91 PIR_PLATO.fall(&Pir_Plato);
tony63 1:d8dfdd1c3f6b 92
tony63 1:d8dfdd1c3f6b 93 while(1) {
tony63 1:d8dfdd1c3f6b 94 if(porton){
tony63 1:d8dfdd1c3f6b 95 Camara_porton=1;
tony63 1:d8dfdd1c3f6b 96 sirena=1;
tony63 1:d8dfdd1c3f6b 97 led1=0;
tony63 1:d8dfdd1c3f6b 98 wait(60);
tony63 1:d8dfdd1c3f6b 99 Camara_porton=0;
tony63 1:d8dfdd1c3f6b 100 sirena=0;
tony63 1:d8dfdd1c3f6b 101 led1=1;
tony63 1:d8dfdd1c3f6b 102 porton=0;
tony63 1:d8dfdd1c3f6b 103 }
tony63 1:d8dfdd1c3f6b 104
tony63 1:d8dfdd1c3f6b 105
tony63 1:d8dfdd1c3f6b 106 if(trasera){
tony63 1:d8dfdd1c3f6b 107 Camara_trasera=1;
tony63 1:d8dfdd1c3f6b 108 sirena=1;
tony63 1:d8dfdd1c3f6b 109 led2=0;
tony63 1:d8dfdd1c3f6b 110 wait(60);
tony63 1:d8dfdd1c3f6b 111 Camara_trasera=0;
tony63 1:d8dfdd1c3f6b 112 sirena=0;
tony63 1:d8dfdd1c3f6b 113 led2=1;
tony63 1:d8dfdd1c3f6b 114 trasera=0;
tony63 1:d8dfdd1c3f6b 115 }
tony63 1:d8dfdd1c3f6b 116
tony63 1:d8dfdd1c3f6b 117 if(plato){
tony63 1:d8dfdd1c3f6b 118 Camara_plato=1;
tony63 1:d8dfdd1c3f6b 119 sirena=1;
tony63 1:d8dfdd1c3f6b 120 led3=0;
tony63 1:d8dfdd1c3f6b 121 wait(60);
tony63 1:d8dfdd1c3f6b 122 Camara_plato=0;
tony63 1:d8dfdd1c3f6b 123 sirena=0;
tony63 1:d8dfdd1c3f6b 124 led3=1;
tony63 1:d8dfdd1c3f6b 125 plato=0;
tony63 1:d8dfdd1c3f6b 126 }
tony63 1:d8dfdd1c3f6b 127
tony63 1:d8dfdd1c3f6b 128 }//while
tony63 1:d8dfdd1c3f6b 129
tony63 1:d8dfdd1c3f6b 130
tony63 1:d8dfdd1c3f6b 131
tony63 1:d8dfdd1c3f6b 132 //****************************************************
tony63 1:d8dfdd1c3f6b 133 }//main