Autor Tema: No puedo MANDAR mensajes desde modulo gprs  (Leído 8206 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #30 en: 25 de Mayo de 2016, 17:39:36 »
Aca esta el codigo para detectar el ring de una llamada entrante:
Código: [Seleccionar]
#include <16F88.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC                    //Internal RC Osc
#FUSES PUT                      //Power Up Timer
#FUSES PROTECT                  //Code protected from reads
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#byte PORTA=0X05
#use delay(int=4000000,RESTART_WDT)
#use rs232(uart1, baud=9600)//usart1 -->ajuste de XMIT y RCV para la USART 1
int i=0,j=0;
char Mensaje[60]="",Respuesta[60]="";
char ch;
void main()
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_4 );
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
   set_tris_b(0x04);           
   set_tris_a(0x20);   
   output_Low(PIN_B1);
   output_Low(PIN_B0);
   while(1){
   printf("AT+CMGF=1\n");
   gets(Respuesta);
   if((respuesta[0]=='O')&&(respuesta[1]=='K'))printf("AT+CNMI=2,2,0,0,0\n");
   if((respuesta[0]=='O')&&(respuesta[1]=='K'))gets(Respuesta);
   if (Respuesta[0]=='R')output_high(PIN_B1);///detecta llamada entrante
   //if((respuesta[0]=='+' && respuesta[1]=='C')&&(respuesta[2]=='M')&&(respuesta[3]=='T'))gets(Mensaje);
   //if(mensaje[0]=='P')output_high(PIN_B1);
     }
 }
como vos me lo diste
conecte el pic al adaptador usart y probe y se queda estancado en el OK que no reconoce nunca hace at+cnmi=2,0,0,0
« Última modificación: 25 de Mayo de 2016, 17:48:38 por soymoe »

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #31 en: 25 de Mayo de 2016, 18:41:38 »
por que a veces usas respuesta y otras veces Respuesta? no te da error eso?

Esa forma de còdigo es la que yo te digo que es la màs facil. Mandas comando y luego haces un gets para recivir la respuesta. Ojo que yo no sé si es gets la orden en CCS para recivir una linea completa por el uart.

El primer ejemplo bàsico que tenes que hacer es enviar el comando AT solo y esperar el OK del SIM900. Si haces andar eso ya tendrìas la base para el resto.

Saludos!
-
Leonardo Garberoglio

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #32 en: 26 de Mayo de 2016, 18:47:15 »
por que a veces usas respuesta y otras veces Respuesta? no te da error eso?

Esa forma de còdigo es la que yo te digo que es la màs facil. Mandas comando y luego haces un gets para recivir la respuesta. Ojo que yo no sé si es gets la orden en CCS para recivir una linea completa por el uart.

El primer ejemplo bàsico que tenes que hacer es enviar el comando AT solo y esperar el OK del SIM900. Si haces andar eso ya tendrìas la base para el resto.

Saludos!
No me da error
este codigo a veces anda si simulo la sis900 con un adaptador uart
Código: [Seleccionar]
#include <16F88.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC                    //Internal RC Osc
#FUSES PUT                      //Power Up Timer
#FUSES PROTECT                  //Code protected from reads
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#byte PORTA=0X05
#use delay(int=4000000,RESTART_WDT)
#use rs232(uart1, baud=9600)//usart1 -->ajuste de XMIT y RCV para la USART 1
int i=0, j=0;
char Cadena[60]="";
char ch;
int1 LineaPresente=0;
#int_rda
void rd_isr(void)//función de interrupción por recepción de datos USART
{
   output_toggle(PIN_B0);
   LineaPresente=0;
   ch=getc();
   Cadena[i]=0x00;
   Cadena[i]=ch;
   i++;
   if(i>=60)i=0;
}

void main()
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_4 );
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
   set_tris_b(0x04);            //portb como salida
   set_tris_a(0x20);   //porta como Entrada
   enable_interrupts(int_rda);
   enable_interrupts(GLOBAL);   //activadas interrupciones
   output_Low(PIN_B1);
   output_Low(PIN_B0);
   while(1){
   printf("AT\n");
   delay_ms(2000);
   if((Cadena[0]=='O')&&(Cadena[1]=='K'))
   {
   for (j=1;j<=60;++j)Cadena[j]=0x00;
   output_toggle(PIN_B1);
   }
  }
 }
pero si conecto la sis no anda

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #33 en: 26 de Mayo de 2016, 19:03:01 »
no entiendo. que sería simular la SIS con un adaptor uART?
-
Leonardo Garberoglio

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #34 en: 26 de Mayo de 2016, 20:40:15 »
no entiendo. que sería simular la SIS con un adaptor uART?
tengo un conversor uart a ttl y lo uso para ver lo que manda la sis900 o simularla, donde puedo ver lo que le manda el pic y responderle en algunos casos

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #35 en: 26 de Mayo de 2016, 21:43:31 »
te funciona algun ejemplo conectando SIM900 al uC?

sds.
-
Leonardo Garberoglio

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #36 en: 27 de Mayo de 2016, 09:46:28 »
Si me funciona, puedo hacer llamadas y mandar mensajes con el pic pero no puedo detectar el ok de la sis

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #37 en: 27 de Mayo de 2016, 09:53:18 »
Un problema que he detectado es que si el sis me envia otros caracteres antes del OK no lo detecta al OK

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #38 en: 27 de Mayo de 2016, 09:55:40 »
podrías poner el código que usas para hacer llamadas?
Una foto del conexionado tambien ayudaría a ver donde puede estar el problema. Estas conectando Tx del SIM al Rx del uC y el Rx del SIM al Tx del micro y unis los GND, verdad?
Aparentemente podes enviar comandos con el uC al SIM, pero no podes leer lo que el SIM te responde... Como si una de las conexiones del puerto serie no esten bien... Por favor, pone esas dos cosas asi vemos si lo resolvemos.

Sds.
-
Leonardo Garberoglio

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #39 en: 27 de Mayo de 2016, 11:03:14 »
si tengo conectadas las masas y rx con tx, aqui el codigo para llamar:
Código: [Seleccionar]
#include <16F88.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC                    //Internal RC Osc
#FUSES PUT                      //Power Up Timer
#FUSES PROTECT                  //Code protected from reads
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#byte PORTA=0X05
#use delay(int=4000000,RESTART_WDT)
#use rs232(uart1, baud=9600)//usart1 -->ajuste de XMIT y RCV para la USART 1
int i=0;
char Cadena[60]="";
char ch;
#int_rda
void rd_isr(void)//función de interrupción por recepción de datos USART
{
   ch=getc();
   Cadena[i]=ch;
   putc(ch);
   output_toggle(PIN_B0);
   i++;
   if(i>60)i=0;
}
void main()
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_4 );
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
   set_tris_b(0x06);            //portb como salida
   set_tris_a(0x20);   //porta como Entrada
   enable_interrupts(int_rda);
   enable_interrupts(GLOBAL);   //activadas interrupciones
   output_Low(PIN_B1);
   output_Low(PIN_B0);
   while(1){
   delay_ms(1000);
   IF(!(BIT_TEST(PORTA,5)))
   {
   printf("ATD03496xxxxxx0;\r\n");
   }
no pongo foto de la placa porque esta todo conectado con cables y no se va a distinguir nada

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #40 en: 27 de Mayo de 2016, 11:29:09 »
Proba esto:

Código: C
  1. #include <16F88.h>
  2. #FUSES NOWDT                    //No Watch Dog Timer
  3. #FUSES INTRC                    //Internal RC Osc
  4. #FUSES PUT                      //Power Up Timer
  5. #FUSES PROTECT                  //Code protected from reads
  6. #FUSES NOBROWNOUT               //No brownout reset
  7. #FUSES NOMCLR                   //Master Clear pin used for I/O
  8. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  9. #FUSES NOCPD                    //No EE protection
  10. #byte PORTA=0X05
  11.  
  12. #use delay(int=4000000,RESTART_WDT)
  13. #use rs232(uart1, baud=9600)//usart1 -->ajuste de XMIT y RCV para la USART 1
  14.  
  15. int i=0;
  16. char Cadena[60]="";
  17. char ch;
  18.  
  19. #int_rda
  20. void rd_isr(void)//función de interrupción por recepción de datos USART
  21. {
  22.         ch=getc();
  23.         Cadena[i]=ch;
  24.         output_toggle(PIN_B0);
  25.         i++;
  26.         if(i>60)
  27.                 i=0;
  28. }
  29.  
  30. void main()
  31. {
  32.         setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  33.         setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_4 );
  34.         setup_timer_2(T2_DISABLED,0,1);
  35.         setup_ccp1(CCP_OFF);
  36.         setup_comparator(NC_NC_NC_NC);
  37.         set_tris_b(0xDC);                       //portb como salida
  38.         set_tris_a(0x20);               //porta como Entrada
  39.         enable_interrupts(int_rda);
  40.         enable_interrupts(GLOBAL);   //activadas interrupciones
  41.        
  42.         output_Low(PIN_B1);
  43.         output_Low(PIN_B0);
  44.        
  45.         printf("AT\r\n");
  46.         i=0;
  47.         delay_ms(1000);
  48.         if(Cadena[0] == 'O' && Cadena[1] == 'K')
  49.                 output_high(PIN_B1);
  50.        
  51.         while(1)
  52.         {
  53.         }
  54. }

EDITADO: Corregi el TRIS_B para que tengas las salidas/entradas bien configuradas
« Última modificación: 27 de Mayo de 2016, 11:34:28 por elgarbe »
-
Leonardo Garberoglio

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #41 en: 27 de Mayo de 2016, 11:54:53 »
no me funciona.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #42 en: 27 de Mayo de 2016, 13:05:47 »
me podrías decir que cosas tienes conectado a cada pin del micro?

sds.
-
Leonardo Garberoglio

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #43 en: 27 de Mayo de 2016, 13:40:41 »
podrias adjuntar el archivo 16F88.h por favor?
-
Leonardo Garberoglio

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:No puedo MANDAR mensajes desde modulo gprs
« Respuesta #44 en: 27 de Mayo de 2016, 13:46:45 »
si tengo conectadas las masas y rx con tx...

tenes 3 cables conectados, verdad?
GND uC -> GND SIM
TX uC -> Rx SIM
y Rx uC -> Tx SIM, verdad?

saludos
-
Leonardo Garberoglio


 

anything