TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: sha en 30 de Septiembre de 2010, 07:40:59

Título: Comunicación GSM WAVECOM FASTRACK con pic
Publicado por: sha en 30 de Septiembre de 2010, 07:40:59
Buenas a todos.
Estoy intentando comunicar un Modem gsm WAVECOM FASTRACK.
El programa es el siguiente:

#include   <16F870.h>
#fuses   XT,NOWDT,PUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP,NOCPD,NOWRT
#use      delay   (clock=4000000)
#use      rs232   (baud=9600, xmit=PIN_C6, rcv=PIN_C7, parity=N, bits=8)   //manejo del RS232


void   main   (void)
{
   SET_TRIS_A(0xFF);
   SET_TRIS_B(0x00);

   
   OUTPUT_B(0x00);
   
   delay_ms(5000);
   printf("AT+CPIN=2805\r\n");
   delay_ms(2000);
   printf("AT+CMGF=1\r\n");
   delay_ms(2000);
   printf("AT+CMGS=\"667616058\"\r\n");
   delay_ms(2000);
   printf("hola");
   putc(26);
   
}

Cuando los conecto el modem se inicia, lo se porque tiene un piloto que parpadea cuando meto el pin, osea que la primera parte funciona.
Pero luego no me manda el mensaje, no se porque.
Una ayudita, por favor.
Título: Re: Comunicación GSM WAVECOM FASTRACK con pic
Publicado por: sha en 01 de Octubre de 2010, 05:13:11
Hola otra vez.
He conectado el cto del pic al modem solo para escribir y luego el modem al pc con hiperterminal para leer.
Me falla a la hora de ingresar el número de telefono, que me da error.
Título: Re: Comunicación GSM WAVECOM FASTRACK con pic
Publicado por: Suky en 01 de Octubre de 2010, 08:41:01
Que es cto?
Título: Re: Comunicación GSM WAVECOM FASTRACK con pic
Publicado por: migsantiago en 01 de Octubre de 2010, 10:39:26
Hola otra vez.
He conectado el cto del pic al modem solo para escribir y luego el modem al pc con hiperterminal para leer.
Me falla a la hora de ingresar el número de telefono, que me da error.

Si has conectado el circuito y no funciona yo daría más tiempo al delay. Cinco segundos sería mejor.
Título: Re: Comunicación GSM WAVECOM FASTRACK con pic
Publicado por: AG1 en 05 de Octubre de 2010, 16:14:55
Despues de enviar el numero del telefono al que quieres enviar el SMS, deja que el PIC reciba el caracter ">" y seguidamente envia el texto "hola" y el caracter CTRL-Z.
No vendria de mas que despues de  cada comando "AT" que envies al modem esperes con el PIC la confirmacion de la recepcion del mismo por parte del modem.
Título: Re: Comunicación GSM WAVECOM FASTRACK con pic
Publicado por: RICHI777 en 05 de Octubre de 2010, 16:51:05
Hola, tal como dijo AG1, debes esperar por el prompt, en algunos módulos te llega esta secuencia CR LF > ESP ( Carriage return, Line Feed, Prompt y espacio ), recién ahí podes enviar el texto del mensaje y luego enviar el caracter CTRL-Z ( 0x1A ). Como nota aclaratoria, no todos los comandos en estos módulos tardan lo mismo, vos estas produciendo un delay fijo para cada comando, para jugar esta bien, pero para cosas serias deberias implementar una máquina de estado que vaya analizando las posibles respuestas del módulo ( OK, ERROR, etc ) y tardar solo el tiempo necesario. Otra cosa mas, el printf es muy util pero el tamaño de código que agrega puede llegar a ser restrictivo.

Saludos !
Título: Re: Comunicación GSM WAVECOM FASTRACK con pic
Publicado por: sha en 13 de Octubre de 2010, 16:58:19
Buenas a todos.
Ya consegui mandar mensajes.
He tenido que poner número de centro de mensjes y modo de datos justo antes de mandar mensaje.
Muchas gracias a todos por responder.
Título: Re: Comunicación GSM WAVECOM FASTRACK con pic
Publicado por: sha en 02 de Noviembre de 2010, 07:12:56
Hola de nuevo a todos.
Ahora estoy intentando recibir mensajes.
Pero no consigo leer lo que me manda el moden.
El codigo es este.

#int_rda
void          serial_isr()
   {
         if(kbhit())
         {               // Si hay algo pendiente de recibir ...
         Add_buffrec(getc());   // lo recibo y lo añado al Buffer de Recepción
         }
   }   
void   Add_buffrec   (char c)
   {                     // Añade carácter al Buffer de Recepción
      putchar(c);
      if   (nbu==0)
         {      
            switch(c)
               {
                  case 0x0A:
                  {
                     if   (saltb==0)      // [Enter] -> Habilita Flag para procesar comando en Main
                        {
                           smsr=1;
                           break;
                        }
                     else
                        saltb=0;
                        nbu=1;
                        break;
                  }
                  case   0x22:
                  {
                     saltb=1;
                     buffrec[xbuffrec++]=c;
                     break;
                  }
                  default:
                  saltb=0;
                  buffrec[xbuffrec++]=c;            // Añade carácter recibido al Buffer
               }
         }
      else
         {
         switch(c)
            {
               case   0x0D:
                  smsr=1;
                  break;
               default:
                  buffrec1[xbuffrec1++]=c;         
            }            
         }
   }

Quizas el error este en como distingo el final del envío.
No lo se.
Título: Re: Comunicación GSM WAVECOM FASTRACK con pic
Publicado por: sha en 02 de Noviembre de 2010, 09:17:56
Un pequeño fallo que he encontrado y que había puesto para simularlo en hiperterminal es putchar(c);
La e quitado y sigue sin funcionar.