TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: Abago en 14 de Julio de 2003, 21:41:00

Título: INTERPRETAR datos GPS con PIC
Publicado por: Abago en 14 de Julio de 2003, 21:41:00
Ya he visto por hay el simulador de GPS que se os ha ocurrido para engañar al tinytrack...

Ahora viene mi nueva idea....
Me gustaría leer los datos que suelta un GPS NMEA...
Y poder deglosar la trama $GPRMC para saber la velocidad a la que va mi coche...

Supongo que con todos los genios que hay por aqui... no será muy dificil...

Muchas gracias a todos los que colaboreis...
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: lu6vg en 15 de Julio de 2003, 22:56:00
Hola

Norberto (TODOPIC) lo puso por algun lado en el foro pero no me acuerdo donde. Si pones NMEA en google con un poco de paciencia vas a encontrar la explicacion de las sentencias.

Saludos

Luis
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: Abago en 16 de Julio de 2003, 14:39:00
No... Si las tramas mnea, las entiendo a la perfección....
Pero el proyecto es el inverso al del emulador GPS -tinytrack.
Mi idea es leer por puerto serie del GPS las tramas nmea que tira el GPS, y desglosarlas.... Para saber sus parametros por separado...
Luego con estos parametros... Podemos hacer muchas cositas...
Por ejemplo... MAndar un SMS con las cosdenadas por donde va nuestro coche.... O la velocidad...
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: lu6vg en 16 de Julio de 2003, 18:46:00
No entiendo que necesitas
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: jorgeansuini en 17 de Julio de 2003, 07:44:00
Buenas:
Leer los datos del gps e interpretarlos es sencillo, por lo menos latitud, longitud y hora, es mas ,en algun lugrar puse un programa para mostrar la hora UT y la corregida para Argentina, para sacar los datos al celular, hbria que ver como ingresar  el sms en el celular.-
Jorge
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: jorgeansuini en 17 de Julio de 2003, 15:03:00
Buenas:
De primera intención tendrías que tratar de conseguir copiar algunas tramas del mensaje del gps, Yo por algun lado tengo las descripciones del protocolo, solo es cuestión de encontrarlo, pero la idea es ver el protocolo que recibis para poder simularlo con la PC y probar el programa del micro.-
Mi gps solo me tira un tipo de datos.-

Seguimos en contacto
Jorge
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: Abago en 17 de Julio de 2003, 17:38:00
La idea es descartar las tramas que no sean GPRMC
Porque con interpretar las tramas GPRMC, tenemos casi todos los datos que nos pueden ser de utilidad

Se os ocurre alguna forma de leer los datos serie, y descartar los que no sean de utilidad???

Yo tengo info sobre las tramas mnea... Y las entiendo a la perfección....
 
Pero aún, no se como hacer lectura con el pic... Y descartar las tramas que no sean útiles...
de momento, para ir empezando, seria muy util... Hacer un programilla en PBP que lea el gps... descarte las tramas que no sean GPRMC... y las que si lo sean... las tire hacia el puerto serie del PC para poder leerlas con el Hyperterminal... y ver los resultados...

Si esto funciona.... Vamos por buen camino
Una vez que esto funcione... Solo tenemos que hacer algo  para desglosar la trama... y tirar los datos al hyperterminal pero con un formato que no sea mnea...

algo asi como

Latitud xxx.xxxxxxx - Longitud xxx.xxxxxxx - Altitud xxx.xxx
Velocidad xxx.xx  ETC...


A ver si alguien aporta algo de PBP con lo que podamos ir ESTUDIANDO!!!! Y desarrollando!!!

Saludos a todos...
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: lu6vg en 17 de Julio de 2003, 18:51:00
Para que te des una idea de como salen las tramas nmea del GPS conectalo al hyperterminal puesto en 4800 8N1 y las vas a ver en pantalla.

Cada trama empieza con $GP y luego GGA o RMC o cualquier otro encaveado valido. POr ejemplo para recibir solamente una sentencia RMC tenes que buscar que te aparezca $GPRMC. Como esos cararteres viene de a uno, tenes que hacer comparaciones anidades es decir ves si es $ luego si es G etc. Cuando se cumplan esas condiciones tenes la sentencia que buscas.

Saludos

Luis
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: Abago en 17 de Julio de 2003, 20:06:00
El problema que tengo, es que no se como las lee el pic
Me he hecho un programilla en VB que me lee las tramas como un hyperterminal....
Y desecha las que no son GPRMC


Lo que hago es crearme un buffer de recepción que recive unos 300 caracteres  cuando se llena.... busco la trama MC
Y luego la desgloso....

Esto en VB es facil... Pero con el pic... No se por donde empezar... Estoy empezando a comprender el PBP...

La entrade de datos al pic, es secuencial??? dato a dato???
por ejemplo???
lee
1.- &
2.- G
3.- P
4.- R
5.- M
6.- C
????
porque asi, creo que no debe de ser dificil Hacerlo....
Pero necesito HELP...

Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: lu6vg en 17 de Julio de 2003, 21:09:00
Si, es paso a paso, un caracter por vez
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: jorgeansuini en 18 de Julio de 2003, 06:04:00
Bueno, vamos entendiendo, te comento que la instruccion serin en PBP, tiene un modificador "wait", que estera que le llegue cierto tipo de mensaje para recibir luego lo que le sigue del mensaje, asi que te pedirias que copies un trozo de trama de la que te interesa, incluendo unos caracteres de la trama anterior y de la posterior.
Luego hacemos la salida hacia la PC,pero inclui esa trama para ver el mensaje.
Saludos
Jorge
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: Abago en 18 de Julio de 2003, 14:48:00
$GPRMB,,,,,,,,,,,,,*66
$GPRMC,042109,V,2721.0241,S,15303.2849,E,0.0,188.0,261100,11.3,E*46
$GPGGA,042109,2721.0241,S,15303.2849,E,0,0,0.80,0,M,,,,*17
$GPGSA,A,1,,,,,,,,,,,,,1.69,0.80,1.49*0A
$GPGSV,3,1,12,23,56,170,,17,47,113,,21,47,259,,15,43,210,*74
$GPGSV,3,2,12,29,33,342,,3,32,230,,6,23,21,,26,14,140,*46
$GPGSV,3,3,12,9,12,87,,22,10,287,,28,8,255,,31,,215,*47
$GPAPB,,,,,,,,,,,,,,*44
$GPGLL,2721.0241,S,15303.2849,E,042110,V*24

Estas tramas las tira consecutivamente...  Os adjunto un ficherito con una lectura de unos minutos...

de todas estas tramas... la que nos interesa es la
$GPRMC,042109,V,2721.0241,S,15303.2849,E,0.0,188.0,261100,11.3,E*46

El principio de la trama, es el $GPRMC, .... Pero el final, es el checksum del nmea creo que siempre son 4 digitos... Pero el valor es variable...

De momento el valor que me interesa en el que está después de ,E,0.0,  El valor el 188.0
Es la velocidad del vehículo...
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: lu6vg en 18 de Julio de 2003, 18:17:00
Usa las comos (,) como ayuda ya que son separadores de campo. Si te interesa la velocidad dejas pasar 8 comas (si no conte mal) y lees todos los caracteres hasta la proxima coma y ya tenes la velocidad
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: Abago en 18 de Julio de 2003, 21:04:00
Para que me puede ser util la velocidad???
Estoy un poco perdidillo con el procedimiento que utiliza PBP

Mi GPS suelta datos NMEA 2.0 con los siguientes parametros serie.
Velocidad: 4800
Bits de datos: 8
paridad: No
Bits de stop: 1
Control de Flujo: No

4800 8 n 1 0

con estos parámetros....
Y los datos que os puse antes en los otros posts...
Como se irian leyendo los datos por serie???

Algun ejemplo???
Help!!!

he estado hechando un vistazo al codigo del simulador gps para tinytrack

SERIN2 PORTA.1,16572,10000,hola,[b0(0), b0(1),b0(2),b0(3),b0(4),b0(5),b0(6),b0(7),b0(8),b0(9),b0(10)]
        SERIN2 PORTA.1,16572,10000,hola,[b0(11), b0(12),b0(13),b0(14),b0(15),b0(16),b0(17),b0(18),b0(19),b0(20),b0(21)]
con este comando, almacenamos en el array B0 los datos que vienen del gps o del simutrack...!!!
como leeriamos los datos 1 a 1 para identificar el simbolo $
y seguidamente
GPRMC ???

Una vez encontrado el principio de la trama... ya debe ser facil desglosar los datos latitud, longitud, altura, velocidad......

ALgun alma caritativa que deje por aqui algo de código de ejemplo???

TNKS
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: jorgeansuini en 22 de Julio de 2003, 16:41:00
Buenas:
Este programita interpreta datos del GPS y los envia convertidos
a una PC,para verlos a través de un programa terminal.-
No he podido probarlo con otros datos que no sea $GPRMC,pero
creo que debe funcionar sin inconvenientes.-
Esta pensado para funcionar con un 16F873.-
Saludos
Jorge
"****************************************************************
"*  Name    : Traductor_GPS                                     *
"*  Author  : [jorge ansuini]                                   *
"*  Notice  : Copyright (c) 2002 [jorge ansuini]                *
"*          : All Rights Reserved                               *
"*  Date    : 20/07/2003                                        *
"*  Version : 1.0                                               *
"*  Notes   :   Lee datos del GPS y la presenta en una          *
"*          :   PC como hora UT,latitud y longitud              *
"****************************************************************
 

   device 16f873
   DEFINE OSC 4
   
    BAUDGPS VAR BYTE
    GPSin VAR PORTB.7     ;entrada de datos
    GPSout VAR PORTc.6     ;salida hacia la PC
   baudGPS = 188 ;4800,8N1 CON MAX232
    "baudGPS CON 16572 ;4800,8N1 sin MAX232
    H VAR BYTE   ;decenas de hora
    M VAR BYTE  ;decenas de minuto
    S VAR BYTE  ;decenas de segundo
    H1 VAR BYTE   ;hora
    M1 VAR BYTE ;minuto
    S1 VAR BYTE ;segundo
    L VAR BYTE ;latitud
    L1 VAR BYTE
    L2 VAR BYTE
    L3 VAR BYTE
    L4 VAR BYTE
    L5 VAR BYTE
    L6 VAR BYTE
   L7 VAR BYTE
   L8 VAR BYTE
   L9 var byte
   Lo VAR BYTE ;longitud
    Lo1 VAR BYTE
    Lo2 VAR BYTE
    Lo3 VAR BYTE
    Lo4 VAR BYTE
    Lo5 VAR BYTE
    Lo6 VAR BYTE
   Lo7 VAR BYTE
   Lo8 VAR BYTE
   Lo9 Var byte
   lo10 var byte
   lo11 var byte

 GPS:
 
   Serin2 portb.7,baudGPS,3000,errr,[ wait("$GPRMC,",H,H1,M,M1,_
   S,S1,L,L,L,L,L,L,L,L1,L2,L3,L4,L5,L6,L7,L8,L9,Lo,Lo,Lo1,_
   Lo2,Lo3,Lo4,Lo5,Lo6,Lo7,Lo8,Lo9,Lo10]
   
   serout2 portc.6,baudGPS,["Hora U.T.> ",H,H1," : ",M,M1," : ",S,S1,13]
   serout2 portc.6,baudGPS,["Latitud>  ",l,l1,L2,L3,L4,L5,L6,L7,L8,L9,13]
   serout2 portc.6,baudGPS,["Longitud> ",lo,lo1,Lo2,Lo3,Lo4,Lo5,Lo6,_
   Lo7,Lo8,Lo9,Lo10,13]
   
  goto GPS


 errr:
        serout2 portc.6,baudGPS,["error"]
      goto gps
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: Abago en 22 de Julio de 2003, 18:52:00
Ante todo, dar las gracias a jorgeansuini  por el codigo que dejó en el anterio post....


Gracias jorge, con este código, he podido comprender como actua el serin en pbp....
Poco a poco, voy aprendiendo...

Viendo el código, creo poder interpretar que con el comando wait, espera a que aparezca la cabezera $GPRMC, por lo que deduzco que descartará las demas tramas que tire el gps....
Con esto está todo solucionado... Por lo menos en la teoria....

De todos modos, en estos dias... Os pondré un poco de documentación sobre las tramas genericas GPS... A ver si vamos todos aprendiendo nuevas cosas...

Supongo que a alguien le será de utilidad para sus proyectos....


Ahora, quiero agradecer a los demas que estais participando en el foro, vuestro apollo... creo que es imprescindible para que todos leamos... y podamos aprender unos de otros....


Os cuento mi última idea:
Se me ha ocurrido, hacer un circuitillo.. que me sirva para detener mi coche... en pricipio, la idea era hacer un cuenta KM digital Por GPS... Pero dandole vueltas a la cabeza... he pensado que puede ser de gran utilidad hacer un modulo de detención de vehículo...
La idea es leer los datos GPS... y si la velocidad es durante unos 15 segundos 0 KM/H y activamos una de las patillas del pic...
El vehículo se para por medio de un cortacorrientes...

La idea de que lea la velocidad a 0 KM/H durante 15 o 20 segundos, es para detener el coche con seguridad, aunque el que nos lo ha robado, no lo merezca.

De momento con un cortacorrientes... Porque me he puesto a comentar la idea con unos amigos teleco, y hemos pensado hacer un circuitillo que sature el código de la llave dal coche, e inhabilite el cógigo.... del transponder....
No se si se podrá hacer... pero vamos a intentarlo....
Si teneis alguna idea de como hacerlo.... Pués nada... A ayudar con el proyecto....

Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: Abago en 23 de Julio de 2003, 14:08:00
Aqui os dejo un ficherito con documentación sobre las tramas NMEA...
Lo prometido es deuda...

Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: Abago en 23 de Julio de 2003, 18:15:00
device 16f876
DEFINE OSC 4

DEFINE  LCD_BITS        4     "define display de 4 bits
DEFINE  LCD_LINES       2     "cantidad de lineas del display
DEFINE  LCD_DREG        PORTB "portb control del display
DEFINE  LCD_DBIT        0     "comienzo de bit del puerto
DEFINE  LCD_RSREG       PORTB "linea select
DEFINE  LCD_RSBIT       4     "bit de comando de select
DEFINE  LCD_EREG        PORTB "puerto de habilitacion
DEFINE  LCD_EBIT        5     "bit de habilitacion

BAUDGPS VAR BYTE
GPSin VAR PORTA.2  "entrada de datos
GPSout VAR PORTC.6 "salida hacia la PC
baudGPS = 188      "4800,8N1 CON MAX232
"baudGPS CON 16572 "4800,8N1 sin MAX232



" $GPRMC,HHMMSS.SSS,A,DDMM.MMMM,N,DDDMM.MMMM,W,????,DDD.DD,DDMMYY,W,CCC

H0 VAR BYTE "UTC tIME
H1 VAR BYTE
M2 VAR BYTE
M3 VAR BYTE
S4 VAR BYTE
S5 VAR BYTE
pUNTO1 VAR BYTE
SD6 VAR BYTE
SD7 VAR BYTE
SD8 VAR BYTE

STAT VAR BYTE "STADO DE LA TRAMA

DLAT0 VAR BYTE "LATITUD
DLAT1 VAR BYTE
MLAT2 VAR BYTE
MLAT3 VAR BYTE
PUNTO2 VAR BYTE
MDLAT4 VAR BYTE
MDLAT5 VAR BYTE
MDLAT6 VAR BYTE
MDLAT7 VAR BYTE



ORLAT VAR BYTE "N/S INDICADOR

DLON0 VAR BYTE "LONGITUD
DLON1 VAR BYTE
DLON2 VAR BYTE
MLON3 VAR BYTE
MLON4 VAR BYTE
PUNTO3 VAR BYTE
MDLON5 VAR BYTE
MDLON6 VAR BYTE
MDLON7 VAR BYTE
MDLON8 VAR BYTE

ORLON VAR BYTE "E/W INDICADOR

VEL0 VAR BYTE "VEOCIDAD
VEL1 VAR BYTE
VEL2 VAR BYTE
VEL3 VAR BYTE

COG0 VAR BYTE "CURSO DIRECCIÓN
COG1 VAR BYTE
COG2 VAR BYTE
PUNTO4 VAR BYTE
COG3 VAR BYTE
COG4 VAR BYTE

DIA0 VAR BYTE "FECHA GPS
DIA1 VAR BYTE
MES0 VAR BYTE
MES1 VAR BYTE
YEAR0 VAR BYTE
YEAR1 VAR BYTE

MV VAR BYTE "VARIACIÓN MAGNETICA

CK0 VAR BYTE "CHECKSUM DE LA TRAMA
CK1 VAR BYTE
CK2 VAR BYTE


GPS:

Serin2 portb.7,baudGPS,3000,errr,_
  [ wait("$GPRMC,",H0,H1,M2,M3,S4,S5,punto1,SD6,SD7,SD8,STAT,DLAT0,DLAT1,_
  MLAT2,MLAT3,PUNTO2,MDLAT4,MDLAT5,MDLAT6,MDLAT7,ORLAT,DLON0,DLON1,DLON2,_
  MLON3,MLON4,PUNTO3,MDLON5,MDLON6,MDLON7,MDLON8,ORLON,VEL0,VEL1,VEL2,VEL3,_
  COG0,COG1,COG2,PUNTO4,COG3,COG4,DIA0,DIA1,MES0,MES1,YEAR0,YEAR1,MV,CK0,CK1,CK2)]

"Muestra las lecturas en un LCD 2x16 conectado en 4 bits al
"portB

lcdout $fe,1,"$GPRMC,",H0,H1,M2,M3,S4,S5,punto1,SD6,SD7,SD8,STAT,DLAT0,DLAT1,_
  MLAT2,MLAT3,PUNTO2,MDLAT4,MDLAT5,MDLAT6,MDLAT7,ORLAT,DLON0,DLON1,DLON2,_
  MLON3,MLON4,PUNTO3,MDLON5,MDLON6,MDLON7,MDLON8,ORLON,VEL0,VEL1,VEL2,VEL3,_
  COG0,COG1,COG2,PUNTO4,COG3,COG4,DIA0,DIA1,MES0,MES1,YEAR0,YEAR1,MV,CK0,CK1,CK2"

goto GPS

ERRR:
goto GPS



Algo que comentar??? al menos como teoría???

tengo una dudilla!!!!
wait("$GPRMC,",H0
el tema de las comas.....
tenemos la primera coma dentro de las comillas
"$GPRMC,"
es corecto el poner otra vez la coma fuera de las comillas
para enlazar con H0???


no se porque sale el simbolo / si yo no lo he escrito!!!!!
Bueno, ya sabeis.... omitie este simbolo!!!


Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: Abago en 14 de Marzo de 2004, 00:47:00
El código del anterior post, está basado en el standart nmea...
No se si estarás muy puesto en el tema de los GPS, pero si lees el
documento que colgé sobre como funcionan estas tramas, seguro que te aclaras un poco mas...

Si tu GPS, no usa el standart NMEA, creo que no voy a poder ayudarte demasiado...
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: isabelino en 14 de Marzo de 2004, 02:40:00
Hola a todos:
                      gracias a Jorge y su programa en basic he podido interfacear  un Pic16F628 con un modulo FV12 con protocolo NMEA,
pero no logro captar latitud ni longitud, pues permanentemente me informa que tengo un satalite en vista pero no engancha (tracking) ninguno. La antena es una Trimble magnetica , quisiera saber si hay que inicializar de alguna manera el modulo, a dicho modulo lo compre en Cekit Argentina. He esperado por espacio de 20min para que enganche y nada.
 Gracias
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: litozz en 13 de Mayo de 2004, 11:58:00
Tu idea de hacer el modulo para parar el coche en al caso de robo, me parece muy buena, pero tienes que tener en cuenta que hay servicios de éste que no funcionan sin corriente, véase el ABS, la dirección asistida, o los airbags. Sería una buena forma de pararlo, pero a lo mejor no de recuperarlo en buen estado.

Otro aspecto a tener en cuenta, es en dónde situar el cortacorrientes, ya que si lo haces directamente en la batería y el osado ladrón es un poco havil puede arrancarlo con la propia inercia.

Imagino que todo esto ya lo habrás pensado tu, pero por si las moscas te lo recuerdo...

Besotes a todos
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: Abago en 13 de Mayo de 2004, 12:16:00
Escrito originalmente por isabelino
Hola a todos:
                      gracias a Jorge y su programa en basic he podido interfacear  un Pic16F628 con un modulo FV12 con protocolo NMEA,
pero no logro captar latitud ni longitud, pues permanentemente me informa que tengo un satalite en vista pero no engancha (tracking) ninguno. La antena es una Trimble magnetica , quisiera saber si hay que inicializar de alguna manera el modulo, a dicho modulo lo compre en Cekit Argentina. He esperado por espacio de 20min para que enganche y nada.
 Gracias


Vallamos por partes....
Lo primero antes de trabajar con tu gps, es cerciorarte, de que funciona por si  solo, sin conectarlo a tu circuito...
Supongo que el módulo sacará los datos nmea, en modo ttl.
Conecta el gps a un max232, y a su vez al puerto serie del pc...
y verifica que el gps, hace su función correctamente...

Cuando veas que el gps, funciona... Ya te pones a cacharrear con tu circuito..

AH!! y perdona por haber tardado tanto en responder...


Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: valetodus en 12 de Septiembre de 2004, 20:04:00
hola amigos tengo una pregunta como la trama obtenida por el gps a un dato que me de
latitud y longuitud que formula aplico  o no se me podrian dar un ejemplito

muchas gracias a todos
esta es una excelente pagina
Título: RE: INTERPRETAR datos GPS con PIC
Publicado por: arielbaravalle en 23 de Septiembre de 2004, 07:35:00
yo me hice un programa en asm con el MPLAB que lee los datos nmea del gps con un 16f84 , identifica los datos y los coloca en un lcd .

en pantalla puedo elegir cualquiera de los datos que entrega el nmea. por ejemplo:

altura, coordenadas N S , velocidad, y mediante una de los datos poner en pantalla que no hay señal de satelite.

si aun te interesa puedo pasarte la informacion.
saludos.

Ariel.
Madrid- 23/9/2004