Control alarma por telefono - Página personal Francisco Aguilar

Anuncio
Alarma 3G por teléfono móvil
Índice
A.Descripción...................................................................................................................................... 3
B.El esquema.......................................................................................................................................4
C.La placa............................................................................................................................................7
D.El programa..................................................................................................................................... 8
E.Conclusiones finales...................................................................................................................... 13
Francisco Aguilar Segura
Alarma 3G
A. Descripción
Este proyecto trata sobre cómo hacer una alarma ,que sea capaz de detectar al menos 4
alertas diferentes y enviar un mensaje (SMS) diferente para cada una ,informando de la
situación de la misma.
Se han usados materiales reciclados de mi laboratorio,por lo que no necesariamente ,los
materiales usados aquí,son los mejores,se pueden cambiar por los que mas se ajusten a
tus necesidades. Vemos por ejemplo que se ha usado un teléfono móvil C55,pero
realmente se puede usar cualquier teléfono móvil con 3G que sea capaz de comunicarse
a través del puerto UART por comandos AT.
Se ha usado También un 16F84 como microprocesador,pero cualquier otro de microchip
podría valer,haciendo las modificaciones necesarias en los registros de configuración del
pic.
Si algo podría ser necesario en un micro diferente seria: mas memoria disponible para
mensajes y que posea UART integrado, aunque esto ultimo se soluciona con dos simples
resistencias (R5,R6).
Los mensajes enviados por el sistemas son:
•
Alarma humo
•
Alarma Intruso
•
Alarma Humedad
•
Alarma Batería baja
Ademas de estas alarmas el sistema responderá a la llamada de un teléfono determinado
devolviendo el estatus actual del sistema ,con un mensaje de estatus ok o devolviendo la
alarma pertinente,como confirmación de un disparo fortuito de la alarma.
2
B. El esquema
3
Alarma 3G
C. La placa
Esta es una representación de como queda la placa.
Imagen de las pistas y distribución de componentes a tamaño real.
4
D. El programa
INCLUDE "modedefs.bas"
'...................INICIO DEREGISTROS........................................
'DEFINE NO_CLRWDT
TRISB=%11111001
INTCON =%10011000
'registro de interrupciones
OPTION_REG =%00001111
'
habilito las resistencias de pul-up IMPORTANTE y flanco descendente para la int en
RB0,preescaler al watchdog ypreescaler:128
TRISA=%00010
'puerta A 3 salidas 2 entradas
PORTA=%01010
'TRISB=%11110001
'puerto B 4 ent 4 sal
'PORTB=%11110000
'indicamos el estado salidas que queremos en el inicio
'....................DECLARACION VARIABLES ...................................
B0 VAR WORD
CONTADOR VAR BYTE
las salidas apagadas
RBIF VAR INTCON.0
'bandera de interrupcion del port b
INTF VAR INTCON.1
'bandera de interrupcon general
GIE VAR INTCON.7
'habilita las interrupciones general
INTE VAR INTCON.4
lED VAR PORTA
'variable que controla el led
Rojo CON %01000
'variable que controla el led bicolor en rojo
Verde CON %00100
''variable que controla el led bicolor en rojo
Rx VAR PORTB.0
por donde se reciben los datos hacia el telefono
Tx VAR PORTB.1
por donde se tranmiten los datos hacia el telefono
Humo VAR PORTB.5
que controla la entrada del detector de humos
Mov VAR PORTB.6
que controla la alarma del detector de movimientos
Tension VAR PORTB.4
que controla que se mantiene la tension de alimentacion o no.
Temp VAR PORTB.7
que controla la si hay un exceso de temperatura
HayHumo VAR BIT
'variable a la que se le asigna el estado del pin humo
HayMov VAR BIT
'variable a la que se le asigna el estado del pin mov
Tens_Baja VAR BIT
5
'todas
'
'pin
'pin
'pin
'pin
'pin
'pin
Alarma 3G
'variable a la que se le asigna el estado del pin tension
Temp_Alta VAR BIT
'variable a la que se le asigna el estado del pin temp
HayLLamada VAR BIT
'variable a la que se le asigna el estado las llamadas
var1 VAR BYTE
Velo VAR BYTE
'variable que determina la velocidad del parpadeo de lucecita
Activaint VAR PORTB.2
'variable que habilita o no el transistor de entrada a las interrupciones.
'
'....................INICIO DE VARIABLES .......................................
CONTADOR=0
HayHumo=0
HayMov=0
Tens_Baja=0
Temp_Alta=0
HayLLamada=0
var1=0
Velo=0
Activaint=1
'....................INICIO DE PROGRAMA.........................................
'INTCON =%10011000
'registro de interrupciones
'OPTION_REG =%00001111
'
habilito las resistencias de pul-up IMPORTANTE y flanco descendente para la int en
RB0,preescaler al watchdog ypreescaler:128
ON INTERRUPT GOTO INTERRUPCION1
GOTO INICIOPGM
DISABLE
'Deshabilito las int para que no se produzca otra mientras_
INTERRUPCION1:
IF INTF=1 THEN
ha producido int en RB0
'if humo=1 and mov=1 then
HayLLamada=1
INTF=0
'endif
'Vuelve a la direccion del pgm donde lo dejó
RESUME
ENDIF
'si se
'.....................interrupciones en la puerta b.............................
IF RBIF=1 THEN
ha producido int en RB0
PAUSE 200
'antirrebote
'si se
'...........HUMO....................................
IF Humo=0 THEN
'interrupcion en rb5
hay humo
6
HayHumo=1
ENDIF
'...........MOVIMIENTO..............................
IF Mov=0 THEN
'interrupcion en rb6 alarma de movimiento
HayMov=1
ENDIF
'...........TENSION.................................
IF Tension=0 THEN
'interrupcion en rb4 alarma de movimiento
Tens_Baja=1
ENDIF
'...........TEMPERATURA.............................
IF Temp=0 THEN
'interrupcion en rb7 alarma de movimiento
Temp_Alta=1
ENDIF
RBIF=0
borro la bandera de int del puerto rb
RESUME
'RESUME ES MUY IMPORTANTE ubicarlo bien debe estar a la salida
ENDIF
'Vuelve a la direccion del pgm donde lo dejó
'
ENABLE
'Vuelvo a habilitar las interruociones
'.............................Programa
Principal................................'programa principal:
iniciopgm:
'a
dormir
SLEEP 1
'se ha
despertado despues de 2,3 segundos y testea todas las variables por si hay alguna
activada
'aunque si se activara alguna ya sale ,me da mejor resultado al tener mas espacio el
la pila
'el no
saturar de instruccines la rutina de interrupccion.
'si la
bandera de humo se ha levantado entra
IF HayHumo=1 THEN
'desactiva las int en rb0/int por medio del transistor T1 asi cuando contesta el
telefono OK
Activaint=0
'no se
provoca otro disparo no deseado
Velo=200
'velo
marca la velocidad con la que el unico led parpadea de rojo a verde
GOSUB lUCECITAS
'lucecitas parpadea de rojo a verde con la velocidad velo
7
Alarma 3G
GOSUB MENSAJES
el mensaje ALARMA HUMO
GOSUB espera
'vuelve a activar las int en rb0/int
Activaint=1
la bandera de humo
HayHumo=0
ENDIF
IF Tens_Baja=1 THEN
Activaint=0
Velo=150
GOSUB lUCECITAS
GOSUB MENSAJES
GOSUB espera
Activaint=1
HayMov=0
ENDIF
IF HayMov=1 THEN
Activaint=0
Velo=100
GOSUB lUCECITAS
GOSUB MENSAJES
GOSUB espera
Activaint=1
HayMov=0
ENDIF
IF HayLLamada=1 THEN
'envia
'borra
Activaint=0
Velo=50
GOSUB lUCECITAS
GOSUB MENSAJES
GOSUB espera
HayLLamada=0
Activaint=1
ENDIF
lED=Rojo
cambia el color del led
SLEEP 1
lED=Verde
GOTO iniciopgm
'y
'.........................subrutinas-------------------------------------------lUCECITAS:'.....................................................................
FOR CONTADOR=0 TO 10
lED=Rojo
PAUSE Velo
lED=Verde
PAUSE Velo
NEXT
RETURN
8
ESPERA:'........................................................................
PAUSE 5000
RETURN
MENSAJES:'......................................................................
IF HayLLamada=1 THEN
SEROUT Tx,T9600,["ATH0",13]
PAUSE 500
ENDIF
SEROUT Tx,T9600,["AT+CMGS=23",13] '24
'comando para enviar mensje en modo PDU
24=48 CAR EN TOTAL/2 menos los dos ceros del
principiop
PAUSE 500
'
SEROUT tx,T9600,["0011000B914316098167F80000AA0B"]
'PARTE
COMUN DEL MSJ +---alarmas
IF HayHumo=1 OR Humo=0 THEN
ha quedado cerrado el contacto de la alarma or humo nosSEROUT tx,T9600,["416650DA0C8290D5E613",26]
'mensaje ALARMA HUMO
-respondera con un mensaje a la llamada
RETURN
ENDIF
IF HayMov=1 OR mov=0 THEN
SEROUT tx,T9600,["416650DA0C829A4F6B12",26]
'mensaje ALARMA MOVI
RETURN
ENDIF
IF Temp_Alta=1 OR temp=0 THEN
SEROUT tx,T9600,["416650DA0C82A8C52614",26]
'mesaje ALARMA TEMP
RETURN
ENDIF
IF Tens_Baja=1 OR tension=0 THEN
SEROUT tx,T9600,["416650DA0C82A8C5E614",26]
'mesaje ALARMA TENS
RETURN
ENDIF
IF HayLLamada=1 AND HayHumo=0 AND HayMov=0 AND Tens_Baja=0 AND Temp_Alta=0 THEN
SEROUT tx,T9600,["416650DA0C4E41CF2508",26]
'ALARMAS OK
RETURN
ENDIF
RETURN
END
9
'si se
Alarma 3G
E. Conclusiones finales
El prototipo ha funcionado a la perfección ,sin ningún problema .
Para un futuro se puede contemplar un cargador solar para hacer completamente autónomo el
sistema y no tener conectada la tensión. Este escenario sería el de un chalé o casa aislada de
vacaciones o vivienda no habitual
F.Aguilar .
10
Descargar