Sei sulla pagina 1di 27

ALARMA CON ENVO DE SMS

Este es un ejemplo sencillo de envo de mensajes SMS a travs de un PIC conectado


a un telfono mvil por medio de una interfaz serie RS-232. El funcionamiento es
sencillo, cuando cuando se activa el actuador este produce una interrupcin en el
PIC a travs de la patilla RB0 que hace que se enven los comandos AT necesarios
para que el telfono mvil enve un nmero determinado de mensajes de alarma al
nmero que hayamos introducido en el programa.
Qu es un mdem GSM?
Un mdem GSM (Global System for Mobile Communications) es un dispositivo
inalmbrico que funciona en la red GSM, utilizada mundialmente para comunicacin
entre telfonos mviles. La comunicacin se realiza a travs de ondas de radio.
El mdem GSM puede verse como un telfono celular al cual se le ha adaptado
una interfaz serial RS232, con el objeto de ser controlado a travs de una
computadora. A travs del mdem GSM puede realizarse enlaces para trasmisin de
voz, fax, datos, comunicacin por internet y mensajes SMS (Short Message Service).
Tambin existen mdems GSM que poseen una interfaz USB para ser controlados.
El mdem GSM puede ser operado a travs de un microcontrolador, por ejemplo
el PIC 16F88 PIC 18F2550 y de esta manera ser incorporado a sistemas de control
remoto supervisorio automtico.

En una segunda aplicacin puede conectarse a una computadora PC Laptop


mediante un cable serial RS232 o un cable USB-Serial y usarse software comercial
propietario para el envo programado de mensajes SMS mviles. El nmero de
mensajes SMS que pueden ser procesados por un mdem GSM por minuto es de
alrededor de seis a diez mensajes por minuto.

NOKIA 3220

En cuales bandas de frecuencia operan los sistemas GSM?


Bsicamente existen 4 bandas, que son estndares a nivel mundial: 850, 900, 1800
y 1900 Mhz. En la mayora de los pases de Europa, Asia, Australia, Medio Oriente y
Africa, se emplean las bandas de 900-1800 Mhz. En los Estados Unidos, Canad,
Mxico y la mayor parte de Centro y Sudamrica se usan las bandas de 850-1900
Mhz. En Mxico se emplea la banda de 1900 Mhz. Para conocer la banda GSM en la
que opera cada pas, vaya al siguiente link: www.worldtimezone.com/gsm.html
Los mdems GSM cuatri-banda permiten operar en cualquiera de las 4 bandas
mencionadas. Mediante los comandos AT, es posible configurar el mdem GSM
cuatri-banda para operar en la banda deseada. En la figura de abajo se muestra la
asignacin de pares de frecuencias GSM a nivel global.

Tarjeta SIM
Una de las caractersticas principales del estndar GSM es el mdulo de identidad
del suscriptor, conocida comnmente como tarjeta SIM. La tarjeta SIM es una tarjeta
inteligente desmontable que contiene la informacin de suscripcin del usuario,
parmetros de red y directorio telefnico. Esto permite al usuario mantener su
informacin despus de cambiar su telfono. Paralelamente, el usuario tambin
puede cambiar de operador de telefona, manteniendo el mismo equipo
simplemente cambiando la tarjeta SIM. Algunos operadores introducen un bloqueo
para que el telfono utilice un solo tipo de tarjeta SIM, o slo una tarjeta SIM
emitida por la compaa donde se compr el telfono, esta prctica se conoce como
bloqueo de sim, y es ilegal en algunos pases.
LOS COMANDOS AT
"Los comandos AT son instrucciones codificadas que conforman un lenguaje de
comunicacin
entre
el
hombre
y
un
terminal
modem.
En un principio, el juego de comandos AT fue desarrollado en 1977 por Dennis
Hayes como un interfaz de comunicacin con un modem para as poder
configurarlo y proporcionarle instrucciones, tales como marcar un nmero de
telfono. Ms adelante, con el avance del baudio, fueron las compaas
Microcomm y US Robotics las que siguieron desarrollando y expandiendo el
juego
de
comandos
hasta
universalizarlo.
Los comandos AT se denominan as por la abreviatura de attention .
Aunque la finalidad principal de los comandos AT es la comunicacin con
modems, la telefona mvil GSM tambin ha adoptado como estandar este
lenguaje para poder comunicarse con sus terminales. De esta forma, todos los
telfonos mviles GSM poseen un juego de comandos AT especfico que sirve de
interfaz para configurar y proporcionar instrucciones a los terminales. Este juego
de instrucciones puede encontrarse en la documentacin tcnica de los
terminales GSM y permite acciones tales como realizar llamadas de datos o de
voz, leer y escribir en la agenda de contactos y enviar mensajes SMS, adems
de muchas otras opciones de configuracin del terminal."

PIN OUT DEL POP PORT DEL CELULAR NOKIA

Pin
Numb
er

Pin
Name

Vin

GND

ACI

V Out /
VDD+

Connected to pin 3 in DKU-2 usb data cable / For Hansfree (ex.


HS-23): microchip power supply

USB Vbus

Also act as USB power detection? Should be connected to USB


pin 1 in usb data cable. (USB Vcc +5V)

FBus
Rx/USB
D+

USB exists only in some models*. Should be connected to USB


pin 3 in usb data cable. (USB DATA+)

FBus
Tx/USB D-

USB exists only in some models*. Should be connected to USB


pin 2 in usb data cable. (USB DATA-)

GND

X Mic-

Audio in - Ext. Mic input negativ

10

X Mic+

Audio in - Ext. Mic input positiv

11

HS Ear L-

12

HS Ear L+ Audio out - Ext. Audio out - left, positiv

13

HS Ear R-

Audio out - Ext. audio out - right, negativ

14

HS Ear R+

Audio out - Ext. audio out - right, positiv. Pins 10-14 may be
used for antenna connection.

GND

Description
Charger input
Charger ground
Accessory Control Interface (short with pin 2 for handsfree
recognition)

Data GND (USB GND)

Audio out - Ext. Audio out - left, negativ

shield GND in cavities

PINOUT COMPATIBILITY:

Nokia 2112

Nokia 3585(i)

Nokia 2115(i)

Nokia 3586(i)

Nokia 2116i

Nokia 3587(i)

Nokia 2125i

Nokia 3588i

Nokia 2126i

Nokia 3589i

Nokia 2128i

Nokia 5100

Nokia 2270

Nokia 5140

Nokia 2272

Nokia 6011i

Nokia 2280

Nokia 6012

Nokia 2285

Nokia 6015(i)

Nokia 3100

Nokia 6016i

Nokia 3105

Nokia 6019i

Nokia 3108

Nokia 6020

Nokia 3120

Nokia 6100

Nokia 3125

Nokia 6101

Nokia 3200

Nokia 6102

Nokia 3205

Nokia 6108

Nokia 3220

Nokia 6155

Nokia 3230

Nokia 6170

Nokia 3300

Nokia 6200

Nokia 3570

Nokia 6220

Nokia 3580

Nokia 6225

Nokia 6230

Nokia 7270

Nokia 6230i

Nokia 7360

Nokia 6233

Nokia 7600

Nokia 6235

Nokia 7610

Nokia 6255

Nokia 7700

Nokia 6260

Nokia 7710

Nokia 6560

Nokia 9300

Nokia 6585(i)

Nokia 9500

Nokia 6610

Nokia E50

Nokia 6610i

Nokia E60

Nokia 6630

Nokia E61

Nokia 6650

Nokia E61i

Nokia 6670

Nokia E65

Nokia 6680

Nokia E70

Nokia 6681

Nokia N70

Nokia 6800

Nokia N71

Nokia 6810

Nokia N72

Nokia 6820

Nokia N73

Nokia 6822

Nokia N80

Nokia 7200

Nokia N90

Nokia 7210

Nokia N91

Nokia 7250

Nokia N92

Nokia 7250i

Nokia N93

Nokia 7260

Nokia N93i

Comandos AT
Los comandos AT los cuales se pueden utilizar con Nokia GMS (incluyendo
tambien DCS1800 y PCS1900) y productos Wideband de CDMA (WCDMA)
disponible despus del otoo 2001, por ejemplo, los productos siguientes:
Nokia 8310, Nokia 6310, Nokia 7650, Nokia 8910, y Nokia D211.
Algunos de los comandos AT no son soportados por todos los productos
Nokia o por todos los operadores. Dar un comando que no sea soportado por
el producto causa una respuesta de error.
Los comandos AT son un juego de instrucciones que permiten configurar y
controlar a los telfonos mviles desde un equipo conectado por datos,
realizando acciones tales como: generar llamadas, leer y escribir la agenda,
enviar mensajes SMS, entre otras.
Las empresas fabricantes de telfonos mviles detallan en documentos
escritos los Comandos AT soportados por sus equipos. En este proyecto se
utiliz como medio para la Tx y Rx de Comandos AT un celular marca Nokia,
por lo que se har referencia a los comandos utilizados por esta firma en
particular.

Inicialmente los comandos AT fueron desarrollados para la comunicacin con


los modems, pero la telefona mvil tambin ah adoptado este estndar para
comunicarse con los terminales. Todos los telfonos mviles disponen de un
juego de comandos AT especfico que permiten su configuracin, asi
tenemos:
Realizar llamadas de voz o datos.

Escribir y enviar mensajes SMS.

Leer y escribir en la agenda de contactos.

Cada terminal GSM implementa su juego de comandos AT y puede que no


sea totalmente compatible con el estndar. La comunicacin con el telfono
mvil puede ser por cable serie, infrarrojos, Bluetooth, etc..

Los comandos bsicos implementados en la mayora de los telfonos mviles


son.

Todos los comandos deben ir precedidos por AT.


AT+CMGF: Configurar el mvil en modo texto.
AT+CNMI: Comando at para que el sms no est en el buzn.
AT+CPAS : Muestra la implementacin del comando.
AT+A: Pone mdem en modo de Autorespuesta.
AT+&T: Comandos de Pruebas.
AT+&V: Ver configuracin activa, etc.
AT+&X: Temporizado de transmisor.
A/: Re ejecuta el ltimo comando dado.
A>: Reejecuta

NOKIA PC SUITE

Este es un software que permite conectar el celular, y asi poder controlar el


celular revisar mensajes y estados de este:

Y estos son los cables con los que se puede conectar a la computadora

Para poder conectar estos cables se utilizan los diferentes drivers, estos
drivers crean un puerto COM VIRTUAL, aparte del que aparece en las
distintas computadoras, este puerto se simula en una puerto USB:

Y asi se puede facilitar el uso del hyperterminal para poder utilizar los
comandos AT y controlar el celular desde la computadora, una vez sea
logrado esto comunicarlo con el micrcontrolador (PIC , ATMEGA), seria una
tarea menos complicada, ya que esto verifica que el celular acepta los
comandos AT.

Actualmente no se venden estos cables, pero si los genricos que conectan y


adaptan seales ms no crean puertos COM virtuales:

Para eso tenemos que utilizar otro mtodo de comunicacin:

Utilizamos el CI MAX 232 y conectamos los pines correpondientes,

Luego para poder mandar los diferentes cdigos a travs del puerto COM de
la computadora utilizamos el programa ADVANCED SERIAL PORt MONITOR:

Este programa se encarga de enviar a travez de la comunicacin rs232 los


diferentes valores ya sea en HEXADECIMAL o en cdigo ASCII:

Entonces para poder hacer que el celular detecte que la computadora


requiere comunicacin, se utiliza este programa.

El ADVANCED SERIAL PORT MONITOR, tambin deja visualizar tanto los datos
que salen como los que entran a la computadora, al utilizar el NOKIA POWER
SUITE para comunicar el celular con la computadora este genera una trama
de nmero en hexadecimal, y segn los foros esta trama solo para los
modelos 3220b viene a ser:

CODIGO EN HEXADECIMAL
CODIGO ASCII

61 74 26 66 0d 0a 00
"
55 55 55 55 55 55 55 55
"

at&f...

"

UUUUUUUU

"

1e 00 10 d7 00 08 00 01 00 12 04 00 01 60 0b ac
"............`.

"

Una vez enviado esto el celular respondera de la siguiente manera y se


puede visualizar en el ADVANCED SERIAL PORT MONITOR:

CODIGO EN HEXADECIMAL
CODIGO ASCII

1e 10 00 7f 00 02 d7 00 c9 6d
......m
00 00 00 00 00 00 00 00 00 00
..........
00 00 00 00 00 00 00 00 00 00

..........

00 00 00 00 00 00 00 00 00 00

..........
..

00 00

Entonces despus de esto ya podemos comunicar el hyperterminal con el


celular y enviar los diferentes comandos AT.

Este seria un gran paso para poder comunicar el controlador con el celular
ya que el hyperterminal solo enviara seal como si fuera una simulacin.

DIAGRAMA DE FLUJO.

INICIO

DEFINE NO WDT

CONFIGURAR
INTERRUPCIN
POR PIN RB0

CONFIGURAR
PUERTO I/O

CONFIGURAR
UART
115200
BAUDIOS
1 BIT START

ENVIA TRAMA DE
DATOS EN
HEXADECIMAL

ENVIA TRAMA DE
DATOS EN
HEXADECIMAL

NUMERO_MENSAJES=
1

FLAG =1

NO

SI

FLAG = 0, i = 0

SI

i=NUMERO_MENSAJES

NO
ENVIA: AT + CMGF= 1 PARA
CONFIGURAR MODO MENSAJE

RETARDO 1
SEGUNDO

ENVIA:AT+CMGS=numero_a_e
nviar

RETARDO 1
SEGUNDO

ENVIA:ALARMA ACTIVADA

ENVIA: CTRL+Z

I++

FIN

HERRAMIENTAS

CELULAR NOKIA 3220 (MODULO GSM)

GSM 850/1800/1900 para Norte America

GENERA
L
DISPLAY

Red

GSM 900 / GSM 1800 / GSM 1900

Tipo
Tama
o

65K colores
128 x 128 pixels, 5 lineas

- Cubiertas Cut-out
- Navegacin de cinco vas
- Wallpapers y screensavers animados

MEMORI
A

CARACTE
RSTICAS

Agen
da
telef
nica

- Wallpapers bajables
256 x 4 campos

- En 3 MB de memoria compartida
. MMS, max 100 kB c/u
. Ringtones
. Imgenes
. Memo de voz
- En memoria de 1.5 MB
. Java apps,max 128 kB c/u
GPRS
Clase 10
(4+1/3+
2 slots)
Velocidad de datos
177 kbps
(EDGE),
32 - 48
kbps
(GPRS)
Mensajera
SMS,
MMS,
EMail,
Mensajer
o
instantn
eo,
Mensajer
o liviano
Juegos
3 - Club
Pinball,
Dance
Delight,
Phantom
Spider +
bajables,
Comprar
- Java
MIDP 2.0
- WAP 2.0
(xHTML
browser)
- EDGE
- HSCSD
- T9
Calendari
o
Calculad
ora
- Editor

de
imgene
s
- Manos
libres
incorpora
do
- Interfaz
Pop-port
- Tapas
opcionale
s Fun
Shell
sensor
tilt para
control
de
juegos y
wave
messagin
g

MICROCONTROLADOR PIC16F877

En este proyecto se utilizo el PIC 16F877. Este microcontrolador es fabricado


por MicroChip familia a la cual se le denomina PIC. El modelo 16F877 posee
varias caractersticas que hacen a este microcontrolador un dispositivo muy
verstil, eficiente y practico para ser empleado en la aplicacin que
posteorimente ser detallada.

Algunas de estas caractersticas se muestran a continuacin:

Soporta modo de comunicacin serial, posee dos pines para ello.

Amplia memoria para datos y programa.

Memoria reprogramable: La memoria en este PIC es la que se


denomina FLASH; este tipo de memoria se puede borrar electrnicamente (esto
corresponde a la "F" en el modelo).

Set de instrucciones reducidas (tipo RISC), pero con las instrucciones


necesarias para facilitar su manejo.

CARACTERISTICAS

En siguiente tabla de pueden observar las caractersticas ms relevantes del


dispositivo:

CARACTERSTICAS

Frecuencia mxima

Memoria de programa flash palabra de 14 bits

Posiciones RAM de datos

Posiciones EEPROM de datos

Puertos E/S

Nmero de pines

Interrupciones

Timers

Mdulos CCP

Comunicaciones Serie

Comunicaciones paralelo

Lneas de entrada de CAD de 10 bits

Juego de instrucciones

Longitud de la instruccin

Arquitectura

CPU

Canales Pwm

Pila Harware

Ejecucin En 1 Ciclo Mquina

COMPILADOR DEL PROGRAMA


Si queremos realizar la programacin de los microcontroladores PIC en un lenguaje
como el C, es preciso utilizar un compilador de C.
Dicho compilador nos genera ficheros en formato Intel-hexadedimal, que es el
necesario para programar (utilizando un programador de PIC) un microcontrolador de
6, 8, 18 40 patillas.
El compilador de C que vamos a utilizar es el PCW de la casa CCS Inc. A su vez, el
compilador lo integraremos en un entorno de desarrollo integrado (IDE) que nos va a
permitir desarrollar todas y cada una de las fases que se compone un proyecto, desde
la edicin hasta la compilacin pasando por la depuracin de errores. La ltima fase, a
excepcin de la depuracin y retoques hardware finales, ser programar el PIC.

INSTRUCCIONES IMPORTANTES A UTILIZAR

#USE RS232 (BAUD=baudios, XMIT=pin, RCV=pin...)


Esta directiva le dice al compilador la velocidad en baudios y los pines utilizados para la
I/O serie. Esta directiva tiene efecto hasta que se encuentra otra directiva RS232.
La directiva #USE DELAY debe aparecer antes de utilizar #USE RS232. Esta directiva
habilita el uso de funciones tales como GETCH, PUTCHAR y PRINTF. Si la I/O no es
estandar es preciso poner las directivas FIXED_IO o FAST_IO delante de #USE RS232
OPCIONES:

c = GETC()
c = GETCH()
c = GETCHAR()
Estas funciones esperan un carcter por la patilla RCV del dispositivo RS232 y retorna
el carcter recibido.
Es preciso utilizar la directiva #USE RS232 antes de la llamada a esta funcin para que
el compilador pueda determinar la velocidad de transmisin y la patilla utilizada. La
directiva #USE RS232 permanece efectiva hasta que se encuentre otra que anule la
anterior.
Los procedimientos de I/O serie exigen incluir #USE DELAY para ayudar a sincronizar
de forma correcta la velocidad de transmisin. Recordad que es necesario adaptar los
niveles de voltaje antes de conectar el PIC a un dispositivo RS-232.
Ejemplo:
printf("Continuar (s,n)?");
do {
respuesta=getch();
} while(respuesta!='s'&& respuesta!='n');
PUTC()
PUTCHAR()

Estas funciones envan un carcter a la patilla XMIT del dispositivo RS232. Es preciso
utilizar la directiva #USE RS232 antes de la llamada a esta funcin para que el
compilador pueda determinar la velocidad de transmisin y la patilla utilizada. La
directiva #USE RS232 permanece efectiva hasta que se encuentre otra que anule la
anterior.
PRINTF([function], string, [values])
La funcin de impresin formateada PRINTF saca una cadena de caracteres al
estndar serie RS-232 o a una funcin especificada. El formato est relacionado con el
argumento que ponemos dentro de la cadena (string).
Cuando se usan variables, string debe ser una constante. El carcter % se pone dentro
de string para indicar un valor variable, seguido de uno o ms caracteres que dan
formato al tipo de informacin a representar.
Si ponemos %% obtenemos a la salida un solo %. El formato tiene la forma genrica
%wt, donde w es optativo y puede ser 1,2,...,9. Esto es para especificar cuntos
carcteres son representados; si elegimos el formato 01,...,09 indicamos ceros a la
izquierda, o tambin 1.1 a 9.9 para representacin en punto flotante.
t es el tipo de formato y puede ser uno de los siguientes:

CODIGO EN C CON UNA ENTRADA A SERVICIO DE INTERRUPCION

#include <16F877A.h>

#FUSES NOWDT, HS, NOPUT, NOLVP

#use delay(clock=20000000)
#use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
int trama1=0x61;
#include <lcd.c>
#define NUMERO_MENSAJES 1 //Nmero de mensajes a enviar
#define led_gsm pin_d0
#define led_espera pin_d1
char NUMERO[] = "989616025"; //Numero de telfono a marcar
char MENSAJE[] = "Alarma activada\r Casa Zea Diaz";//Mensaje a enviar
int flag=0;//variable auxiliar

#int_EXT
void EXT_isr(void){//funcin de tratamiento a la interrupcin externa
flag=1;
}

void conectar_Modem(){
//Envia un trama de datos Fbus para que el celular reconozca al PIC
output_high(led_gsm);
putchar(0x61);
putchar(0x74);
putchar(0x26);
putchar(0x66);
putchar(0x0D);
putchar(0x0A);
putchar(0x00);
putc(0x0D);
delay_ms(300);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x0D);
delay_ms(300);
putc(0x1E);
putc(0x00);
putc(0x10);
putc(0xD7);
putc(0x00);
putc(0x08);
putc(0x00);
putc(0x01);
putc(0x00);
putc(0x12);
putc(0x04);
putc(0x00);
putc(0x01);
putc(0x60);
putc(0x0B);
putc(0xAC);
putc(0x0D);
delay_ms(1000);
output_low(led_gsm);
}

//Funcin para configurar paramtros del modem


void configurar_Modem(){
output_high(led_gsm);
//printf("ATD%s\r",NUMERO);
delay_ms(500);
printf("AT+CMGF=1\r"); //configura el tipo de formato de mensaje de texto SMS (formato TEXTO)
delay_ms(400);
output_low(led_gsm);
}

enable_interrupts(GLOBAL);//habilito interrupcin global


enable_interrupts(INT_EXT);//habilito interrupcin externa
ext_int_edge(L_TO_H);// flanco de activacin ascencente

//Funcin para enviar mensajes SMS


void Envio_SMS(){
output_high(led_gsm);
flag=0;
char ctrlz = 26; //combinacion de teclas "ctrl+z"
printf("AT+CMGS=\"%s\"\r",NUMERO);
delay_ms(500);
printf("%s",MENSAJE);
delay_ms(500);
printf("%c",ctrlz); //se envia el mensaje
//putc(26);
delay_ms(1000);
output_low(led_gsm);
}
void main()
{
int i;
SET_TRIS_D(0x00);//Configura el puerto B: 0=Salida; 1=Entrada
output_d(0x00); //Limpia el registro del puerto
delay_ms(1000);
//Configuracin registros PIC

delay_ms(1000);//retarto para estabilizar


conectar_Modem();//envia la trama de numeros en Hecadecimal
conectar_Modem();//envia la trama de numeros en Hecadecimal
conectar_Modem();//envia la trama de numeros en Hecadecimal
configurar_Modem();//llamada a la funcin de configuracin del modem
while(true) { //Bucle infinito hasta interrupcin

if (flag==1){ // si se produce alarma envio mensajes


for(i=0;i<NUMERO_MENSAJES;i++)
{
Envio_SMS();
}
}

else if(flag==0) {
//inicio://Etiqueta de retorno
output_high(Led_espera);//Pone en alto a led
delay_ms(500);//Demora
output_low(Led_espera);//Pone en bajo a led
delay_ms(500);//Demora
//goto inicio;//Regresa a la etiqueta inicio
}
}
}

CODIGO EN C PARA 8 ENTRADAS

#include <16F877A.h>

//#device ICD=TRUE//si no utilizas el debugger debe de ir comentada

#FUSES NOWDT, HS, NOPUT, NOLVP


#use delay(clock=20000000)
#use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#include <lcd.c>

#define NUMERO_MENSAJES 1 //Nmero de mensajes a enviar


#define led_gsm pin_C0
#define led_espera pin_C1
#define relay pin_C2
#define inicio pin_C3
#define zona1 pin_b0
#define zona2 pin_b1
#define zona3 pin_b2
#define zona4 pin_b3
#define zona5 pin_b4
#define zona6 pin_b5
#define zona7 pin_b6
#define zona8 pin_b7
//char respuesta[];
char A1;char s1;
char A2;char s2;
char A3;char s3;
char A4;char s4;
char A5;char s5;
char A6;char s6;
char A7;char s7;
char A8;char s8;
int alarma=0b00000000;

char NUMERO[] = "989616025"; //Numero de telfono a marcar


char MENSAJE[] = "Alarma activada\r Casa Zea Diaz \r ZONA(S): ";//Mensaje a enviar

void iniciar(){
printf(LCD_PUTC,"\f");//BORRAR LCD
lcd_gotoxy(1,1);
printf(LCD_PUTC,"INICIAR ALARMA?");
iniciar:
if (input(inicio))
{
goto iniciar;
}

}
void conectar_Modem(){
//Envia un trama de datos Fbus para que el celular reconozca al PIC
output_high(led_gsm);
putchar(0x61);
putchar(0x74);
putchar(0x26);
putchar(0x66);
putchar(0x0D);
putchar(0x0A);
putchar(0x00);
putc(0x0D);
delay_ms(300);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x0D);
delay_ms(300);
putc(0x1E);
putc(0x00);
putc(0x10);
putc(0xD7);
putc(0x00);
putc(0x08);
putc(0x00);
putc(0x01);
putc(0x00);
putc(0x12);
putc(0x04);
putc(0x00);
putc(0x01);
putc(0x60);
putc(0x0B);
putc(0xAC);
putc(0x0D);
delay_ms(1000);
output_low(led_gsm);
}

//Funcin para configurar paramtros del modem


void configurar_Modem(){
output_high(led_gsm);
//printf("ATD%s\r",NUMERO);
delay_ms(500);
printf("AT+CMGF=1\r"); //configura el tipo de formato de mensaje de texto SMS (formato TEXTO)
delay_ms(400);
output_low(led_gsm);
}

//Funcin para enviar mensajes SMS


void Envio_SMS(){

output_high(led_gsm);
//flag=0;
char ctrlz = 26; //combinacion de teclas "ctrl+z"

printf("AT+CMGS=\"%s\"\r",NUMERO);
delay_ms(500);
printf("%s%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c
%c",MENSAJE,s1,A1,s2,A2,s3,A3,s4,A4,s5,A5,s6,A6,s7,A7,s8,A8);
delay_ms(500);
printf("%c",ctrlz); //se envia el mensaje
//putc(26);
delay_ms(1000);
output_low(led_gsm);
printf(LCD_PUTC,"\f");//BORRAR LCD
lcd_gotoxy(1,1);
printf(LCD_PUTC,"MENSAJE ENVIADO");
lcd_gotoxy(1,2);
printf(LCD_PUTC,"30SEG PARA RELAY ");
}

void main()
{
disable_interrupts(GLOBAL);//habilito interrupcin global
disable_interrupts(INT_EXT);//habilito interrupcin externa
setup_adc_ports(NO_ANALOGS);
//setup_adc(ADC_CLOCK_DIV_2);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
//setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
lcd_init();
SET_TRIS_C(0b10000111);
SET_TRIS_B(0xFF);//Configura el puerto B: 0=Salida; 1=Entrada
SET_TRIS_D(0x00);//Configura el puerto D: 0=Salida; 1=Entrada

output_d(0x00); //Limpia el registro del puerto


delay_ms(500);
iniciar();
printf(LCD_PUTC,"\f");//BORRAR LCD
lcd_gotoxy(1,1);
printf(LCD_PUTC,"INICIANDO");
delay_ms(500);//retarto para estabilizar
lcd_gotoxy(1,2);
printf(LCD_PUTC,"*");
conectar_Modem();//envia la trama de numeros en Hecadecimal
lcd_gotoxy(2,2);
printf(LCD_PUTC,"*");
conectar_Modem();//envia la trama de numeros en Hecadecimal
lcd_gotoxy(3,2);
printf(LCD_PUTC,"*");
conectar_Modem();//envia la trama de numeros en Hecadecimal
lcd_gotoxy(4,2);
printf(LCD_PUTC,"*");

configurar_Modem();//llamada a la funcin de configuracin del modem


lcd_gotoxy(5,2);
printf(LCD_PUTC,"*");

printf(LCD_PUTC,"\f");//BORRAR LCD
lcd_gotoxy(1,1);
printf(LCD_PUTC,"ALARMA ACTIVADA");

bucle:
output_high(Led_espera);//Pone en alto a led

//TESTEO DE LA ZONA1
if (!input(zona1))
{
A1='1';
s1=0x20;
alarma=alarma|0b00000001;
}
else
{
A1=0x00;
s1=0x00;
alarma=alarma&0b11111110;
}

//TESTEO DE LA ZONA2
if (!input(zona2))
{
A2= '2';
s2=0x20;
alarma=alarma|0b00000010;
}
else
{
A2=0x00;
s2=0x00;
alarma=alarma&0b11111101;
}

//TESTEO DE LA ZONA3
if (!input(zona3))
{
A3='3';
s3=0x20;
alarma=alarma|0b00000100;
}
else
{
A3=0x00;
s3=0x00;
alarma=alarma&0b11111011;
}

//TESTEO DE LA ZONA4
if (!input(zona4))
{
A4='4';
s4=0x20;
alarma=alarma|0b00001000;
}
else
{
A4=0x00;
s4=0x00;
alarma=alarma&0b11110111;
}

//TESTEO DE LA ZONA5
if (!input(zona5))
{

A5='5';
s5=0x20;
alarma=alarma|0b00010000;
}
else
{
A5=0x00;
s5=0x00;
alarma=alarma&0b11101111;
}

//TESTEO DE LA ZONA6
if (!input(zona6))
{
A6='6';
s6=0x20;
alarma=alarma|0b00100000;
}
else
{
A6=0x00;
s6=0x00;
alarma=alarma&0b11011111;
}

//TESTEO DE LA ZONA7
if (!input(zona7))
{
A7='7';
s7=0x20;
alarma=alarma|0b01000000;
}
else
{
A7=0x00;
s7=0x00;
alarma=alarma&0b10111111;
}

//TESTEO DE LA ZONA8
if (!input(zona8))
{
A8='8';
s8=0x20;
alarma=alarma|0b10000000;
}
else
{
A8=0x00;
s8=0x00;
alarma=alarma&0b01111111;
}

//respuesta=getch();
///if (respuesta=="RING")
//{
//output_low(relay);

//}

if (alarma==0b00000000)
{
goto bucle;
}
else
{
output_low(Led_espera);
Envio_SMS();

delay_ms(300000);//30 SEG PARA ACTIVAR EL RELAY

output_high(relay);//ACTIVA EL RELAY

printf(LCD_PUTC,"\f");//BORRAR LCD
lcd_gotoxy(1,1);
printf(LCD_PUTC,"ALARMA ACTIVADA");
goto bucle; // TODO: USER CODE!!
}

Potrebbero piacerti anche