Envio de SMS con PBP

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:
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
 
Hola...¿previamente pusiste o el modulo SIM900 esta escuchando a 2400bps?

Los que he tenido a mano por aquí, estaban a mas velocidad.

Otro detalle, no es lo mismo "AT" que "at", veo que mezclas "alegremente" en tu programa las mayúsculas y minúsculas en los textos literales a enviar.

Comienza por conectar el modulo a una PC y verifica que responda y a que velocidad.

Lo puedes hacer con la terminal de Win o alguna otra mas flexible.

Saludos.

Ric.
 
Última edición:
Hola...¿previamente pusiste o el modulo SIM900 esta escuchando a 2400bps?

Los que he tenido a mano por aquí, estaban a mas velocidad.

Otro detalle, no es lo mismo "AT" que "at", veo que mezclas "alegremente" en tu programa las mayúsculas y minúsculas en los textos literales a enviar.

Comienza por conectar el modulo a una PC y verifica que responda y a que velocidad.

Lo puedes hacer con la terminal de Win o alguna otra mas flexible.

Saludos.

Ric.
Hola estimado Ric , eh conectado el modulo GSM SIM900 al Pic TX con RX y viceversa , y lo eh conectado a la PC por medio de un convertidor USB a TTL , estoy usando el software Microcode Studio y este programa posee un hyperterminal donde se puede transmitir y recepcionar datos , tambien eh cambiado por mayusculas el "at" .Ahora al conectar todo tal cual , se puede visualizar en el hyperterminal que en recepcion llega AT cada 5 segundos como esta en el programa , pero el modulo GSM en sí no responde y me eh dado cuenta que cuando aparece "AT" en el hyperterminal yo tengo que enviar un "OK" para que pueda aparecer la siguiente linea del programa y recien aparece el comando AT+ GMM y nuevamente tengo q escribir y enviar "T610 series" , esto es repetitivo si no se hace dentro de los 5 segundos .Si has podido notar yo estoy haciendo el trabajo del modulo GSM . Solo quisiera que alguien amable comparta una configuracion de comunicacion que al enviar por el hyperterminal los comandos AT el modulo GSM SIM900 me reponda como deberia y basandonos en esto una aplicacion basica del envio de mensajes para prender un led y que al encender me mande un mensaje de confirmacion . Espero no causar molestias en el grupo , no es mi intencion , solo deseo aprender y que alguien pueda despejar mis dudas e inquietudes .
 
Primero debes hacer que el modulo funcione, trabaja solo con el adaptador del puerto y una terminal, si no te contesta, hará lo mismo con tu programa.

No se que modulo estas usando ni como se usa, debes leer los manuales.
Los que he trabajado yo son los de desarrollo y había que prenderlos primero y colocarse a la velocidad por defecto de 115.200bps y cambiarle la velocidad a lo que trabajaba el PIC.

Sim900.jpg

En la pagina del fabricante tienes la ultima documentación disponible, revisa allí.

Primero debes configurar el puerto en la computadora a la velocidad que esta el modulo por defecto(en mi caso 115.200bps) luego mandas el comando AT y te debe contestar, una vez que te conteste escribes AT+IPR=9600 y "enter" para pasarlo a 9600 si quieres o a la velocidad que decidas(en el programa que subiste esta a 2400bps....AT+IPR=2400).

Hace mas de 7 años que no todo nada de eso por lo que no lo tengo del todo fresco.

Te subo lo que tengo sobre los comandos del SIM900 pero es de esa época.


Ric.
 

Adjuntos

  • SIM900_ATC_v1.02.pdf
    1.7 MB · Visitas: 17
Atrás
Arriba