Fecha de publicación: Feb 23, 2016 2:42:38 AM
Actualizado (13-03-2016)
REV1.0:
El diseño de esta alarma, esta basado en la necesidad de un sistema vigia, que nos informe ante un eventual disparo del sistema. Esta version DEMO, esta limitada, pero es 100% funcional. Por un lado, tenemos una entrada serial (RF), que esta inalambricamente ligada con un llavero transmisor y un teclado RF. Desde ambos, se puede activar-desactivar el sistema, e incluido, activar la funcion panico. Para cada notificacion, se envia un SMS al numero programado, y queda el mensaje de evento registraddo en la pantalla hasta que se del el visto / enterado.
El sistema cuenta con una funcion que no permite el armado si hay un sensor abierto, y lo notifica en el display LCD, mencionando cual o cuales son los sensores que no nos permiten el armado.
Tengan en cuenta que esta es la version DEMO de la beta 1.3 y por cuestiones de pirateria, no comparto todo el proyecto completo... La beta 3.0, cuenta con control de relay por SMS, y en caso de eventos de disparos, envia SMS y llama a los telefons programados
Adjunto archivos de simulacion (Isis Proteus) y HEX del microconrolador
REV2.0:
bueno... no era de mucho gusto usar dos pic, asi que meti todo en uno solo y como me habia quedado corto de puertos, imlpemente un teclado analogico con bastante exito.
Para la lectura del teclado, implemente las siguientes lineas:
LECTURA_TECLADO:
ADCIN PORTA.0,TECLA
IF TECLA = 0 THEN GOTO LECTURA_TECLADO
SELECT CASE TECLA
CASE 138 ;TECLA1
T_NUMERO = 1
CASE 156 ;TECLA2
T_NUMERO = 2
CASE 179 ;TECLA3
T_NUMERO = 3
CASE 102 ;TECLA4
T_NUMERO = 4
CASE 112 ;TECLA5
T_NUMERO = 5
CASE 124 ;TECLA6
T_NUMERO = 6
CASE 81 ;TECLA7
T_NUMERO = 7
CASE 87 ;TECLA8
T_NUMERO = 8
CASE 94 ;TECLA9
T_NUMERO = 9
CASE 72 ;TECLA0
T_NUMERO = 0
CASE 76 ;TECLA#
T_NUMERO = 12
CASE 68 ;TECLA*
T_NUMERO = 11
END SELECT ' Close SELECT CASE
SEROUT2 portc.6,84,[DEC T_NUMERO]; enviar
return
Me parecio interesante tratar de jugar mucho con los bits y bytes de las distintas variables; Esto me ayudo en la nueva version que se esta por venir proximamente, lograr un submenu de configuracion de comortamiento de la alarma; Osea, dependiendo de pre-configuraciones, las distintas señales de los sensores tendran un determinado comportamiento.
Les muestro como arme la etapa donde monitoreo todas las entradas de los sensores, y en caso de querer activar el sistema y una de estas entradas este sensando presencia o bien, no este cerrada la puerta u ventana, no nos permita armar el sistema y nos indique el error y la zona donde esta el error...
CHECK:
if zona1 = 0 then Z1=1
if zona2 = 0 then Z2=2
if zona3 = 0 then Z3=3
if zona4 = 0 then Z4=4
if zona5 = 0 then Z5=5
if zona6 = 0 then Z6=6
IF PORTB.0=0 THEN Z7=7
if Z1 > 0 THEN ERROR
if Z2 > 0 THEN ERROR
if Z3 > 0 THEN ERROR
if Z4 > 0 THEN ERROR
if Z5 > 0 THEN ERROR
if Z6 > 0 THEN ERROR
IF Z7 > 0 THEN ERROR
GOTO INICIO
ERROR:
LCDOUT $FE,1
PAUSE 200
LCDOUT $FE,$80,"ERROR EN ZONAS: "
LCDOUT $FE,$C0,DEC Z1," ",DEC Z2," ",DEC Z3," ",DEC Z4," ",DEC Z5," ",DEC Z6," ",DEC Z7
PAUSE 2000
Z1=0
Z2=0
Z3=0
Z4=0
Z5=0
Z6=0
Z7=0
GOTO BACKUP
La comunicacion con el backup, en este caso, el celular Motorolla C115, las hice de la siguiente manera:
enviarSMS:
serout2 portc.6,84,["AT",13]
pause 100
serout2 portc.6,84,["AT+CMPS=",34,"SM",34,44,34,"SM",34,44,34,"SM",34,13]
pause 100
serout2 portc.6,84,["AT+CMPS=",34,"ME",34,44,34,"ME",34,44,34,"ME",34,13]
PAUSE 100
serout2 portc.6,84,["AT+CMGF=1",13] ; pasar modem gsm a modo texto
pause 100
gosub numeroTEL1
PAUSE 300
SEROUT2 portc.6,84,["PRUEBA SISTEMA",26]; enviar
PAUSE 200
goto backup
numeroTEL1:
serout2 portc.6,84,["AT+CMGS=",34,DEC COD1,DEC COD2,DEC COD3,DEC COD4,DEC NUM0,DEC NUMA1,DEC NUMB1,DEC NUMC1,DEC NUMD1,DEC NUME1,DEC NUMF1,DEC NUMG1,DEC NUMH1,34,13]
return
Espero que estas breves lineas les sirvan a modo de base e idea y luego implementarlos en sus propios proyectos.
Notas sobre la version 2.0:
En esta nueva version ya logre poder poner una pantalla de configuracion y asi poder programar clave nueva en memoria no volatil y numero de telefono (tengo que migrar de micro por que no me dio el espacio para que la configuracion del tel quede guardada en la eeprom).
MODO DE EMPLEO:
A_para iniciar el sistema en modo ALARMA, colocar jumper en modo RUN
B_para ver y o configurar los parametros (prueba de hardware,numero de telefono y clave) JUMPER en modo CONFIG.
Modo CONFIG.
NUMERO = 1 TEL
NUMERO = 2 CLAVE NUEVA
NUMERO = 3 PRUEBA HARDWARE (RELAY, LED,MODEM,ETC)
NUMERO = 4 INICIA EN MODO ALARMA
Modo RUN
Al iniciar el sistema, la pantalla queda con el mensaje "MODO ALARMA DESACTIVADA", a la espera de la clave (1234 por defecto) de teclado, o la señal de un control remoto con el mensaje "A" para activar.
La condicion para activar, es que la integridad de los sensores esten en modo reposo, caso contrario, no dejara armar el sistema y mostrara cual zona esta activada.
Cuando se logra activar el sistema, por el momento, "todos" los sensores tienen un delay para desactivacion (esceptuando el boton pulsador de panico).
Para desactivar, se requiere ingresar los 4 digitos de la clave en el teclado, o bien, enviar una señal RF con el mensaje "A".
Todos los eventos de disparo, accionan el modem y deja un mensaje en pantalla "HAY UN EVENTO SIN REGISTRAR"... Para borrar y riniciar, solo requerimos enviar una señal RF o presionar cualquier tecla para desactivar...
Que estaria faltando?
1_Menu para seleccionar modo de armado (Modo Presente/Modo Ausente)
2_Poder configurar todos los sensores para que funcionen como Instantaneos o Presente/Ausente (no funcionan en modo Presente)
3_Poder configurar tiempo de salida
4_Poder configurar tiempo de entrada (Zona1 con demora)
5_Guardar numero de telefono en memoria no volatil
Todo esto se vendra en la proxima actualizacion... les dejo el firmware del pic, circuito, etc