TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: jonas13 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.
-
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
-
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
-
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.
-
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.
-
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.
-
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
-
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.
-
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 (http://www.parallax.com/Store/Sensors/CompassGPS/tabid/173/CategoryID/48/List/0/Level/a/ProductID/396/Default.aspx?SortField=ProductName%2CProductName) que es facil de integrar a un proyecto? o intentas usar el mismo chip MTK :S
Haber si me aclaras :? :? :D
Un saludo.
-
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:
(http://img149.imageshack.us/img149/1806/conectorgps.th.png) (http://img149.imageshack.us/my.php?image=conectorgps.png)
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
-
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
-
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??
-
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.
-
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.
-
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.
-
Puedes usar otra comunicacion 232 en el pic ya sea por software o por hardware (si el pic tiene implementado dos USART), o sino por USB si usas un 18F, pero ya seria mas complicado este ultimo. Y ya en software (aplicacion PC) deberas crear algo q coja los datos enviados desde tu modulo a la pc y que estos los convierta en un tipo de archivo especifico para que se puedan visualizar en el google earth u otro, creo que debera ser asi, tengo algunas dudas tb sobre esto :?
Encontre ESTO (http://www.gedanken.demon.co.uk/gps-sd-logger/). Se trata de un proyecto con un modulo gps y un memoria sd, concretamente un dataloger gps.
Espero te sirva porque a mi de seguro q si :D
Salu2
-
Puedes usar otra comunicacion 232 en el pic ya sea por software o por hardware (si el pic tiene implementado dos USART), o sino por USB si usas un 18F, pero ya seria mas complicado este ultimo. Y ya en software (aplicacion PC) deberas crear algo q coja los datos enviados desde tu modulo a la pc y que estos los convierta en un tipo de archivo especifico para que se puedan visualizar en el google earth u otro, creo que debera ser asi, tengo algunas dudas tb sobre esto :?
Encontre ESTO (http://www.gedanken.demon.co.uk/gps-sd-logger/). Se trata de un proyecto con un modulo gps y un memoria sd, concretamente un dataloger gps.
Espero te sirva porque a mi de seguro q si :D
Salu2
-
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.
hola jonas13, hablando de memorias eeprom.. no se cual sera la mas grande que podras encontrar por aqui.. pero podrias cambiar la frecuencia con la q guardas datos.. si es para los micros.. puedes guardarlo talvez cada 3 o 4 o 5 o 10 segundos, etc... Con respecto a descargar los datos.. si ya estas utilizando el modulo usart del 16f877A, puedes configurar otros pines del pic por software para que sean un segundo usart.. y con eso tranquilamente puedes enviar los datos a la PC. En la pc necesitas un software para que reciba y ordene los datos y visualizes el recorrido en planos o mapas me imagino que es lo mejor.
-
vamos aver...
que el holux m1000 no es un data loger.que no almacena nada en su memoria.tan solo la ultima coordenada recivida.y los calendarios que cada 6 u 8 dias,ya no sirven.y hay que poner el gps activo para que se actualicen.
todos los datos se emiten por bluetooth o serie.y hay que guardarlos cada vez que se actualiza la posicion gps.
-
por fin una buena noticia a todo esto el GPS holux M1200 trabaja con los 5v por lo que no se necesitaria un transceiver y lo mejor de todo es q usando la misma alimentacion del gps alimentaria a mi circuito.
ahora lo que no estaria entendiendo muy bien es la implementacion de otro USART en el pic por software??.
el problema de todo esto es que no puedo empezar a hacer ya algunas pruebas por q compre el gps por E-BAY y me llegara en 6 a 10 dias :?
-
por fin una buena noticia a todo esto el GPS holux M1200 trabaja con los 5v por lo que no se necesitaria un transceiver y lo mejor de todo es q usando la misma alimentacion del gps alimentaria a mi circuito.
ahora lo que no estaria entendiendo muy bien es la implementacion de otro USART en el pic por software??.
el problema de todo esto es que no puedo empezar a hacer ya algunas pruebas por q compre el gps por E-BAY y me llegara en 6 a 10 dias :?
-
Ocea el holux1000 no es un dataloggeR? pero si varios links que has dado lo usan para recorrer tracks y rutas, necesitaria de un datalloger para ir almacencnado todo y luego pasarlo a la computadora pues no? :?
jonas, el otro USART del pic lo puedes hacer en c con el CCS, es muy sencillo.
Un saludo.
-
si puedes hacer las pruevas.las sentencias nmea son iguales para todos los gps.
solo tienes que conectar un adaptador usb-rs232 a tu ordenador si este no posee rs232.y conectar el puerto com del adaptador usb-rs232 con el hiperterminal.
y escribir en el hiperterminal las sentencias que te puse anteriormente.por ejemplo:$GPGGA,XXXXXXXXXXXXXXXXXXXXXXXX.
y asi probar en el pic si te responde como quieres.si no haces esto quizas te va a ser mas dificil diseñar tu programa.ya que si tienes algun problema,no podrias comprobar caracter a caracter como se comporta el pic.
-
...ahora lo que no estaria entendiendo muy bien es la implementacion de otro USART en el pic por software??.
el problema de todo esto es que no puedo empezar a hacer ya algunas pruebas por q compre el gps por E-BAY y me llegara en 6 a 10 dias :?
Como programas los pic?? con assembler?? en C?? pascal?? ya que hay varias opciones, pero en el PicC de CCS puedes implementar un modulo USART al pic mediante librerias..es solo configurar que pin quieres que sea Tx y cual Rx y los baudios..
Y si puedes hacer pruebas..por ejemplo a capturar tramas hasta reconocer la trama $GPGGA.....x.xx.x.x.xx. por ejemplo.. programa un pic para que transmitita cada segundo tramas nmea0183.. y el otro pic que vaya reconociendo y filtrando hasta detectar solo la trama $GPGGA..
Luego cuando te llegue tu gps lo conectas al pic que reconoce la trama y listo..
-
Ocea el holux1000 no es un dataloggeR? pero si varios links que has dado lo usan para recorrer tracks y rutas,
pue si que es verdad que lo usan para eso.pero lo que hacen es coger los datos del gps y guardarlos en la pda.y luego visualizan los datos en el programa donde guardaron los datos.normalmente en un software de mapas.
-
Hola jonas13.. respondiendo a tu pregunta....
Yo utilizé uno de garmin.. modelo: GPS 18 PC, como tiene un conector db9, hice una tarjeta con un pic..un conector db9 y una interface para que se conecte y reciba los datos. Utilizé ese gps pq es era el mas barato que pude conseguir y ademas es directo a alimentarlo y empieza a transmitir información.. este gps es pequeño no tiene pantalla ni botones ni luces ni memoria interna..es a prueba de agua y base imantada.. me costo unos 125$ en una tienda aqui en la ciudad ( Santa Cruz )..lo bueno es que ellos traen gps garmin a pedido... el mio fue a pedido y tardó unas 2 semanas mas o menos... en la pagina de garmin..busca OEM y veras varios modelos y el que yo use..
Trataré de postearte fotos del gps en cuestión. Pero cuando esté en mi casa..ahora no estoy..y verás el tamaño..es bien pequeño...existe una versión que viene sin conector db9, si no mas bien con cables pelados..para que tu le coloques un conector cualquiera..esa hubiera sido mejor opción...creo..
-
Continuando el post anterior.. puedes ver el gps que usé... es el GPS 18 OEM aunque hay varios otros modelos.. yo utilicé la versión PC.
Garmin gps 18 oem (https://buy.garmin.com/shop/shop.do?cID=157)
-
la verdad es que yo aprendi a usar el mplab y programar en assembler por lo que no use el CCS y no lo entiendo muy bien.
nose si alguien me puede dar una mano en esa parte.
-
Hola... pues el ccs es programar en C.. si sabes programar en C sera mas facil.. no entiendo que necesitas.. programas ejemplo?? ya intentaste programar en CCS algo asi como encender leds o usar el usart??
saludos..
-
aquii les dejo un gps data logger q me encontre esta todo el esquematico funciona con google earth pero el man lo compilo en proton compiler
echenle un vistazo y lo empezamos a hcer con la ayuda de todos gracias por su interes en el
http://www.picbasic.org/forum/showthread.php?t=10917&goto=nextnewest
-
Está bién, yo me anoto. Tengo algunas memorias sd por ahi sin uso. Veré si se puede implementar.
-
aqui pongo tambien,unos pdf con informacion del protocolo NMEA y el manual de un gps para identificar los pines del conector miniusb.
http://www.4shared.com/file/101672330/82f2a5fb/GPSlim236_Manual__E_-031705.html
http://www.4shared.com/file/101672369/8659e91a/SIRF_Protocol.html
-
hola encontre este gps y quisiera saber si este serviria para mi proyecto http://cgi.ebay.es/ws/eBayISAPI.dll?ViewItem&item=350162971977.
lo que quiero hacer es conectar el gps a unos pics 16F84A y quiero que guardar unas cordenadas en el pic y que este al acercarse a las cordenadas te avise a travez de un mp3. Quisiera saber si me serviria el protocolo rs232 para comunicar el pic con el gps. Ademas de como se podria programar el pic en MPLAB, ya que en el mismo es en el que se programar
por favor si me pudieran ayudar con el mismo.
-
el holux me sirve como un modulo... tambien? es decir... guardar unas coordenadas que sacare del gps conectada a la compu... en el pic... y que cuendo este cerca el pic envie una pulso al mp3...
es decir que el gps este active todo el tiempo... fuera de la pc... activo en el circuito alimentado por 5v...
-
el gps con conector mini-usb,tiene las señales tx y rx.
en el rx leeremos los datos del gps.como coordenadas,horas,etc.
el tx no lo usaremos,porque solo nos sirve para configurar el gps.como velocidad de transmision,protocolos y actualizacion de comandos.
a no ser que modifiqueis internamente el gps.y buscar cuales son los pin para emitir y recivir datos por el bluetooth.como he hecho con el modulo bluetooth de un gps que se me rompio por alta temperatura.
aqui pongo una foto.
(http://img266.imageshack.us/img266/7916/modulobluetooth.th.jpg) (http://img266.imageshack.us/my.php?image=modulobluetooth.jpg)
este circuito que esta soldado a la placa del holux gr236bt.tiene las siguientes señales.
masa
+3v
tx
rx
indicador led.
he podido encontrar estas señales y ya he realizado comunicaciones por bluetooth con este modulo.y creo que puede ser la forma mas barata de hacerse con un modulo bluetooth.si encontarmos este gps por ebay.
ya estoy experimentando con otro gps NAVMAN sirf II pero el modulo bluetooth esta integrado en la placa.igual que el holux M1000 :(
asi que seria bueno saber que gps tienen estos modulos separados.
-
http://cgi.ebay.com/GARMIN-GPS-RECEIVER-16X-HVS-SENSOR-MODULE-0100025863_W0QQitemZ330323070473QQcmdZViewItemQQptZGPS_Accessories_Cables?hash=item330323070473&_trksid=p3286.c0.m14&_trkparms=72%3A1205%7C66%3A2%7C65%3A12%7C39%3A1%7C240%3A1318%7C301%3A0%7C293%3A1%7C294%3A50
este modulo sera que me serviria? si alguien me ayuda...
-
Perdona mi curiosidad pero para que quieres medir las trayectorias de los buses? cual es la finalidad del proyecto?
-
http://cgi.ebay.com/GARMIN-GPS-RECEIVER-16X-HVS-SENSOR-MODULE-0100025863_W0QQitemZ330323070473QQcmdZViewItemQQptZGPS_Accessories_Cables?hash=item330323070473&_trksid=p3286.c0.m14&_trkparms=72%3A1205%7C66%3A2%7C65%3A12%7C39%3A1%7C240%3A1318%7C301%3A0%7C293%3A1%7C294%3A50
este modulo sera que me serviria? si alguien me ayuda...
me parece muy caro para no tener bluetooth.yo compre uno bluetooth en urende por 9€ y hera un NAVMAN
-
Por favor puedes contarnos el alcance y finalidad del proyecto.
Orko 8)
-
ya mande traer el holux m1200... vamos a ver que seuede hacer...
73dolares me salio con envio y todo ya... llegaria en 8 dias.
ahora ya estoy entrando en la programacion... hay cambiar los codigos ascii a binario para la programacion... asi seria... verdad?
-
a que te refieres con cambiar los codigos ascii a binario?
si lo que quieres decir es que quieres pasar los codigos ascii recividos a byte.para guardarlos en la memoria.tendras que hacer un programa que haga la conversion.
no creo que sea muy dificil.lo que tienes que tener en cuenta es en que formato lo vas a guardar.
por ejemplo.si vamos a guardar la hora.cojeremos este valor:213058.000 21h 30min 58sec.
valor ascii del 2=50 . en hex=32h . asi que al los valores recividos les restaremos 30h y obtendremos el valor 2 en un byte.
pero si queremos tener dos valores en un byte.haremos un SWAP creo.y luego sumaremos el siguiente valor recivido ya restado con 30.
21horas= 2ascii y 1ascii = 32h y 31h .
32h-30h=02h y 31h-30h=01h.
hacemos SWAP a 02h se convierte en 20h y le sumamos 01h nos queda 21hex.y ya tenemos el valor de la hora guardado en un byte.
para la parte de las coordenadas es un poco mas complicado.pero solo cuando lleguemos a los segundos.
-
bueno disculpen la ausensia del foro es que tuve problemas familiares
ahora lo que yo queria es guardar la informacion de las rutas de los buses para saber por donde fueron y para usarlo como tickeo lo que significa de saber la hora por la que pasaron en ciertos puntos.
pero lo que tambien queria saber es si puedo guardar la informacion del gps pero solo partes "osea lo q me interesaria a mi" que seria la cordenada y la hora pero quisiera saber cuanto pesaria cada trama y ver como cuanto de memoria necesito.
y otra cosa q estaba haberiguando es cuan cierto es eso de que el gps recive varias interferencias??
algo asi me dijeron como la lluvia y el viento con polvo??
si alguien sabe de eso quisiera q me de una manito
y tambien si me puede ayudar en la programacion pero en MPLAB que es el que uso
GRACIAS!!!
-
en el principio del tema,creo haberte puesto algun enlace a programas que hacen parte de lo que quieres.si no lo entiendes te aconsejare.pero siento no poder ayudarte en lo de hacer el programa.ya que estoy con otros proyectos y la falta de tiempo me hace no poder despegarme de ellos.
si tienes alguna duda pregunta aqui mismo.pero como te digo el principio de captura de trama y seleccion de los datos validos para tu programa,esta en los enlaces.no ya la forma de empaquetar los datos.pero en la respuesta anterior,doy una idea de como hacerlo.
-
hola, ya tengo el holux m1200...
ahora la pregunta es... como ahgo para configurarlo para que me envie automaticamente informacion constantemente al alimentarlo al gps....
como seria eso?
-
el gps no tienes que configurarlo para recivir informacion.a no ser que quieras utilizar otro protocolo diferente a NMEA.
haz pruevas con el hiperterminal antes de empezar a utilizarlo con un pic.para que entiendas su funcionamiento.
prueva a conectarle un cable USB-RS232 y adaptar las señales con un MAX232.a no ser que tengas ordenador con salida RS232.en cullo caso te ahorras el adaptador.pero el MAX232 si que tienes que usarlo.y ver si las señales de voltage son compatibles.
cuando tengas hecho esto y te funcione la lectura de las tramas por el hiperterminal,ya podras empezar con la usart del pic.
pero comprueva esto para ver si el gps es compatible serial.
-
el tema es que no recibo las los codigos ascii... la informacion... pongo como entrada com10 pero llega hasta alli me detecta el bluetooh y despues me dice falla del dispositivo... algo asi...
el gps prende todo pero no me envia la señal parece... yo tengo que tener otro progarma ademas del mini gps?
desde ya gracias...
-
no tienes que tener instalado ningun programa extra.
solo tienes que emparejar el gps por bluetooth.te pidira una clave que es 0000. y cuando tengas conexion con el gps por spp slave,buscas que puerto com utiliza el bluetooth.y con el hiperterminal de window conectas con ese puerto.
cuando consigas esto.lo siguiente sera hacer las pruevas con conexion serie.
-
la conexion al circuito... lo tengo que hacer solamente con ese cable usb que viene con el holux nada mas... no me sirve ningun otro cable para ese...
puedo estirar directamente del gps nomas la conexion???
-
no entiendo a que te refieres con normas de conexion.
el gps envia atraves del pin RX que es el del centro del conector mini-usb con respecto a masa,las sentencias NMEA nadamas encenderlo.
normalmente si no lleva mucho tiempo apagado te envia los ultimos datos que recivio.como coordenadas,hora,etc.
lo que tienes que ver es si ese gps es compatible con la usart del pic.
ya he dicho anteriormente que practiqueis con el hiperterminal de windos antes de ponerse a programar el pic.seria una potra,chiripa etc.que funcionara a la primera sin entender el funcionamiento de las sentencias NMEA y la USART.
-
bueno disculpen la ausensia del foro es que tuve problemas familiares
ahora lo que yo queria es guardar la informacion de las rutas de los buses para saber por donde fueron y para usarlo como tickeo lo que significa de saber la hora por la que pasaron en ciertos puntos.
pero lo que tambien queria saber es si puedo guardar la informacion del gps pero solo partes "osea lo q me interesaria a mi" que seria la cordenada y la hora pero quisiera saber cuanto pesaria cada trama y ver como cuanto de memoria necesito.
y otra cosa q estaba haberiguando es cuan cierto es eso de que el gps recive varias interferencias??
algo asi me dijeron como la lluvia y el viento con polvo??
si alguien sabe de eso quisiera q me de una manito
y tambien si me puede ayudar en la programacion pero en MPLAB que es el que uso
GRACIAS!!!
Hola que tal?? pense que habia respondido a esto pero ahoar me acuerdo que hubo un error al darle publicar.
ahora lo que yo queria es guardar la informacion de las rutas de los buses para saber por donde fueron y para usarlo como tickeo lo que significa de saber la hora por la que pasaron en ciertos puntos.
Muy interesante aplicación. En vez de marcar tarjeta que es el sisitema actual. De donde eres?
pero lo que tambien queria saber es si puedo guardar la informacion del gps pero solo partes "osea lo q me interesaria a mi" que seria la cordenada y la hora pero quisiera saber cuanto pesaria cada trama y ver como cuanto de memoria necesito.
Si se puede, solo debes filtrar la informacion que te envia el gps. Para eso debes conocer el protocolo nmea0183 que es sencillo. Basicamente debes ir almacenando en un buffer la informacion que te envia el gps. Si son coordenadas lo guardas al buffer, si no, lo descarta. El protocolo maneja caracteres ascii asi que:
por ejemplo el gps envia:
$GPRMC,aaaaaa,b,cccc.cc,d,eeeee.ee,f,ggg.g,hhh.h,jjjjjj,kkk.k,l*mm
son mas o menos unos 70 o 75 caracteres?? bueno, entonces son 70 o 75 bytes.
De esa trama "cccc.cc" es latitud en formato ggmm.mm
"d" es el hemisferio ("N" = norte, "S" = sur)
"eeeee.ee" es la longitud en formato gggmm.mm
"f" es hemisferio ("E" = este, "W" = oeste)
como cada caracter es 1 byte, puedes deducir cuantos bytes son las coordenadas. Unos 17 bytes. Si almacenas cada segundo tendras:
17*60 = 1020 bytes en 1 minuto.
1020*60= 61200 bytes en 1 hora.
61200*24=1468800 en 1 dia.
Para ahorra puedes convertir los datos a algun formato como long int o algo asi para ahorrarte espacio. Tambien puedes optar por almacenar datos cada 2 o 3 o 5 segundos.
Y sobre las interferencias, pues no, ese tipo de cosas no le causan "interferencia". Probé un gps en lluvia intensa y como si nada. No se si alguien del foro tiene otras opiniones. Menos aun el polvo o tierra. Lo que si es que debe tener vista al cielo aunque sea parcial. Mientras mas satelites capta, mejor es la precision. si pones un gps en un micro o bus, ahi donde el chofer coloca su periodico o sus monedas, tranquilamente anda el gps, todo el dia. Cada vez los gps son mas sensibles y algunos captan inclusive bajo techo. Pero sin exagerar, o sea que si te vas a un sotano, ni en mil años te calculara su posicion. Si estas en una zona con denso follaje la mayoria de los gps pierden señal.
-
jonas13.como me pedistes ayuda por privado,te pondre la forma en la que yo haria el programa.no pongo el asm porque no tengo tiempo con los proyectos que ya tengo
pero esto te ayudara bastante.
para poder detectar si hay una coordenada cerca.yo haria lo siguiente:
lo primero es alojar las coordenadas recividas del gps en la memoria ram.por ejemplo:
cojemos la trama siguiente. $GPGGA,001430.003,3907.3885,N,12102.4767,W,1,05,02.1,00545.6,M,-26.0,M,,*5F
donde los datos que nos interesan son: 3907.3885 y 12102.4767 que son las coordenadas
en este ejemplo 39º serian los grados. 07,3885' son los minutos decimales.si quisieramos representralos en grados,minutos segundos.
tendriamos que hacer lo siguiente:
39º se deja como esta 07' que es la parte entera como esta.y ahora cogemos el valor 0.3885 y lo multiplicamos por 60.
0.3885 x 60= 23,31" la coordenada seria 39º07'23,31" y segun la circuferencia de la tierra he calculado que cada segundo son 30 mtrs. pero en esto puedo equivocarme.
de todas formas estos calculos solo nos sirven para visualizar las coordenadas en un display.si es que queremos modificarlas.
aqui solo queremos que el pic pueda detectar cuando nos acercamos a una coordenada preestablecida.
pues bien tendremos que realizar un programa que nos guarde en unos registros las coordenadas que van a ser actualizadas cada segundo.que va a ser
el tiempo que el gps nos mandara los datos.
serian los siguientes registros: uno por cada caracter.
UNIDAD_GRADOS_E
DECENAS_GRADOS_E
UNIDAD_MINUTOS_E
DECENAS_MINUTOS_E
UNIDAD_SEGUNDOS_E
DECENAS_2SEGUNDOS_E
UNIDAD_SEGUNDOS2_E
DECENAS_2SEGUNDOS2_E
UNIDAD_GRADOS_W
DECENAS_GRADOS_W
UNIDAD_MINUTOS_W
DECENAS_MINUTOS_W
UNIDAD_SEGUNDOS_W
DECENAS_2SEGUNDWS_W
UNIDAD_SEGUNDOS2_W
DECENAS_2SEGUNDOS2_W
tambien podemos realizar un direccionamiento directo.
como los datos recividos del gps son caracteres ASCII.tendremos que realizar un subprograma para convertir los valores ASCII en valores numericos hexadecimales
asi que el primer valor 39 cogeremos el 9 que es la unidad de los grados.
9 ascii=39hex asi que como en la tabla ascii,la diferencia entre el caracter 9 y los consecutivos hasta el 0.son que hay que restarle 30h.
pues lo tenemos muy facil para cojer el valor de la unidad.que seria 39h-30h=09h.facil
coger el valor de las decenas es un poco mas complicado.pero no imposible.asi se procede.
3 ascii=33hex 33h-30h=03h ahora solo hay que hacer un SUAPF y cambiamos los nibles de sitio= 30h.seguidamente lo sumamos con el valor 09h y tenemos el valor 39h
preparado para meterlo en un registro.de esta forma hemos ahorrado un byte en la pareja de los grados y el valor esta preparado para poder realizar operaciones arismeticas con el.
ya solo queda aplicarlo a las demas parejas de caracteres.con esto ahorramos 8bytes en cada coordenada respecto a los 16 bytes que ocupan los caracteres ascii
ya quedaria el subprograma para guardar la coordenada y el de comparacion.
el de guardar la coordenada es facil.que al pulsar un boton.se guarde en la eeprom de datos la coordenada gps actual.y asi sucesivamente hasta que la llenemos.
la comparacion ya es otra cosa.ya que tenemos que realizar un programa que esta constantemente comparando las coordenadas guardadas en la eeprom
de datos con la coordenada actual.que tendremos en un registro temporal que va cambiando cada segundo."aunque yo recomiendo pasar la eeprom de datos a la ram.porque sino ralentizariamos el programa y no nos leeria las coordenadas cada segundo."
para ello realizaremos restas de estos valores y conforme se vallan acercando la coordenada E o la W.con respecto a la almacenada en la eeprom habra un registro que contendra la diferencia.esta diferencia seran los metros que hay hasta la coordenada pregrabada.
pero bueno.ya es tarde y no puedo escribir mas .asi que si a alguien le interesa el final del cuento,ya me dira algo por aqui. :) saludos.
-
Hola Amigos!!
Veo que la tiene re clara al tema de los GPS´s...
Talvez alguien sepa cuantas muestras por segundo toma el HOLUX M-1000 C.
Lei los manuales, pero no estoy muy seguro... sera de almenos 5hz?, osea 5 muestras por segundo (0,2 sec)? :?
Espero puedan ayudarme... saludos!!
-
te he mandado la respuesta al privado que me enviastes.no me di cuenta de que me mandastes dos mensages.
ya saves que para tener 5 actualizaciones por segundo hay que configurarlo con un programa.por defecto el mio traia 1 por segundo.
-
te he mandado la respuesta al privado que me enviastes.no me di cuenta de que me mandastes dos mensages.
ya saves que para tener 5 actualizaciones por segundo hay que configurarlo con un programa.por defecto el mio traia 1 por segundo.
hola, soy nuevo en el foro, hace un tiempo que quiero hacer andar un modulo gps, le pregunte a groundman en privado sobre un problema que tengo, es que tengo un 18F452 y conectado con un lcd lo cual anda bien, lo conecto a la pc por max232 y tambien funciona todo, esto lo compruebo ya que tengo un programita echo en visual studio 2008 y le mando caracteres al pic y los visualizo por la pantallita y tambien los envio desde el pic a la pc y los visualizo en visual.... he probado trabajar con interrupciones y sin ellas y todo funciona perfecto... bien..
ahora cuando le conecto el modulo gps (tengo 2: et102 y et332) con ninguno logro leer lo que envian, no se que probar, he probado muchos codigos y nada, estoy seguro que esta bien la conexion de hardware ya que la plaquita que del et332 trabaja con niveles ttl, por lo que solo es cuestion de conectar rx con tx y tx con rx. esto lo he probado con usart por hardware y por software... tambien decidi cambiar la velocidad del oscilador y no consigo nada.. cabe aclarar tambien que tengo definido 2 usart, la fisica y la por software... por software tengo a la pc conectada y esta la he probado y funciona bien, la fisica del pic la tengo conectada al gps... cuando hago las prueba le mando por la pc al pic por el rx fisico del pic y se lo devuelvo a la pc por el echo en software.
les aclaro que estoy trabajando con ccs... si alguien me puede ayudar se lo agradeceria mucho... gracias...
saludos a todos
-
hola fabrisencina.en el privado que me mandastes te comente que miraras si los niveles de tension que entrega tus gps son de 5v
ya que podrian ser de 3.3v
el que te haya funcionado bien con el PC,no quiere decir que las señales se adapten bien del gps al pic.
ya que al conectar al pc.hay que poner un max232 para adaptar los niveles de tension.ya que el protocolo es el mismo.
yo ya he tenido problemas al conextar un GPS a un PIC.y lo solucione poniendo una puerta logica entre ambos.
mira esta respuesta: http://www.todopic.com.ar/foros/index.php?topic=27292.0
-
hola revise los niveles de tension y son niveles ttl, lo dice el fabricante de la placa con el modulo adquirido, de igual forma lo mido y larga picos de 5V.. por lo que por ahi parece no venir el problema, el tema es que ya no se que hacer!!! por que no me queda nada por probar, no se.. si a alguien se le ocurre alguna sugerencia o tiene un codigo que funcione perfecto como prueba se lo agradecere mucho, ya que no puedo seguir avanzando ya que lo primero es leer los datos del gps... saludos a todos!
-
dices que has conectado el gps con sus salidas rs232 al programa que tienes en el pc y que funciona bien.
pues lo primero que yo haria es poner un adapador rs232 en las salidas ttl del gps y probar de nuevo con el programa que tienes.
para estar seguros de que las señales y la velocidad son correctas.
mas adelante podemos hacer mas pruevas.pero vamos a ir descartando posibles fallos.
-
hola, alguien me puede ayudr con mi proyecto final? estoy trabajado en c con un 16f877a, programando con el mplab en c. Lo conecto al gps, recibo las tramas nmea, pero no puedo discriminar la $GPGGA, que es la queme interesa para enviar. Si alguien me da una mano les agradeceria mucho. Puedo ofrecer ayuda en cuestiones electronicas. GRACIS!!!!
-
en este enlace hize un programa que te puede servir.
http://www.todopic.com.ar/foros/index.php?topic=17786.0
pero es en asm. no entiendo el c
saludos.
-
hola gente perdon que me ausente demasiado.. problemas con la facu y demas...
quiero comentarles que logre hacerlo funcionar... era una tontera lo que pasaba, me estaban molestando los niveles de tension.. para el que no recuerde mi problema era que no podia leer los datos del gps con el 18f452, pero eso quedo atras por que al fin logre que funcionara. El problema estaba en la fuente de alimentacion!!! oscilaba mucho la tension y variaba de 4.3 a 4.8V, cosa que no seria ningun problema para el pic y tampoco para el gps ya que el modulo que yo tengo es el et332 que viene con los niveles de ttl ya de fabrica, pero parece que eso lo volvia un poco loco...
conecte el gps por el puerto d simulando rs232 y en el puerto rs232 fisico (RB6 y RB7) lo conecte a la pc y funciona de diez.
Cualqueir cosa que pueda ayudar me avisan...
gracias groudman, y a los que se interesaron..
saludos
-
felizidades.casi siempre los errores mas complicados son los mas simples.ya que siempre nos vamos directamente a comprobar las cosas que mas dificiles.
saltandonos las comprobaciones basicas.
saludos.
-
Hola que tal! estoy trabajando con GPS de leadtek (lr9552) y quiero modificar el baudaje en el cual envia la información. La hoja de especificaciones solo menciona que es posible trabajar a 4800, 9600,19200,38400 y 57600, pero no menciona cual es la sentencia para cambiar este baudaje.
Algo similar me sucede si es que necesito cambiar la frecuencia de las sentencias NMEA-0183 (GGA,GSA,GSV,RMC,VTG).
aki el datashit (es muy breve)
Hoja de especificaciones GPS leadtek LR9552 (http://www.mlab.cz/Designs/skrysohledac1/DOC/9552_v04_032707.pdf)
Saludos y muchas gracias!
-
yo tengo un holux M1000 y en la pagina del fabricante.me baje un programa para cambiar las cosas que traen por defecto.
mira en la pagina de sirf.igual encuentras algo.
otra cosa es que los quieras hacer directamente con el pic.en ese caso no se si habra esa informacion.aunas malas
podrias capturar los datos que se envian por la usart y ver que tipo de codigos se utiliza.porque en este caso no se utiliza tramas NMEA
para eso supongo que tienes que utilizar el protocolo de sirf.