Datos GPS a PIC

Hola Foreros,

Mi pregunta es si alguno de ustedes a sacado los datos de un GPS a un PIC o a algun dispositivo para enviarlos por via celular, los datos que envia el GPS estan en protocolo
NMEA-0183 o en SiRF Binary, hasta donde tengo entendido el protocolo NMEA estan en codigo ASCII.

Acabo de entrar al foro aunque llevo algun tiempo viendo informacion en él pero este es mi primer mensaje, agradeceria mucho si me pudieran ayudar con mas informacion o con algunos tips para poder realizar el proyecto.

SALUDOS

...FoFo...
 
hola Estimado amigo,

hace como 2 o 3 años estaba manejando un GPS del cual logre cominicarlo con un pic y los datos irlos almacenando a una EEPROM, por lo cual te puedo decir que es sencillo solo es cuestion de configurar adecuadamente la comunicacion serial que trae el PIC.

Lamentablemente por el tiempo no recuerdo la velocidad de comunicacion pero es bastante facil investigarlo. conecta directamente el GPS a una PC por la via serial, obviamente primero asegurate de manejar los niveles de voltaje adecuados. ya con el GPS conectado; Abre un Hiperterminal y configuralo con 8 bits de datos sin bit de paridad y 1 bit de stop, y ve probando las velocidades de transferencia que son las que no recuerdo a que velocidad de baudaje estaba.

Asi veras los datos directamente en la PC y podras ir generando tus conclusiones de como tomar los datos y generando las mascaras para que lo interprete el PIC.

Saludos y espero esto te pueda ayudar para avanzar con tu proyecto.
 
Última edición:
Gracias JJ,
voy a checar con los tips q me das, ya que haga las pruebas seguire en contacto contigo para informarte los resultados o para q me heches una mano en caso de que me quede trabado con algo.

Gracias de nuevo, SALUDOS
 
hola estoy trabajando con un modulo gps, particularmente el skm53 de skylab, utiliza el protocolo NMEA, lo conecto al hiperterminal y recibo los datos...

$GPGGA,024710.000,0533.4219,S,08049.1927,W,2,7,1.10,22.3,M,6.2,M,0000,0000*53
$GPGSA,A,3,13,07,23,11,17,01,20,,,,,,3.19,1.10,3.00*0B
$GPGSV,4,1,13,07,62,010,40,51,58,280,45,01,51,050,36,13,50,205,41*7A
$GPGSV,4,2,13,17,35,279,41,11,34,034,25,20,32,135,27,23,31,168,33*7E
$GPGSV,4,3,13,08,26,343,17,32,14,112,,04,13,214,20,10,07,229,*78
$GPGSV,4,4,13,28,04,324,*40
$GPRMC,024710.000,A,0533.4219,S,08049.1927,W,0.00,332.98,130412,,,D*61

los numeros resaltados con negrita indican la hora y fecha respectivamente...
mi problema es que ahora quiero leer estos datos en un pic, separarlos (horas , minutos , segundos, etc) y convertirlos en binario o bcd para enviarlos por un puerto y mostrarlos en un panel con display de leds donde mostrar hora y fecha alternadamente...

la programacion la estoy haciendo en PicBasicPro que es lo que manejo y el problema esta en como extraer de la trama los datos que quiero , entiendase hora y fecha, estoy intentando con el SERIN pero como se daran cuenta antes de los datos requeridos se encuentra una coma y si le digo al serin que espere una coma y el dato siguiente lo guarde en una variable voy a tener un conflicto de datos y no voy a obtener precisamente lo que quiero....

no se si se con el serin o con otro comando hay alguna forma de esperar la cabezera de la trama ($GPRMC) y luego contar los caracteres y desde cierto numero empezar a guardar el dato siguiente en una variable,,,, algo parecido a lo que se hace en visual basic con el comando MID..

ojala alguien me pueda orientar con esto ....GRACIAS...
 
Hola... deberias leer la ayuda de tu compilador en el Proton Pic Basic existe el comando Serin Wait("cadena de dato a esperar"), serdata que espera indefinidamente la totalidad de la cadena aunque se puede pautar un paramento de tiempo a esperar como por ejemplo HSerIn 500,Nada,[Wait("OK")] utiliza la entrada UART del PIC esperando hasta 500ms la palbra OK si no salta a la etiqueta "Nada".
Después puedes guardar los datos que entran en un vector(variable indexada, etc) y extraer lo que quieras.

Saludos.

Ric.
 
Gracias amigos por sus respuestas, revise sus comentarios y me dieron una idea ...tambien leyendo por ahi algunos manuales llegue a solucionar el problema..
y bueno ps por si alguien lo necesita les comento...el comando que voy a usar es SERIN2
en este link esta la explicacion del comando..

http://www.todopic.com.ar/pbp_sp.html

y mi codigo en PBP para la extraccion de los datos del gps en el pic quedaria asi..

define osc 20

trisc=0
h1 var byte 'decena de hora
h2 var byte 'unidad de hora
m1 var byte 'decena de minutos
m2 var byte 'unidad de minutos
d1 var byte 'decena dias
d2 var byte 'unidad dias
ms1 var byte 'decena mes
ms2 var byte 'unidad mes
a1 var byte 'decena año
a2 var byte ìnidad año

inicio:

SERIN2 PORTC.7,84,[wait("$GPRMC,"), h1,h2,m1,m2, skip 46,d1,d2,ms1,ms2,a1,a2] 'espera $GPRMC y guarda los datos correspondientes en las variables con skip 46 saltea 46 caracteres para extraer la fecha
SEROUT2 PORTC.6, 84,[h1,h2,m1,m2,13,d1,d2,ms1,ms2,a1,a2,13]

GOTO INICIO
 
Atrás
Arriba