Autor Tema: gps datalogger con pic  (Leído 25318 veces)

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

Desconectado jonas13

  • PIC10
  • *
  • Mensajes: 9
gps datalogger con pic
« en: 24 de Febrero de 2009, 22:21:37 »
quisiera saber si me pueden ayudar en un proyecto que tengo en mente no parece tan complicado ojala sea asi.
mi proyecto trata de usar gps en unos buses de mi ciudad y saber a que hora pasan por diferenten puntos de la ciudad y esos datos datos descargarlos a una computadora y ver el historial de las horas en una trayectoria q hiso el bus.
para eso pense unsar un gps en cada bus y guardar la hora q paso en punto determinado en un pic.
ese es mas o menos la idea q tengo pero ahora nose que dispositivos GPS usar por que nose mucho sobre GPS y quisiera ver si me pueden ayudar en este problema.
 

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: gps datalogger con pic
« Respuesta #1 en: 25 de Febrero de 2009, 20:09:08 »
hola.lo primero es entender como sacar los datos del gps , que formato tienen y que protocolo utilizan.
los modulos gps utilizan como medio de transmision una usart que esta configurada de fabrica a una velocidad determinada.la cual podemos cambiar acudiendo al manual de usuario de dicho gps.
si queremos utilizar un receptor gps comercial.es decir de los que todo el mundo puede comprar en cualquier tienda de aparatos electronicos.
ahora mismo se estan vendiendo mucho los gps bluetooth.

un gps bluetooth es en si dos circuitos separados e interconectados por dos lineas de datos para la comunicacion entre el modulo gps y el modulo bluetooth.
tx(transmision) y rx(recepcion)
muchos de estos gps traen un conector intermedio mini usb para realizar la conexion directamente con el gps.dejando asi anulado el receptor bluetooth.
la conexion de este conector con el ordenador.se puede hacer por el puerto serie com1 ,com2 o el que tengamos habilitado para comunicarnos con el gps.

hay otros gps que son usb.estos basicamente lo que tienen internamente es el gps y un circuito con un chip para adaptar el usb al rs232.
es como si le pusieramos al conector mini usb,un adaptador usb-rs232.porque no tengamos ese puerto en el ordenador.

ahora voy a explicar el protocolo de comunicacion:

el chip del gps.sea el fabricante que sea.sirf,mtk u otro.utiliza un lenguaje propio de comunicacion para dar a conocer las coordenadas,altitud,hora,nº de satelites a la vista,y un monton de datos mas que estan especificados en el datasheet del fabricante.quizas lo mas eficaz sea utilizar el lenguaje propio del fabricante.pero esto haria que si diseñamos un programa para controlar un gps.este solo nos va a funcionar con este tipo de chip.y no nos servira para otro gps de un fabricante diferente.

por eso lo recomendable es utilizar el protocolo NMEA 0183.(National Marine Electronics Association) que  es un medio a través del cual los instrumentos marítimos y también la mayoría de los receptores GPS pueden comunicarse los unos con los otros.

este protocolo contiene unos comandos y seguidos de estos estan los datos que nos interesan.

ahora voy a explicar como leer lo que esta transmitiendo el gps por su usart.
si el gps es bluetooth,lo vamos a emparejar con el portatil.para ello el portatil debe disponer de  bluetooth o conectarle un adaptador  bluetooth.
cuando el bluetooth este activo,allamos emparejado el gps con el ordenador.y tengamos conectados ambos,buscaremos por que puerto com estan conectados.
para esto tenemos que irnos a panel de control-sistema-hardware-administrador de dispositivos-puertos (COM y LPT).
seleccionaremos: puerto de comunicaciones bluetooth.aveces hay dos puertos COM para comunicaciones bluetooth.apuntaremos los dos.

acto seguido abriremos el hiperterminal de windows.y en conectar usando,pondremos uno de los puertos.y le daremos a aceptar.
a continuacion elegimos la velocidad de comunicacion.pero como esta velocidad no es la de la comunicacion entre el chip gps y el receptor interno bluetooth.
pues da igual la que pongamos.asi que pondremos 9600,que nos sobra para la actualizacion de datos que normalmente es de 1 segundo.a no ser que configuremos el gps para menos.pero ya entramos en otro tema.

y cuando le demos a conectar.nos aparecera en el hiperterminal algo asi:

$GPGSV,4,4,13,22,01,326,*4D
$GPRMC,213056.000,A,1234.5678,N,01234.5678,W,0.72,339.97,250209,,,A*7A
$GPVTG,339.97,T,,M,0.72,N,1.33,K,A*3E
$GPGGA,213057.000,1234.5678,N,01234.5678,W,1,6,1.80,235.2,M,49.4,M,,*41
$GPRMC,213057.000,A,1234.5678,N,01234.5678,W,0.69,337.08,250209,,,A*7F
$GPVTG,337.08,T,,M,0.69,N,1.27,K,A*39
$GPGGA,213058.000,1234.5678,N,01234.5678,W,1,6,1.80,236.1,M,49.4,M,,*49
$GPRMC,213058.000,A,1234.5678,N,01234.5678,W,0.76,335.26,250209,,,A*77
$GPVTG,335.26,T,,M,0.76,N,1.40,K,A*38
$GPGGA,213059.000,1234.5678,N,01234.5678,W,1,6,1.80,236.8,M,49.4,M,,*46
$GPRMC,213059.000,A,1234.5678,N,01234.5678,W,0.89,335.08,250209,,,A*7D
$GPVTG,335.08,T,,M,0.89,N,1.65,K,A*33
$GPGGA,213100.000,1234.5678,N,01234.5678,W,1,7,1.80,237.5,M,49.4,M,,*42
$GPRMC,213100.000,A,1234.5678,N,01234.5678,W,0.85,335.08,250209,,,A*78
$GPVTG,335.08,T,,M,0.85,N,1.57,K,A*3E

el gps lo que hace es enviar todos estos caracteres en formato ascii.tal y como los estais viendo.y todos enviados en serie,uno detras de otro.lo unico que separa una trama de otra es el "$".que es el caracter de principio de trama.

asi que en tu caso jonas 13.la trama que te hace falta gestionar es la $GPGGA,213100.000,1234.5678,N,01234.5678,W,1,7,1.80,237.5,M,49.4,M,,*42

ya que contiene la hora y las coordenadas. donde la hora es 213100.000 ->21h31min etc.y las coordenadas son 1234.5678,N,  01234.5678,W
que las he cambiado porque seria la posicion dode estoy ahora mismo.y aunque no pasaria nada por dejarla puesta.pero por si.no valla a tener
un admirador secreto como el de los beatles. :D y perdon por mi humor negro.

el programa que debes hacer es un buscador de caracteres.este programa tiene que buscar el primer caracter "$" que aparezca,para luego buscar el "G","P","G","G","A" y si algun caracter no es el que sea igual a la secuencia que te acabo de explicar.entonces reiniciar a buscar otra vez por el "$".
asi de facil.ya solo queda meter los datos posteriores a este comando en la ram del pic.y desde aqui tratarlos para su visualizacion o grabacion.

aqui esta el enlace de un proyecto para visualizar las coordenadas.te recomiendo que le heches un vistazo.te puede ser de gran ayuda:

http://www.todopic.com.ar/foros/index.php?topic=17786.0






« Última modificación: 26 de Febrero de 2009, 12:14:52 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: gps datalogger con pic
« Respuesta #2 en: 25 de Febrero de 2009, 20:31:30 »
y ahora te quiero explicar algo a tener en cuenta.

si lo que quieres es guardar las coordenadas cada cierto tiempo.tenemos los datos del gps donde esta la hora y si queremos grabar por distancia,tenemos las coordenadas.ahora tienes que ver que pos y contras te pueden surgir si la recepcion es mala.
si lo haces por coordenadasy si el gps se vuelve loco.puede pasar que se te graben muchos datos incorrectos.ya que las coordenadas pueden correr mucho.
y si lo haces por tiempo.si hay mala recepcion,no se van a grabar puntos hasta que halla buena recepcion.

asi que tu decides.aunque tambien podrias poner un reloj de tiempo real externo.con el ds1307

y otra cosa:
ya hace tiempo queria hacer un proyecto para un avisador de radares.es decir que cargando un archivo .ov2 que es la extension de archivos de pois para tomtom.
y grabandolos en una memoria.con un pic y un gps podria hacer que me avisara.

todo lo relacionado con el hardware es facil.pero un poco mas complicado el descifrar los .ov2
aqui tienes un pdf por si eres capaz de crearlos tu mismo.http://www.tomtom.com/lib/doc/ttnavsdk3_manual.pdf

te digo lo de los .ov2 ya que cuando descarges los datos recojidos de los recorridos,de una sd o la memoria que decidas utilizar en tu proyecto.
tendras que visualizarlos en algun programa de visualizacion de mapas.y desde ahi veras el recorrido de los autobuses.

tambien puedes usarlos en el google earth.aunque sincronicar los .ov2 con la hora exacta que paso por ese punto,no se si sera compatible.

si tienes alguna duda pregunta aqui.saludos
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado jonas13

  • PIC10
  • *
  • Mensajes: 9
Re: gps datalogger con pic
« Respuesta #3 en: 25 de Febrero de 2009, 22:41:06 »
bueno gracias por la informacion pero la verdad creo q no se entendio bien el proyecto q tengo en mente.
lo que yo quiero es que un gps este conectado directo al pic y asi poder comunicar los datos del gps al pic y comparar las posiciones q recive con 5 puntos q tendre de referencia asi cuando sea igual guardare la hora por la cual paso en ese punto
cuando el bus termine el recorrido quisiera descargar los datos a una PC y ver las horas por las cuales el bus paso por los 5 puntos de referencia.
eso seria lo esencial que nesecitaria.
el problema por el cual estoy detenido es por el tipo de gps a usar y como oder conectarlo al pic por q yo creo q no necesito memoria externa al pic por q solo necesito guardar la informacion de la hora en 5 puntos.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: gps datalogger con pic
« Respuesta #4 en: 26 de Febrero de 2009, 12:32:17 »
mira yo compre el holux m1000 con chip MTK.te lo recomiendo frente a los sirf III.ya que tienen mas sensibilidad.yo lo enciendo dentro de mi casa y coje satelites en poco tiempo.y el holux gr236bt con sirf III. no coje  ninguno a no ser que lo acerque a la ventana.aqui tienes un reportage.:http://www.pcdemano.com/modules.php?name=Sections&op=viewarticle&artid=1215

la conexion se realiza con dos cables.masa y tx.ya que solo vamos a recivir datos.el tx  tienes que conectarlo a la usart del pic.
pero entre medias es muy posible que tengas que poner un circuito con un transistor para adaptar los 3.3v del gps con los 5v del pic.
si no,no te va a funcionar.

para eso el gps que te compres tiene que tener conector para datos.normalmente si tiene mini-usb.este conector sirve para alimentar el gps y para la conexion de los datos.pero asegurate que lo ponga en las especificaciones de gps.

por lo demas.para que te guarde estos cinco puntos.solo tendrias que guardar las cinco coordenadas en el pic.y que cuando se aproxime unos metros que tu especifiques,se grabe la hora en el pic.

no puedes poner unas coordenadas fijas.ya que si la recepcion es mala,puede variarse algunos metros.y no te grabaria la hora a la que estubo.


Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado jonas13

  • PIC10
  • *
  • Mensajes: 9
Re: gps datalogger con pic
« Respuesta #5 en: 03 de Marzo de 2009, 22:23:17 »
estuve viendo los gps y parece q es bueno el holux m1200 no esta tan caro y creo q trabaja con los 5V.
el problema es q no hay en mi pais y tendria q comprarlo por internet ahora lo q quisiera saber es como configurar a mi pic para poder conectarlo con el gps y tambien la parte de el guardado de los datos en una memoria.
quisiera usar el pic 16f877a por q es con el q aprendi a programar usando el mplab.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: gps datalogger con pic
« Respuesta #6 en: 05 de Marzo de 2009, 12:58:54 »
no se a que te refieres a conectarlo.si te refieres a que pin has de utilizar.en los manuales del gps seguramente te descriva las conexiones del conector mini-usb.
si te refieres a al conexion de datos.se realizaria por la usart del pic.adaptando las señales si hiciera falta.pero te recomiendo a que aprendas a manejar la usart del pic antes de nada.para eso mejor usar el hiperterminal de windows.


aqui tienes varios programas para comunicacion usart: http://www.todopic.com.ar/foros/index.php?topic=24397.0
« Última modificación: 05 de Marzo de 2009, 18:59:41 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: gps datalogger con pic
« Respuesta #7 en: 05 de Marzo de 2009, 19:12:00 »
ah,quiero decite que me extraña que las señales sean de 5v.si puede que ese sea el voltage del cargador.pero el de la bateria creo que es 3.7v
pero de todas formas es facil adaptar las señales.yo lo hize con una puerta logica.no se si fue una and con las dos entradas interconectadas.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: gps datalogger con pic
« Respuesta #8 en: 08 de Marzo de 2009, 02:07:16 »
Groundman, hay unas cosas que no entiendo, espero puedas aclararmelas. Este HOLUX M1000 lo que hace es coger datos de su GPS y guardarlos para luego al conectar en la PC se pueda ver cual fue el recorrido, la ruta, pues eso verdad? Ocea que este viene con un programa para mostrar esto? o usa el GogleEarth o algo parecido? Y, cuanto puede grabar? ocea es obvio que hasta que dure la bateria pero, me refiero a su memoria interna que debe de tener me supongo no ?  :?

Como es que sacas los datos de alli? Porque mejor no usar algo como ESTO que es facil de integrar a un proyecto? o intentas usar el mismo chip MTK :S

Haber si me aclaras  :? :?  :D


Un saludo.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: gps datalogger con pic
« Respuesta #9 en: 08 de Marzo de 2009, 11:43:21 »
hola jeremylf.el holux M1000 es un gps bluetooth mondao y pelao.que integra un conector mini usb para entrada y salida de datos.
asi que lo unico que hace es transmitir los datos:coordenadas,hora,altura.etc

y aqui pongo una imagen del conector:


lo que tu te refieres es otro tipo de receptor GPS que ademas de este.tiene interno un data looger.que no es otra cosa que una memoria interna donde se van depositando los datos cada ciertas condiciones.que se pueden configurar en el aparato.

y estos datos puedes descargartelos al ordenador para visualizarlos en un software de mapas.y el google earth tambien puede visualizarlos.
aqui tienes un foro que ablan de estos.
http://www.pcdemano.com/phpBB2/viewtopic.php?t=20273

Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: gps datalogger con pic
« Respuesta #10 en: 08 de Marzo de 2009, 16:33:44 »
http://www.todopic.com.ar/foros/index.php?topic=21692.0

este es el enlace de como hacer funcionar una 24lc512

y la conexion:

RX del pic ------->TX del gps y masas comunes.

pero hay que conectar entremedias de la señal una puerta logica para adaptar los 3.7 v a los 5v
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado jonas13

  • PIC10
  • *
  • Mensajes: 9
Re: gps datalogger con pic
« Respuesta #11 en: 08 de Marzo de 2009, 18:42:32 »
en la parte de manejo de la memoria cada trama pesa 12bytes entonces si quiero por lo menos guardar informacion de 2 horas serian 7200seg por lo q cada segundo tubiera una trama en lo que serian 7200 tramas x 12bytes = 86400 bytes que nesecito de espacio para guardar mi informacion osea con una memoria de 128Kbytes estaria satisfecho.
pero vi las especificaciones del pic que quiero usar "16f877a"
Itém                                    Valor
Memoria de programa 14.3 KBytes (8192 instrucciones)
Memoria SRAM 368 KBytes
Memoria EEPROM 256 KBytes
Número de E/S 33
Número de ADC 8 (10 Bits)
Número de PWM 2
SPI Si
I2C Si (Master)
USART Si
Timers 8 Bits 2
Timers16 Bits 1
Comparadores 2
Clock 0-20 MHz
Número de pines 40/44
Cápsula PDIP, PLCC, TQFP, QFN

y tengo en la memoria interna una EEPROM de 256Kbytes por lo que yo veo parece suficiente para guardar mi informacion.
y ademas quisiera saber la forma de poder conectar el gps con el pic osea en la parte de la programacion cada segundo usaste interrupcion para guardar la informacion de donde sacaste esta interrupcion interna del micro o usaste una interrupcion externa.
y como guardar la trama del gps por lo que veo el buffer de recepcion del pic solo es de 1byte 8 bits en lo que tendre que ir guardando en diferentes tipos de variables??

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: gps datalogger con pic
« Respuesta #12 en: 08 de Marzo de 2009, 19:57:09 »
la interrupcion que uso es la RCIE del registro PIE1 esta interrupcion salta cuando el bufer de racepcion de la usart esta lleno.es decir que se ha recivido un dato.
en nuestro caso un caracter ascii del gps.

y como te postee antes este proyecto: http://www.todopic.com.ar/foros/index.php?topic=17786.0

aqui lo que hago es comparar el primer caracter recivido en el registro RCREG con el $ y si no es el mismo,seguir comparandolo hasta que lo encuentre
y cuando lo encuentre comparar el siguiente caracter con el G y si no es,volver a buscar el $.
y todo asi hasta conseguir encontrar el comando &GPGGA,     que es la trama que contiene la hora y las coordenadas.
ya todos los datos recividos,los almacenamos en unas variables de la ram.y cojemos los datos que necesitamos.

asi que no cojas la gtrama entera al almacenar los datos.y asi ahorraras memoria.
y segun he visto como minimo con la hora y coordenadas se pueden gastar hasta 29bytes si lo que almacenas son los caracteres ascii.
a no se que uses otro sistema de almacenamiento en la eeprom de datos.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: gps datalogger con pic
« Respuesta #13 en: 08 de Marzo de 2009, 23:23:24 »
Joas13, la memoria EEPROM del PIC 16F877a es de 256 bytes, no Kbytes. Lo mismo con su SRAM.  Yo te recomendaria una EEPROM externa de 1024Kb (que es lo maximo de almacenamiento en eeprom's), concretamente una de la familia 24 o 25 de microchip dependiendo si usas I2C o SPI respectivamente. Sino, tambien una memoria FLASH que es lo mas practico que veo utilizar para mi por su memoria, es una de las que tiene ATMEL que llegan hasta los 8MB con SPI hasta 100mhz en su clock, pero nunca las he usado. Porque otras de mayor capacidad solo usan comunicacion en paralelo y eso ya es otra historia y de otros fabricantes.

groundman, y sabes si con algun programa como por ejemplo visual basic, c#, lo q sea puedo hacer esos mismo mapas n mi programa? o necesariamente necesito de algo como el google earth? Otra cosa, ocea que el holux 1000 no se comunica por usb sino que por 232 ? :S ocea el conector mini-usb no es lo que aparenta?  :lol: sabes cuanto tiempo puede guardar informacion este holux? o mas directo, sabes la capacidad de su memoria para el datalogger?


Un saludo.

Desconectado jonas13

  • PIC10
  • *
  • Mensajes: 9
Re: gps datalogger con pic
« Respuesta #14 en: 09 de Marzo de 2009, 00:47:15 »
que macana es cierto lo de la memoria del pic me equivoque ni modo tendre q usar una memoria EEPROM de 128Kbytes por que no necesito mas bueno entonces entendere un poco mas tu programa aunque esta medio complicado de entender.
lo que tambien me queda una duda es despues de realizar el recorrido con el gps como descargo los datos del la memoria junto con el pic para poder analizarlo en la pc si si ya estoy usando el USART con el gps.