Hola amigos. Estuve buscando informacion sobre modulos GSM para programarlo en Basic y he llegado hasta unos posts de unos años anteriores y me he topado con el código del amigo mecatrodatos.
Lo he probado pero no me funciona, es decir, al inicio se prenden los 4 leds, se apagan como está en la programación y veo en el hyperterminal que solo se envia AT CADA 5 SEGUNDOS, es decir, el módulo GSM no me responde con un OK como debería ser.
Cuento con un módulo GSM SIM900 y estoy buscando información para poder presentar mi proyecto de titulación.
Quiero un programa donde pueda establecer la comunicación entre el PIC y el Módulo GSM mediante sus comandos AT.
En otras palabras, quiero que me responda y transmita del PIC a Movil y viceversa.
Es un programa para encender un led desde el celular y que me mande mensaje cuando este se encienda.
Luego añadiré sensores con salidas analógicas y otras cosas mas que son más sencillas.
Quisiera que me orienten por favor, entiendo el lenguaje basic pero estoy en proceso de poder desarrollarme por completo en este lenguaje.
Espero que puedan orientarme, amigos.
Adjunto el código:
Lo he probado pero no me funciona, es decir, al inicio se prenden los 4 leds, se apagan como está en la programación y veo en el hyperterminal que solo se envia AT CADA 5 SEGUNDOS, es decir, el módulo GSM no me responde con un OK como debería ser.
Cuento con un módulo GSM SIM900 y estoy buscando información para poder presentar mi proyecto de titulación.
Quiero un programa donde pueda establecer la comunicación entre el PIC y el Módulo GSM mediante sus comandos AT.
En otras palabras, quiero que me responda y transmita del PIC a Movil y viceversa.
Es un programa para encender un led desde el celular y que me mande mensaje cuando este se encienda.
Luego añadiré sensores con salidas analógicas y otras cosas mas que son más sencillas.
Quisiera que me orienten por favor, entiendo el lenguaje basic pero estoy en proceso de poder desarrollarme por completo en este lenguaje.
Espero que puedan orientarme, amigos.
Adjunto el código:
Código:
DEFINE OSC 4
'DEFINE OSC 8
DEFINE HSER_TXSTA 20h
DEFINE HSER_RCSTA 90h
DEFINE HSER_BAUD 2400
'DEFINE HSER_BAUD 4800
'DEFINE HSER_BAUD 9600
DEFINE HSER_SPBRG 25
DEFINE HSER_CLROERR 1
i var byte
TRISB=%00000000
PORTB=%00000000
TRISD=%00001111
PORTD=%00000000
FIRSTCHECK:
HIGH PORTB.7
PAUSE 500
HIGH PORTB.6
PAUSE 500
HIGH PORTB.5
PAUSE 500
HIGH PORTB.4
PAUSE 500
PORTB=%00000000
GSM_CHECK:
HSEROUT ["AT",13] 'Enviar AT al módem seguido por un retorno de carro
HSERIN 5000, GSM_CHECK, [WAIT("OK")]'Comprobar respuesta OK, espere 5 segundos max.
HIGH PORTB.7
PAUSE 1000
HSEROUT ["AT+GMM",13] 'Pregunte el nombre del modelo
HSERIN 5000, GSM_CHECK, [WAIT("T610 series")] 'Comprobar nombre del modelo
HIGH PORTB.6
PAUSE 1000
HSEROUT ["AT+IPR=2400",13] 'Establece la velocidad de transferencia
HSERIN 5000, GSM_CHECK, [WAIT("OK")]'Comprobar respuesta OK, espere 5 segundos max
HIGH PORTB.5
PAUSE 1000
HSEROUT ["AT+CMGF=1",13] ''envía AT al módem seguido por un retorno de carro y salto de línea
HSERIN 5000, GSM_CHECK, [WAIT("OK")]''Comprobar respuesta OK, espere 5 segundos max.
HIGH PORTB.4
PAUSE 1000
PORTB=%00000000
BEGIN:
IF PORTB.5=1 THEN ERROR_CALL
IF PORTB.6=1 THEN ERROR_SMS
HIGH PORTB.7
pause 1000
LOW PORTB.7
if PORTD.2 = 0 then SEND_SMS
IF PORTD.3 = 0 THEN CALL_PHONE
PAUSE 1000
GOTO BEGIN
SEND_SMS:
HIGH PORTB.6
HSEROUT ["at+cmgs=",34,"xxxxxxxxx",34,13]
PAUSE 1000
HSEROUT ["este es un mensaje de prueba",26] 'ENVIAR MENSAJE
HSERIN 10000, BEGIN, [WAIT("OK")]''Comprobar respuesta OK, espere 5 segundos max.
LOW PORTB.6
GOTO BEGIN
CALL_PHONE:
HIGH PORTB.5
HSEROUT ["atd[0xxxxxxxxx];",13]
HSERIN 5000, BEGIN, [WAIT("OK")]'Comprobar respuesta OK, espere 5 segundos max.
PAUSE 2000
LOW PORTB.5
GOTO BEGIN
ERROR_CALL:
FOR i = 1 to 5
HIGH PORTB.4
PAUSE 500
LOW PORTB.4
PAUSE 500
next i
PORTB=%00000000
GOTO BEGIN
ERROR_SMS:
FOR i = 1 to 5
HIGH PORTB.4
PAUSE 500
LOW PORTB.4
PAUSE 500
next i
PORTB=%00000000
GOTO BEGIN
End