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
Fork of INTERUPCIONES by
main.cpp
00001 /* 00002 Este programa se escribe para un sistema de alarmas de una Finca. 00003 dispone de tres sensores PIR instalados en tres partes de la finca: adelante, atras 00004 y vigilan un plato de directTV. 00005 se instalaron tres camaras para gravar video 00006 la alarma tiene sirena de potencia 00007 con la deteccion de cualquier PIR se acciona su camara respectiva de su zona y 00008 la sirena por un minuto 00009 Los sensores se captan en modo interupcion 00010 el sensor normalmente tiene una resistencia baja en la salida (10-50 ohmios) 00011 cuando hay señal o objeto detectado la resistencia es muy alta casi infinita 00012 ese valor se conserva durante tres segundos y vuelve a ser baja. 00013 el programa espera que la señal sea estable en un periodo de 600mS 00014 si el pulso es mas corto ignora la alarma para evitar falsos disparos 00015 mas adelante le incorporaremos enviar mensajes por modem GSM 00016 la prueba se hace al pulso bajo 00017 para pulso alto cambiar a "rise" la configuracion de la interupcion 00018 y las lineas parecidas a estas de abajo 00019 asi: if(!PIR_PORTON){ para los de caida (con fall) 00020 asi: if(PIR_PORTON){ para los de subida (con rise) 00021 00022 */ 00023 00024 #include "mbed.h" 00025 int porton,trasera,plato; 00026 int espera=600; 00027 00028 00029 //interupcion de sensores pir instalados 00030 InterruptIn PIR_PORTON(PTA12); //piroelectrico de entrada principal 00031 InterruptIn PIR_TRASERO(PTA13);//piroeelectrico de ventana de atras 00032 InterruptIn PIR_PLATO(PTA17);//piroelectrico del plato DIRECtv 00033 InterruptIn button(PTD4); 00034 00035 //Salidas para activar Camaras 00036 DigitalOut Camara_porton(PTB1); 00037 DigitalOut Camara_trasera(PTB2); 00038 DigitalOut Camara_plato(PTB3); 00039 00040 //salidas para el parlante; 00041 DigitalOut sirena(PTB4); 00042 DigitalOut led1(LED1); 00043 DigitalOut led2(LED2); 00044 DigitalOut led3(LED3); 00045 DigitalOut flash(LED3); 00046 00047 //las interupciones se disparan por flanco de caida de los sensores pir 00048 //para filtrar falsos disparos se determina si la señal del pir alcanza el tiempo minimo 00049 //llamado "espera" en ms. 00050 //se usan las banderas: porton, plato, trasera para determinar que alarma se activa 00051 00052 //interupcion por deteccion PIR del porton 00053 void Pir_Del(){ 00054 wait_ms(espera); 00055 if(!PIR_PORTON){ 00056 porton=1; 00057 return; 00058 } 00059 } 00060 00061 //interupcion por deteccion PIR trasero 00062 void Pir_Tras() { 00063 wait_ms(espera); 00064 if(!PIR_TRASERO){ 00065 trasera=1; 00066 return; 00067 } 00068 } 00069 00070 //interupcion por deteccion PIR plato 00071 void Pir_Plato() { 00072 wait_ms(espera); 00073 if(!PIR_PLATO){ 00074 plato=1; 00075 return; 00076 } 00077 } 00078 00079 //ciclo principal; 00080 00081 int main(){ 00082 led1=1; 00083 led2=1; 00084 led3=1; 00085 led1=0; 00086 wait(2); 00087 led1=1; 00088 //declaracion de las tres interupciones 00089 PIR_PORTON.fall(&Pir_Del); 00090 PIR_TRASERO.fall(&Pir_Tras); 00091 PIR_PLATO.fall(&Pir_Plato); 00092 00093 while(1) { 00094 if(porton){ 00095 Camara_porton=1; 00096 sirena=1; 00097 led1=0; 00098 wait(60); 00099 Camara_porton=0; 00100 sirena=0; 00101 led1=1; 00102 porton=0; 00103 } 00104 00105 00106 if(trasera){ 00107 Camara_trasera=1; 00108 sirena=1; 00109 led2=0; 00110 wait(60); 00111 Camara_trasera=0; 00112 sirena=0; 00113 led2=1; 00114 trasera=0; 00115 } 00116 00117 if(plato){ 00118 Camara_plato=1; 00119 sirena=1; 00120 led3=0; 00121 wait(60); 00122 Camara_plato=0; 00123 sirena=0; 00124 led3=1; 00125 plato=0; 00126 } 00127 00128 }//while 00129 00130 00131 00132 //**************************************************** 00133 }//main
Generated on Tue Jul 12 2022 23:30:42 by 1.7.2