'****************************************************************
'* Name : BackupCelular_c115.BAS *
'* Author : Alejandro Martin Torres *
'* Notice : Copyright (c) 2015 BIOEEA desarrollos Tecnologicos *
'* Notice: Prohibida su venta - www.forosdeelectronica.com *
'* : All Rights Reserved *
'* Date : 05/06/2015 *
'* Version: 1.0 *
'* Notes : comandos AT *
'* :at+cmgf= formato del mensaje (1-0) *
'* :at+cmgs=enviar mensaje *
'* :at+cmgd=borrar mensaje *
'* :at+cbc=estdo bateria *
'* :at+chup=cuelga la llamada *
'* :at+cmod= *
'****************************************************************
include "modedefs.bas"
ADCON1=7
DEFINE OSC 20
define LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 3
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 2
LEDROJO VAR PORTA.3
LEDAMARILLO VAR PORTA.4
LEDVERDE VAR PORTA.5
zona1 var PORTB.2
zona2 var PORTB.3
zona3 var PORTB.4
zona4 var PORTB.5
zona5 var PORTB.6
zona6 var PORTB.7
RELE1 VAR PORTC.0
RELE2 VAR PORTC.1
RELE3 VAR PORTC.2
RELE4 var PORTC.4
BIP VAR PORTC.3
OPTION_REG=%10000010
;INTCON=%10100001
;TMR0=0
;T2CON = %00000110
;PR2=124
TRISB=%11111111
;--DEFINICION DE VARIABLES--
x var byte
Z VAR BYTE
Z1 VAR BYTE
Z2 VAR BYTE
Z3 var byte
Z4 var byte
Z5 var byte
Z6 var byte
Z7 var byte
m var byte
n var byte
o var byte
SENAL VAR BYTE
NUM0 var byte
TZONA1 var byte
TZONA2 VAR BYTE
TZONA3 VAR BYTE
TZONA4 VAR BYTE
TZONA5 VAR BYTE
TZONA6 VAR BYTE
TIEMPO VAR BYTE
NUMA1 var byte
NUMB1 var byte
NUMC1 var byte
NUMD1 var byte
NUME1 var byte
NUMF1 var byte
NUMG1 var byte
NUMH1 var byte
NUMA2 var byte
NUMB2 var byte
NUMC2 var byte
NUMD2 var byte
NUME2 var byte
NUMF2 var byte
NUMG2 var byte
NUMH2 var byte
COD1 VAR BYTE
COD2 VAR BYTE
COD3 VAR BYTE
COD4 VAR BYTE
contador var byte
;***CODIGO DE AREA*****************
COD1 = 0 ;* aca colocamos
COD2 = 2 ;* el codigo
COD3 = 9 ;* de area de sus
COD4 = 7 ;* telefonos
;***numero de usuario1*************
NUM0 = 1 ;*
NUMA1 = 5 ;*
NUMB1 = 6 ;* aca colocamos
NUMC1 = 2 ;* el numero de
NUMD1 = 5 ;* telefono
NUME1 = 6 ;* al que queremos
NUMF1 = 1 ;* llamar 1ero
NUMG1 = 7 ;*
NUMH1 = 3 ;*
;***numero de usuario2*************
NUMA2 = 1 ;*
NUMB2 = 1 ;*
NUMC2 = 1 ;* aca colocamos
NUMD2 = 1 ;* el numero de
NUME2 = 1 ;* telefono
NUMF2 = 1 ;* al que queremos
NUMG2 = 1 ;* llamar 2do
NUMH2 = 1 ;*
;**********************************
n = "D"
m = "D"
O = "D"
;***********************************************
ON INTERRUPT GoTo DISPARO
;***********************************************
BOOT:
LCDOUT $FE,1
PAUSE 200
LCDOUT $FE,$80,"-Proyectos ETI-"
LCDOUT $FE,$C0,"ALARMA BackUP v1"
PAUSE 4000
LCDOUT $FE, 1
LCDOUT $FE,$80,"- version DEMO -"
FOR CONTADOR = 184 TO 120 STEP -1 'Cuenta atras
LCDOUT $FE, CONTADOR, 20, 0, 1, "-www.forosdeelectronica.com" 'Imprimir en pantalla
PAUSE 100 'Pausa de 0,15 segundos
NEXT CONTADOR 'Regresa a CONTADOR
PAUSE 100 'Pausa de 2 segundos
FOR CONTADOR = 120 TO 189 'Cuenta hacia delante
LCDOUT $FE, CONTADOR, 20, 0, 1, "-www.forosdeelectronica.com" 'Imprimir en pantalla
PAUSE 100 'Pausa de 0,15 segundos
NEXT CONTADOR
pause 2000
IF PORTA.0 = 0 THEN CONFIG
IF PORTA.1 = 0 THEN BACKUP
GOTO BOOT
;*************************************************
;*En esta seccion, tenemos el cuerpo del programa*
;*para el control de la alarma y backup *
;*************************************************
BACKUP:
SENAL=0
LCDOUT $FE,1
PAUSE 200
LCDOUT $FE,$80," MODO ALARMA "
LCDOUT $FE,$C0," DESACTIVADA "
BACKUP2:
SERIN PORTB.1,T2400,50,BACKUP2,SENAL ; señal rf proveniente de un llavero o teclado RF
if SENAL="A" then
HIGH BIP
PAUSE 900
LOW BIP
GOTO CHECK
ENDIF
GOTO BACKUP2
;******************************************
;En esta seccion monitoreamos los sensores*
;******************************************
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 ;si el sensor esta activado, no dejar armar
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
;*******************************************************
;*En esta seccion monitoreamos cuales son las zonas con*
;*errores o problemas que no nos permite armar sistema *
;*******************************************************
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
;***************************
;En esta seccion, la alarma trabaja en modo armado
;***************************
INICIO:
LCDOUT $FE,1
PAUSE 200
LCDOUT $FE,$80," MODO ALARMA "
LCDOUT $FE,$C0," ACTIVADA "
RF:
SERIN PORTB.1,T2400,50,ZONAS,SENAL
if SENAL="A" then BACKUP
if SENAL="B" then DISPARO
if SENAL="C" then DISPARO
if SENAL="D" then DISPARO
zonas:
if zona1 = 0 then disparo
if zona2 = 0 then disparo
if zona3 = 0 then disparo
if zona4 = 0 then disparo
if zona5 = 0 then disparo
if zona6 = 0 then disparo
IF PORTB.0=0 THEN
LCDOUT $FE,1
LCDOUT $FE,$80," ALARMA PANICO "
LCDOUT $FE,$C0," LLAMANDO "
PAUSE 1500
GOTO DISPARO
ENDIF
PAUSE 50
goto RF
;**************************************************
;*En esta seccion, se deja un aviso en el display *
;*mencionando que se a tenido un evento y que debe*
;*ser reseteado a modo notificado/enterado.Esto es*
;por si el backup fallo en la comunicacion *
;**************************************************
EVENTO:
LCDOUT $FE,1
LCDOUT $FE,$80," HAY UN EVENTO "
LCDOUT $FE,$C0," SIN REGISTRAR "
EVENTO2:
HIGH BIP
SERIN PORTB.1,T2400,800,EVENTO2,SENAL
if SENAL="D" then
LCDOUT $FE,1
LCDOUT $FE,$80," ALARMA "
LCDOUT $FE,$C0," RESTAURADA "
PAUSE 1500
GOTO BACKUP
ENDIF
LOW BIP
PAUSE 500
GOTO EVENTO
;***************************
;===========================
;***************************
CONTEO:
IF Z < 10 THEN HIGH RELE1 : LOW RELE2 : LOW RELE3
IF Z > 17 THEN HIGH RELE3 : LOW RELE1 : LOW RELE2
IF Z > 11 AND Z < 17 THEN HIGH RELE2 : LOW RELE1 : LOW RELE3
RETURN
;***************************
;En esta seccion, voy a sumar todo lo que comente de configuracion
;casi seguro que voy a tener que cambiar varias cosas de arriba.
;por el momento, es lo que hay
;***************************
CONFIG:
LCDOUT $FE,1
PAUSE 200
LCDOUT $FE,$80," MODO PRUEBA DE "
LCDOUT $FE,$C0," SISTEMA "
PAUSE 2000
GOTO INISISTEMA
;***************************
INISISTEMA:
LCDOUT $FE,1
LCDOUT $FE,$80," INICIANDO "
LCDOUT $FE,$C0," SISTEMA "
FOR x = 0 to 4
high bip
pause 800
low bip
next
LCDOUT $FE,1
FOR x = 0 to 25
LCDOUT $FE,$80,"INICIANDO PASO1"
LCDOUT $FE,$C0,"%",DEC Z,"..."
high ledrojo
high ledverde
GOSUB CONTEO
pause 700
low ledrojo
low ledverde
pause 700
Z=Z+1
next
LOW RELE1:LOW RELE2:LOW RELE3
FOR x = 0 to 2
high bip
pause 800
low bip
next
pause 1000
LCDOUT $FE,1
PAUSE 200
LCDOUT $FE,$80,"INICIANDO PASO2"
LCDOUT $FE,$C0,"%30......"
high ledverde
pause 1000
serout2 portc.6,84,["AT",13]
pause 1000
LCDOUT $FE,1
PAUSE 200
LCDOUT $FE,$80,"INICIANDO PASO2"
LCDOUT $FE,$C0,"%50........."
serout2 portc.6,84,["AT",13]
pause 1000
LCDOUT $FE,1
PAUSE 200
LCDOUT $FE,$80,"PASO5 CONECTE EL"
LCDOUT $FE,$C0," EQUIPO GSM "
high ledverde
high bip
PAUSE 2000
LCDOUT $FE,1
PAUSE 200
LCDOUT $FE,$80,"INICIANDO PASO2"
LCDOUT $FE,$C0,"%70..........."
LOW LEDVERDE
LOW BIP
pause 1000
;***MUESTRA LOS DOS NUMEROS DE CELULARES PROGRAMADOS***
LCDOUT $FE,1
PAUSE 200
LCDOUT $FE,$80,DEC NUMA1,DEC NUMB1,DEC NUMC1,DEC NUMD1,DEC NUME1,DEC NUMF1,DEC NUMG1,DEC NUMH1
LCDOUT $FE,$C0,DEC NUMA2,DEC NUMB2,DEC NUMC2,DEC NUMD2,DEC NUME2,DEC NUMF2,DEC NUMG2,DEC NUMH2
PAUSE 5000
;***prueba los NUMEROS DE CELULARES PROGRAMADOS***
LCDOUT $FE,1
PAUSE 200
LCDOUT $FE,$80," PRUEBA COM_CEL "
LCDOUT $FE,$C0,"%90............."
high ledrojo
serout2 portc.6,84,["AT",13]
pause 1000
serout2 portc.6,84,["AT+CMPS=",34,"SM",34,44,34,"SM",34,44,34,"SM",34,13]
pause 1500
serout2 portc.6,84,["AT+CMPS=",34,"ME",34,44,34,"ME",34,44,34,"ME",34,13]
PAUSE 1500
serout2 portc.6,84,["AT+CMGF=1",13] ; pasar modem gsm a modo texto
pause 500
gosub numeroTEL1
PAUSE 300
SEROUT2 portc.6,84,["BIENVENIDO=",m,n,o,26]; enviar
pause 200
gosub numeroTEL1
pause 300
SEROUT2 portc.6,84,["BIENVENIDO=",m,n,o,26]
pause 5000
serout2 portc.6,84,["AT",13]
pause 1000
serout2 portc.6,84,["AT+CMPS=",34,"SM",34,44,34,"SM",34,44,34,"SM",34,13]
pause 1500
serout2 portc.6,84,["AT+CMPS=",34,"ME",34,44,34,"ME",34,44,34,"ME",34,13]
PAUSE 1500
serout2 portc.6,84,["AT+CMGF=1",13] ; pasar modem gsm a modo texto
pause 500
gosub numeroTEL2
PAUSE 300
SEROUT2 portc.6,84,["BIENVENIDO=",m,n,o,26]; enviar
pause 200
gosub numeroTEL2
pause 300
SEROUT2 portc.6,84,["BIENVENIDO=",m,n,o,26]
low ledrojo
pause 300
LCDOUT $FE,1
PAUSE 200
LCDOUT $FE,$80,"FIN PRUEBA SIST "
LCDOUT $FE,$C0,"%100............"
PAUSE 3000
GOTO configSISTEMA
;===fin configuracion modem===
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
numeroTEL2:
serout2 portc.6,84,["AT+CMGS=",34,DEC COD1,DEC COD2,DEC COD3,DEC COD4,DEC NUM0,DEC NUMA2,DEC NUMB2,DEC NUMC2,DEC NUMD2,DEC NUME2,DEC NUMF2,DEC NUMG2,DEC NUMH2,34,13]
return
;DISABLE
DISPARO:
LCDOUT $FE,1
PAUSE 200
LCDOUT $FE,$80," ZONA "
LCDOUT $FE,$C0," ALERTA "
x = 0
DISPARO1:
IF X = 10 THEN DISPARO2
X=X+1
high bip
pause 800
low bip
SERIN PORTB.1,T2400,300,DISPARO1,SENAL
if SENAL="A" then BACKUP
GOTO DISPARO1
DISPARO2:
HIGH BIP
;IF PORTB.0 = 0 THEN
LCDOUT $FE,1
PAUSE 200
LCDOUT $FE,$80," -DISPARO- "
LCDOUT $FE,$C0," LLAMANDO "
PAUSE 100
HIGH LEDrojo
SEROUT2 portc.6,84,["AT",13]
PAUSE 500
serout2 portc.6,84,["AT",13]
PAUSE 500
serout2 portc.6,84,["AT+CMPS=",34,"SM",34,44,34,"SM",34,44,34,"SM",34,13]
pause 2000
serout2 portc.6,84,["AT+CMPS=",34,"ME",34,44,34,"ME",34,44,34,"ME",34,13]
PAUSE 2000
serout2 portc.6,84,["AT+CMGF=1",13] ; pasar modem gsm a modo texto
pause 500
gosub numeroTEL1
PAUSE 300
SEROUT2 portc.6,84,["DISPARO ALARMA",26]; enviar
pause 200
gosub NumeroTEL1
pause 300
SEROUT2 portc.6,84,["DISPARO ALARMA",26]; enviar
PAUSE 5000
SEROUT2 portc.6,84,["AT",13]
PAUSE 1000
serout2 portc.6,84,["AT+CMPS=",34,"SM",34,44,34,"SM",34,44,34,"SM",34,13]
pause 2000
serout2 portc.6,84,["AT+CMPS=",34,"ME",34,44,34,"ME",34,44,34,"ME",34,13]
PAUSE 2000
serout2 portc.6,84,["AT+CMGF=1",13] ; pasar modem gsm a modo texto
pause 500
gosub numeroTEL2
PAUSE 300
SEROUT2 portc.6,84,["DISPARO ALARMA",26]; enviar
pause 200
gosub numeroTEL2
pause 300
SEROUT2 portc.6,84,["DISPARO ALARMA",26]; enviar
PAUSE 300
LOW LEDrojo
LOW BIP
GOTO EVENTO
;ENDIF
;INTCON.2=0
;RESUME
;ENABLE
;configSISTEMA:
;LCDOUT $FE,1
;PAUSE 200
;LCDOUT $FE,$80," CONFIGURACION "
;LCDOUT $FE,$C0," ZONAS "
;PAUSE 1500
;LCDOUT $FE,1
;PAUSE 200
;LCDOUT $FE,$80,"1(P-A) / 2(Inst)"
;LCDOUT $FE,$C0,"Z1=",dec TZONA1," (Enter)"
;LCDOUT $FE,1
;PAUSE 200
;LCDOUT $FE,$80,"1(P-A) / 2(Inst)"
;LCDOUT $FE,$C0,"Z2=",dec TZONA2," (Enter)"
;LCDOUT $FE,$C0,"Z3=",dec TZONA3," (Enter)"
;LCDOUT $FE,$C0,"Z4=",dec TZONA4," (Enter)"
;LCDOUT $FE,$C0,"Z5=",dec TZONA5," (Enter)"
;LCDOUT $FE,$C0,"Z6=",dec TZONA6," (Enter)"
;goto configSISTEMA
END