Autor Tema: Comunicación Serial PIC - SIM900  (Leído 5225 veces)

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

Desconectado kgronerc

  • PIC10
  • *
  • Mensajes: 8
Comunicación Serial PIC - SIM900
« en: 21 de Agosto de 2015, 04:30:19 »
Que tal amigos del foro, he buscado en el foro una posible solución al inconveniente que tengo, pero no logro encontrar algo parecido. Mi código está en Proton IDE, estoy intentando recibir datos de un módulo SMS Sim900, yo envío un comando, y el módulo responde instantáneamente, sin embargo, utilizando el modificador "Wait" como se ve en el ejemplo más adelante, logro recibir únicamente 1 dato. Si coloco nuevamente la sentencia SerIN a continuación ya no recibo ningún dato, puede ser esto problema de la frecuencia del cristal que estoy utilizando ? O no es correcto realizar la lectura de esta forma ? Si alguien tiene una idea de cómo debo realizar la lectura por parte del módulo le agradezco enormemente. La respuesta que proporciona el módulo despúes de enviarle un comando es:

AT+CSQ

+CSQ: 14,0

OK

Necesito leer el valor "14", el código que tengo es el siguiente:

SerIn RX_SIM900,32,[Wait("+CSQ: "), Dec ENTRADA[0]] Este valor logro recibir
SerIn RX_SIM900,32,[Dec ENTRADA[1]] Este valor ya no recibo, por ende, el PIC se queda esperando a que llegue un dato y se cuelga el programa.
Print At 1,1,"SENAL1: ",#ENTRADA[0]
Print At 2,1,"SENAL2: ",#ENTRADA[1]

Les agradezco de antemano su ayuda.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3495
Re: Comunicación Serial PIC - SIM900
« Respuesta #1 en: 22 de Agosto de 2015, 06:57:48 »
Las funciones de simulación de puerto serie no se suelen usar porque dan muchos problemas, dependen mucho de la velocidad del micro-controlador y de lo optimizado que el compilador genere el código.
Normalmente se suelen utilizar solo las de salida para depuración.

Puedes probar con velocidades inferiores, porque es posible que mientras Serin está procesando el primer dato entre el siguiente y no le de tiempo a procesarlo.
Para que esta función pueda trabajar adecuadamente tiene que haber un espacio de tiempo suficientemente grande entre byte y byte, de esta forma le da tiempo a terminar de procesar el dato y prepararse para recibir
el siguiente.

Estas funciones son prehistóricas ya que actualmente la mayoría de micro-controladores posen un modulo serie que realiza todo el trabajo por lo que es muy difícil que se pierdan datos.
Saludos desde Granada, España.

Desconectado jansuini

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 565
Re: Comunicación Serial PIC - SIM900
« Respuesta #2 en: 22 de Agosto de 2015, 12:49:10 »
Hola :
Consulta ¿donde se habla de simulación?¿o me etoy perdiendo algo?
Jorge

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3495
Re: Comunicación Serial PIC - SIM900
« Respuesta #3 en: 22 de Agosto de 2015, 14:36:53 »
Las funciones del puerto serie que comienzan por "S" son por simulación o si lo prefieres por emulación, en el manual del Protón lo especifica.
Saludos desde Granada, España.

Desconectado kgronerc

  • PIC10
  • *
  • Mensajes: 8
Re: Comunicación Serial PIC - SIM900
« Respuesta #4 en: 22 de Agosto de 2015, 18:46:15 »
Estimdo dogflu66, basado en la experiencia que tienes, me podrías recomendar entonces que tipo de función debería utilizar para este caso específico ? Considerando que tengo que enviar y recibir datos con este módulo que antes mencioné.

Gracias

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3495
Re: Comunicación Serial PIC - SIM900
« Respuesta #5 en: 22 de Agosto de 2015, 19:32:18 »
Pues si el micro que utilizas tiene modulo serie... seria de utilizar las otras funciones o comandos serie, las que comiensan sino recuerdo mal por "H", Hserin y etc.
Saludos desde Granada, España.

Desconectado kgronerc

  • PIC10
  • *
  • Mensajes: 8
Re: Comunicación Serial PIC - SIM900
« Respuesta #6 en: 22 de Agosto de 2015, 19:44:16 »
Listo estimado, muchas gracias, voy a investigar.

Saludos

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2059
Re: Comunicación Serial PIC - SIM900
« Respuesta #7 en: 22 de Agosto de 2015, 20:35:13 »
Yo podria ayudar pero no conozco el modulo que estas utilizando, podrias colocar el programa que estas haciendo?
Y explicarme que es lo que debes enviar al modulo y que te debe debe devolver este, para asi poderte ayudarte   :mrgreen:

Saludos

Desconectado kgronerc

  • PIC10
  • *
  • Mensajes: 8
Re: Comunicación Serial PIC - SIM900
« Respuesta #8 en: 22 de Agosto de 2015, 21:29:41 »
Estimado RALF2, muchas gracias por tu interés, el módulo que estoy utilizando es un SIM900 de la familia geetech, básicamente funciona con comandos AT. El módulo recibe un comando, por ejemplo, el comando "AT" vía serial, y el mismo responde "OK". Estoy trabajando a 19200 BPs con un PIC 18F2550 a 8 MHz, lo que tengo que hacer es recibir información del módulo, en este caso, necesito saber la intensidad de la señal, para esto se utiliza el comando "AT+CSQ" (enviado por serial), entonces, yo envío dicho comando desde el PIC hacia el módulo, el mismo recibe el comando y responde lo siguiente:

AT+CSQ

+CSQ: 14,0 <== Esto representa la intensidad de la señal, necesito este dato para desplegar en un display el nivel de señal.

OK

Tengo que leer este valor con el PIC mediante el puerto serial, entonces para esto estoy utilizando los comandos SerIn y SerOut. El programa hasta el momento esta así:

Symbol TX_SIM900 = PORTC.6         
Symbol RX_SIM900 = PORTC.7
.
.
.
.
SerOut TX_SIM900,32,["AT+CSQ",13]
SerIn RX_SIM900,32,[Wait("+CSQ: "), Dec ENTRADA[0]] Este valor si llega, y puedo leerlo, el problema es con el siguiente valor.
SerIn RX_SIM900,32,[Dec ENTRADA[1]] Este valor ya no recibo, por ende, el PIC se queda esperando a que llegue un dato y se cuelga el programa.
Print At 1,1,"SENAL4: ",#ENTRADA[0]
Print At 2,1,"SENAL4: ",#ENTRADA[1]

Aun no investigo sobre las funciones Hserin y Hserout que dogflu66 me recomendó, sin embargo cualquier idea es bienvenida.

Muchas gracias

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2059
Re: Comunicación Serial PIC - SIM900
« Respuesta #9 en: 23 de Agosto de 2015, 00:17:54 »
Se me ocurre algo, porque no pruebas por ejemplo con el hyperterminal de windows o el que tiene proton para ver si cuando envias el comando que comentas el modulo responde?
Porque puede ser, quizas, que sea que el modulo no esta respondiendo y por eso se te cuelga el programa  :mrgreen:

Si puedes probar nos comentas a ver que tal!
y poder asi avanzar en la resolucion del problema.

Saludos

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3495
Re: Comunicación Serial PIC - SIM900
« Respuesta #10 en: 23 de Agosto de 2015, 08:38:22 »
Antes de seguir con otro modo te recomiendo que realices las pruebas que te indique anteriormente:
La primera es la de configurar el modulo GSM a una velocidad de comunicación serie más baja, en tu caso de 19200 a 1200baudios, esto dará más tiempo al micro para procesar la función Serin y por lo tanto es posible que te funcione tu programa.

La otra opción es la de elevar el reloj del sistema de 8Mhz que dices que usas, al máximo que permite ese micro, que si no recuerdo mal puede llegar a 40Mhz.
Saludos desde Granada, España.

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2059
Re: Comunicación Serial PIC - SIM900
« Respuesta #11 en: 23 de Agosto de 2015, 09:39:34 »
Por lo que veo del data sheet, y prueba enviando CR y LF, no solo CR.
Asi:

SerOut TX_SIM900,32,["AT+CSQ",13,10]
SerIn RX_SIM900,32,[Wait("+CSQ: "), Dec ENTRADA[0], Dec ENTRADA[1]] .
Pruebalo y nos comentas.


Saludos
« Última modificación: 23 de Agosto de 2015, 09:52:43 por RALF2 »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3495
Re: Comunicación Serial PIC - SIM900
« Respuesta #12 en: 23 de Agosto de 2015, 10:06:12 »
La verdad es que yo siempre he enviado el CrLf (Hserout "AT+CSQ", CrLf) por lo que no sabría decir si eso influye.
Saludos desde Granada, España.


 

anything