Autor Tema: Recibir SMS con PIC16f877A y SIM800L  (Leído 24148 veces)

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

Desconectado martinchd

  • PIC12
  • **
  • Mensajes: 78
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #15 en: 21 de Julio de 2018, 15:56:04 »
Lo probe y no funciona!!!   :5] 

probe algo asi y tampoco funciona.


Código: C
  1. char SMS[60];
  2.  
  3. void main()
  4.  
  5.    {
  6.    
  7.     set_tris_b(0x00);
  8.     lcd_init();
  9.     delay_ms(200);
  10.     printf(lcd_putc,"Please wait... \n");
  11.     delay_ms(9000); //Tiempo hasta que inicie SIM00L
  12.      
  13.     while (true)
  14.         {
  15.          printf(lcd_putc,"\f Esperando SMS \n");
  16.          delay_ms(500);
  17.          IF (kbhit () )
  18.                { //Detecto si hay un carácter en la entrada
  19.                 gets(SMS); //Leer Mensaje de llegada después del enter que envía el SIM800
  20.                 SMS[15] = '\0';   // En caso de que sea mucho mas grande que el LCD.... solo por las dudas
  21.                 printf(lcd_putc,"%s",SMS);
  22.                
  23.  //      if(strncmp(SMS,msj,sizeof msj)==0)
  24.  //      {
  25.  //      }
  26.          delay_ms(2000);    // Una pequeña espera mas antes de enviar de nuevo.
  27.                }
  28.         }
  29.    }

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #16 en: 21 de Julio de 2018, 20:13:27 »
Que es lo que llega por la UART?

Tal ves estes recibiendo otra cosa que no es lo que vos crees.
« Última modificación: 21 de Julio de 2018, 20:17:40 por KILLERJC »

Desconectado martinchd

  • PIC12
  • **
  • Mensajes: 78
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #17 en: 22 de Julio de 2018, 16:54:49 »
lo probe grabando el pic y no me imprime nada en el lcd.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #18 en: 22 de Julio de 2018, 18:15:41 »
Estamos partiendo de que el SIM regresa exactamente eso, sabemos si esta regresando al menos algo ?
Es muy dificil tratar de "solucionar" algo que ni siquiera se sabe el porque esta fallando.

Y te lo vuelvo a decir, NO uses delays. El PIC solo puede guardar 1 solo caracter, maximo 2 en las familias mas bajas, si llega otro debido a que esta en el delay tendrias un problema.
Deberias recibir por interrupciones o de ultima en caso de prueba quitar las demoras.

Sabiendo lo que llega luego podes programar lo que deseas, lo mas simple es usar un conversor TTL-USB para enviarle el comando al SIM y ver que devuelve.
« Última modificación: 22 de Julio de 2018, 19:44:14 por KILLERJC »

Desconectado martinchd

  • PIC12
  • **
  • Mensajes: 78
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #19 en: 22 de Julio de 2018, 23:08:18 »
no estoy muy lucho en esta parte de programación.
con interrupción como lo podria hacer?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #20 en: 23 de Julio de 2018, 21:56:05 »
Algo asi.. realmente no uso CCS, y seguramnte tenga errores:

Código: C
  1. char bufferRX[2][17];
  2. int8 indiceBuff = 0;
  3. int8 indice = 0;
  4. int1 mostrar;
  5.  
  6. #int_rda
  7. void serial_isr() {
  8.  
  9.   if(kbhit()){
  10.     bufferRX[indiceBuff][indice] = getc();
  11.     indice++;
  12.     if(indice >= sizeof bufferRX)
  13.     {
  14.       indice = 0;
  15.       bufferRX[indiceBuff][16] = '\0'; //Una proteccion por las dudas
  16.       indiceBuff ^= 1;
  17.       mostrar = 1;
  18.     }
  19.   }
  20. }
  21.  
  22.  
  23. void main()
  24. {
  25.    
  26.     set_tris_b(0x00);
  27.     lcd_init();
  28.     delay_ms(200);
  29.     printf(lcd_putc,"Please wait... \n");
  30.     delay_ms(9000); //Tiempo hasta que inicie SIM00L
  31.    
  32.     enable_interrupts(int_rda);
  33.     enable_interrupts(global);
  34.  
  35.     while(TRUE)
  36.     {
  37.       if(mostrar)
  38.       {
  39.         mostrar = 0;
  40.         printf(lcd_putc,"\f%s",&bufferRX[indiceBuff^1][0]);
  41.       }
  42.     }
  43. }

Desconectado martinchd

  • PIC12
  • **
  • Mensajes: 78
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #21 en: 24 de Julio de 2018, 00:03:34 »
Dale KILLERJC voy a jugar un rato con estoy y te comento los resultados.. Muchas gracias...  ((:-)) ((:-)) ((:-)) ((:-)) ((:-)) 8) 8) 8)

Desconectado martinchd

  • PIC12
  • **
  • Mensajes: 78
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #22 en: 24 de Julio de 2018, 01:36:41 »
En el If(mostrar) no tendria q ir alguna sentencia.. ? 

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #23 en: 24 de Julio de 2018, 09:32:12 »
En el If(mostrar) no tendria q ir alguna sentencia.. ?

el contenido del if, tenes 2 posibilidades, si es 0 es igual a falso, si es cualquier otro valor es igual a verdadero. asi que si mostrar es 1 va a entrar.

Me olvide de poner alguna sentencia para que le escriba al SIM, ponelo ANTES del while, sin delays entre medio.
La idea del codigo es tener 2 buffer de 16 bytes. Llena un buffer y habilita para que se muestre en el LCD, mientras cambia de buffer y comienza a llenar el otro y asi continuamente. rogando que lo del LCD no sea tan lento como que se llene el buffer antes.

Desconectado martinchd

  • PIC12
  • **
  • Mensajes: 78
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #24 en: 25 de Julio de 2018, 15:28:45 »
a que te referís a una sentencia para que le escriba al SIM..

Desconectado martinchd

  • PIC12
  • **
  • Mensajes: 78
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #25 en: 25 de Julio de 2018, 18:38:13 »
una duda.. yo cuando envio un sms del telefono al modulo SIM800L, inmediatamente me manda una cadena de caracter al puerto UART ?
si es asi. cual seria esa cadena de caracter ?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #26 en: 25 de Julio de 2018, 20:52:16 »
Tenes que configurarlo con el +CNMI y luego vas a recibir los mensajes que corresponden apenas llega un SMS:

https://www.developershome.com/sms/resultCodes3.asp

Desconectado martinchd

  • PIC12
  • **
  • Mensajes: 78
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #27 en: 26 de Julio de 2018, 00:43:20 »
cuando lo compilo me tira este Warning.. en el While...  tenes idea cual es el motivo?

Interrupts disabled during call to prevent re-entrancy:

« Última modificación: 26 de Julio de 2018, 08:44:42 por martinchd »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #28 en: 26 de Julio de 2018, 09:18:40 »
Que codigo?

Desconectado martinchd

  • PIC12
  • **
  • Mensajes: 78
Re:Recibir SMS con PIC16f877A y SIM800L
« Respuesta #29 en: 26 de Julio de 2018, 23:23:01 »
En el ciclo while me lo tira. Me marca las llave del ciclo.