TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: Cibernetico49 en 22 de Mayo de 2015, 16:36:39
-
Hola a todos, les comento que soy nuevo por aquí, espero me puedan ayudar.
Pues hace unos días empece a trabajar con un modulo gps y hasta ahorita e tenido un problema; no puedo leer los datos a traves del pic (16f877a) hice un mini código usando 2 UART por software, en donde, en una recibo la trama del modulo y por la otra lo lanzo hacia la PC (esto solo lo hago para verificar que el pic este recibiendo correctamente los datos). La idea era recibir la trama completa y filtrar solo el comando que necesito ($GPGLL) pero no capturo datos del gps.
Ya descarte que el que no funcione el código o el circuito (hice lo mismo pero con un bluethoot) y cambie el tamaño del arreglo hasta 90 con esto ultimo tampoco funciono.
ley en algún lugar que el chip que trae este modulo tiene comandos para especificar cual de todos sus comandos quieres que te mande y con también puedes modificar el tiempo en que lo hace, busque en el datasheet pero no encontré nada sobre la configuración.
si alguien tiene una idea de lo que este pasando le agradezco su ayuda, les dejo el mini código (solo lee un puerto y lo que hay lo imprime en otro).
***************************************************CODIGO********************************************************
#use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A4,bits=8,stream=COM1)
#use rs232(baud=9600,parity=N,xmit=PIN_B1,rcv=PIN_B2,bits=8,stream=COM4)
void main()
{
char lectura[25];
while(TRUE)
{
fgets(lectura,COM4); //leo los datos del COM4 hasta que hay un ENTER y se guardan en el arreglo lectura
fputs(lectura,COM1); //mando los datos guardados en el arreglo al puerto COM1
}//cierra while
}
-
Si no mal me equivoco ya que jamas trabaje con GPS,
Pero normalmente uno envia un comando al GPS y este responde. Si uno no le envia nada, no responde. Y ese es el caso que tenes vos. Al menos como esta el programa.
No se si se manejaran con comandos AT, pero podrias fijarte en el datasheet del modulo GPS
-
¿que GPS es?
Nomalmente los GPS si entregan contínuamente una serie de tramas aunque tambien podés programarlos para que te entreguen solo la trama que te interesa.-
Quizás lo mas práctico sea conectar el gps a un puerto serie y ver si envia datos ,seguramente necesitarás un conversor TTL/232.-
Otra manera de verificar si el GPS está enviando datos es monitorear su salida con un led+resistencia ,si el led se enciende de manera intermitente es que están saliendo datos.-
Sds.
Jorge
-
hola de nuevo, gracias a los dos por contestar.
KILLERJC exactamente ese tipo de comandos estoy buscando, solo que en la hoja de especificaciones no viene nada al respecto y como dice jansuini este GPS entrega la trama de datos al conectarse (no se necesita un comando para que inicie).
Jansuini es GY-NEO6MV2-GPS-Module y ya verifique que este funcionando correctamente conectándolo a mi PC por medio de RS232 solo que al hacerlo mediante el PIC no me lee la trama que manda, tengo la sospecha que el modulo no manda el \rc o que el arreglo char no es lo suficientemente grande, por lo que busco los comandos para configurarlo y que me entregue la trama que me interesa.
Si alguien tiene la forma de como configurarlo seria de mucha ayuda.
Gracias
Cibernetico49
Saludos
-
debe existir una hoja de comandos del GPS , es lo minimo para saber como operarlo.
Ese pic tiene una uart por hardware, úsala para recibir datos desde el gps por medio de la interrupción y una máquina de estados para identificar la trama que te interesa, y envías mediante la uart por software.
-
datasheet:
https://www.u-blox.com/images/downloads/Product_Docs/NEO-6_DataSheet_(GPS.G6-HW-09005).pdf
algunas cosas de hw
https://www.u-blox.com/images/downloads/Product_Docs/LEA-6_NEO-6_MAX-6_HardwareIntegrationManual_(GPS.G6-HW-09007).pdf
Todo sobre lso protocolos:
http://www.u-blox.com/images/downloads/Product_Docs/u-blox6_ReceiverDescriptionProtocolSpec_%28GPS.G6-SW-10018%29.pdf
-
Para empezar puedes conectar el GPS a un puerto COM del ordenador (hazlo mediante conversión de señal TTL a RS232).
Utiliza el programa "Hyperterminal" de Windos y selecciona la velocidad adecuada hasta que veas que aparece alguna trama.
Una vez conocida la velocidad de transmisión del GPS y comprobada la conexión puedes seguir con el PIC 16F877A .
Salu2.
-
el problema con algunos GPS (estoy trabajando con un NEO-6 en este momento) es que por defecto tiran mensajes en formato ubx+nmea, entonces al ponerlo con el hyperterminal ves cosas raras, no ves la trama con los caracteres típicos que esperamos recivir. En mi caso tuve que instalar u-center y seguir algunos tutoriales para cambiar la trama de salida y poner solo NMEA. tambien pude cambiar la velocidad de salida, lo que me costó mucho es poder grabar la configuracion en el GPS para que al reiniciarlo arranque con lo configurado.
De todos modos la primera prueba que yo haría es instalar el u-center y conectar el GPS al USB (con un conversor) y ver que tira el u-center.
Saludos!
-
Por lo que lei rapidamente de los datasheets, es que eso se configura con algunos pines, si estan puesto en 1 o en 0.
Ademas en el tercer link que pase ahi estan los comandos, las respuestas tanto en NMEA y en UBX, solo hay que buscarlo ya que es re largo el pdf.
-
Por lo que lei rapidamente de los datasheets, es que eso se configura con algunos pines, si estan puesto en 1 o en 0.
Ademas en el tercer link que pase ahi estan los comandos, las respuestas tanto en NMEA y en UBX, solo hay que buscarlo ya que es re largo el pdf.
el tema es el GPS esta puesto en un PCB con algunos componentes mínimos para formar el NEO-6. Este lo unico que expone es la uart y la alimentacion. Toda la configuracion se hacer por software.
Los pdf los leí, pero para alamcenar la configuracion en la eeprom no es tan intuitivo y la explicacion que da la guia de usuario del u-center no esta bien escrita, o por lo menos no me ha funcionado como ellos explican.
En cuanto a los mensajes, se utilizan los NMEA, estos son standar y hay muchos parser dando vueltas.
Sds
-
Podras explicar como es eso de grabar la configuracion en eeprom?? :lol: :lol:
-
Podras explicar como es eso de grabar la configuracion en eeprom?? :lol: :lol:
este es el GPS que yo estoy usando:
http://hobbyking.com/hobbyking/store/__31135__NEO_6M_GPS_Module.html
acá hay un pdf donde explica como cambiar la configuracion y grabarla:
http://www.hobbyking.com/hobbyking/store/uploads/748462262X568156X16.pdf
pero eso a mi no me funcionó.
entonces tuve que bajar el u-center y leer esta guía:
http://www.hobbyking.com/hobbyking/store/uploads/748462262X568156X33.pdf
y en la páguina 51 explica como y donde almacenar la configuracion.
En mi caso pude grabar que solo me saque los mensajes en NMEA, pero el baudrate me quedón en 57600 y no lo pude llevar a 115200... no seguí probando porque no le encontré logica a como me grabó el tema de los mensajes y no el baudrate... pero en unos días voy a retomar el tema y si les sirve hago un paso a paso...
Saludos!
-
Hola a todos, les comento que soy nuevo por aquí, espero me puedan ayudar.
Pues hace unos días empece a trabajar con un modulo gps y hasta ahorita e tenido un problema; no puedo leer los datos a traves del pic (16f877a) hice un mini código usando 2 UART por software, en donde, en una recibo la trama del modulo y por la otra lo lanzo hacia la PC (esto solo lo hago para verificar que el pic este recibiendo correctamente los datos). La idea era recibir la trama completa y filtrar solo el comando que necesito ($GPGLL) pero no capturo datos del gps.
Ya descarte que el que no funcione el código o el circuito (hice lo mismo pero con un bluethoot) y cambie el tamaño del arreglo hasta 90 con esto ultimo tampoco funciono.
ley en algún lugar que el chip que trae este modulo tiene comandos para especificar cual de todos sus comandos quieres que te mande y con también puedes modificar el tiempo en que lo hace, busque en el datasheet pero no encontré nada sobre la configuración.
si alguien tiene una idea de lo que este pasando le agradezco su ayuda, les dejo el mini código (solo lee un puerto y lo que hay lo imprime en otro).
***************************************************CODIGO********************************************************
#use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A4,bits=8,stream=COM1)
#use rs232(baud=9600,parity=N,xmit=PIN_B1,rcv=PIN_B2,bits=8,stream=COM4)
void main()
{
char lectura[25];
while(TRUE)
{
fgets(lectura,COM4); //leo los datos del COM4 hasta que hay un ENTER y se guardan en el arreglo lectura
fputs(lectura,COM1); //mando los datos guardados en el arreglo al puerto COM1
}//cierra while
}
25 caracteres es mu poco, ponele 60 o más. El gps puede que esté seteado a 38400 (por lo menos a mi me vino con ese baudrate).
aunque lo ideal es instalar el u-center.
sds.