TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: SickRa en 11 de Octubre de 2016, 23:36:30
-
Hola!
Quería pedir un poco de ayuda, les comentare lo que sucede. Necesito saber como hacer para tomar los datos de un GPS "ublox neo6m", guardarlos en una variable y mostrarlos en pantalla. Estuve investigando y no encuentro la solución, por esto quiero preguntar si pueden ayudarme.
Estoy usando el Pic 16f877A y,como ya dije, el GPS "Ublox Neo6M".
Aqui hay un codigo que esta en Assembler y sinceramente no entiendo mucho de lo que dice, pero por si les sirve de ayuda:
'****************************************************************
'* 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
Lo que necesitaría es la programación en C, ya que es el lenguaje que comprendo.
Desde ya muchas gracias y espero llegar a una solución. :)
Graciaaaas ! ^-^
-
Estuve investigando y no encuentro la solución
A que cosa no encontras solucion ?
Seguro que es por la UART, segun el datasheet va a depender de algunos pines los baudios con que se maneje, pero lo mas seguro es que sea 9600
Luego lo que tenes que saber son las sentencias NMEA ya que vas a recibir cosas asi:
$GPRMC,183729,A,3907.356,N,12102.482,W,000.0,360.0,080301,015.5,E*6F
$GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,183730,3907.356,N,12102.482,W,1,05,1.6,646.4,M,-24.1,M,,*75
$GPGSA,A,3,02,,,07,,09,24,26,,,,,1.6,1.6,1.0*3D
$GPGSV,2,1,08,02,43,088,38,04,42,145,00,05,11,291,00,07,60,043,35*71
$GPGSV,2,2,08,08,02,145,00,09,46,303,47,24,16,178,32,26,18,231,43*77
$PGRME,22.0,M,52.9,M,51.0,M*14
$GPGLL,3907.360,N,12102.481,W,183730,A*33
$PGRMZ,2062,f,3*2D
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
$GPRTE,1,1,c,0*07
$GPRMC,183731,A,3907.482,N,12102.436,W,000.0,360.0,080301,015.5,E*67
En C luego tenes que "discriminar" lo demas y separar lo unico que te interesa.
Aqui hay un codigo que esta en Assembler
Es BASIC ese codigo. Por lo que parece espera por una sentencia GPRMC, los cuales los campos estan definidos asi:
RMC - NMEA has its own version of essential gps pvt (position, velocity, time) data. It is called RMC, The Recommended Minimum, which will look similar to:
$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
Donde:
RMC Recommended Minimum sentence C
123519 Posicion tomada a las 12:35:19 UTC
A Estado A=Activo or V=Cancelado.
4807.038,N Latitud 48 deg 07.038' N
01131.000,E Longitud 11 deg 31.000' E
022.4 Velocidad sobre la tierra en nudos
084.4 Angulo en Grados
230394 Fecha - 23rd of March 1994
003.1,W Variacion Magnetica
*6A checksum, siempre comienza con *, para comprobar que la sentencia sea correcta.
-----------------------
Ahora si tu interes es encontrar una libreria que lo haga por vos y no queres "hacer el esfuerzo" entonces no puedo ayudarte en mas nada, ya que no tengo ninguna libreria asi.
-
Ahora si tu interes es encontrar una libreria que lo haga por vos y no queres "hacer el esfuerzo" entonces no puedo ayudarte en mas nada, ya que no tengo ninguna libreria asi.
De hecho hay montón de librerías por la red...
SickRa busca por Adafruit, Sparkfun, hasta algún vendedor de módulo gps para arduino seguro algo provee. Me extrañaría muchísimo que no encuentres nada.
-
Incluso en este foro algun "gil" debe haber publicado algo:
http://www.todopic.com.ar/foros/index.php?topic=42317.0
Sds.
-
Incluso en este foro algun "gil" debe haber publicado algo:
http://www.todopic.com.ar/foros/index.php?topic=42317.0
Sds.
Siempre hay uno :D.
De hecho hay montón de librerías por la red...
SickRa busca por Adafruit, Sparkfun, hasta algún vendedor de módulo gps para arduino seguro algo provee. Me extrañaría muchísimo que no encuentres nada.
Como decia, YO no puedo ayudarlo por que no tengo ninguna a mano xD, pero nunca dije que no habia por internet. Ademas casi cualquier micro ya posee una libreria para Arduino, es solo buscar y transportar (en caso que sea necesario)