Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

gpsdev

Conéctese a un receptor GPS conectado a la computadora host

Desde R2020b

Descripción

El gpsdev System object™ se conecta a un receptor GPS conectado a la computadora host.

Para conectarse a un receptor GPS:

  1. Cree el objeto gpsdev y establezca sus propiedades.

  2. Llame al objeto con argumentos, como si fuera una función.

Para obtener más información sobre cómo funcionan los System objects, consulte What Are System Objects?

Creación

Descripción

ejemplo

gps = gpsdev(port) se conecta a un receptor GPS en el puerto serie especificado de la computadora host.

ejemplo

gps = gpsdev(serialobj) se conecta a un receptor GPS especificado por un objeto serial.

ejemplo

gps = gpsdev(___,Name,Value) se conecta a un receptor GPS en el puerto especificado o especificado a través de un objeto serie, utilizando uno o más pares de nombre-valor.

Propiedades

expandir todo

A menos que se indique lo contrario, las propiedades son no ajustables, lo que significa que no se pueden cambiar sus valores después de llamar al objeto. Los objetos se bloquean cuando los llamas y la función release los desbloquea.

Si una propiedad es ajustable, puedes cambiar su valor en cualquier momento.

Para obtener más información sobre cómo cambiar los valores de las propiedades, consulte System Design in MATLAB Using System Objects.

Esta propiedad o parámetro es de solo lectura.

La velocidad en baudios para la comunicación en serie. La velocidad en baudios se establece en 9600 bits/seg. El receptor GPS debe estar configurado para funcionar a 9600 bits/seg. Si su receptor GPS está configurado con alguna otra velocidad en baudios, reconfigurelo a 9600 bits/seg para usar la función gpsdev .

Especifique si se deben devolver las muestras de datos más recientes o más antiguas. El número de muestras depende del valor SamplesPerRead . Los datos leídos del receptor GPS se almacenan en el buffer MATLAB® .

  • latest : proporciona las últimas muestras de datos disponibles en el búfer. Todas las muestras de datos anteriores en el búfer se descartan. Por ejemplo, si SamplesPerRead = 3, se devuelven las últimas tres muestras de datos leídas por el receptor GPS.

  • oldest : proporciona las muestras de datos más antiguas disponibles en el búfer. En este caso, no se descartan muestras de datos. Por ejemplo, si SamplesPerRead = 3, las tres primeras muestras de datos leídas se devuelven para la primera lectura, las siguientes tres muestras de datos se devuelven para la segunda lectura, y así sucesivamente.

Ajustable: No

Tipos de datos: character vector | string

Esta propiedad o parámetro es de solo lectura.

Número de muestras leídas del receptor GPS usando la función read , después de bloquear el objeto. El objeto gpsdev se bloquea en la primera llamada de la función read después de la creación del objeto o en la primera llamada de la función de lectura después de la ejecución de release función.

Tipos de datos: double

Esta propiedad o parámetro es de solo lectura.

Muestras disponibles en el búfer del host. Cuando release el objeto, SamplesAvailable se establece en 0.

Tipos de datos: double

Muestras leídas del primer read, especificado como un entero positivo en el rango [1 10].

Ajustable: No

Tipos de datos: double

Establezca el formato de salida de los datos devueltos ejecutando la función read .

Cuando OutputFormat se establece en timetable, el timetable devuelto tiene los siguientes campos:

  • LLA (Latitud, Longitud, Altitud)

  • Pista de velocidad

  • Curso sobre tierra

  • Dilución de precisiones (DOP), VDOP, HDOP, PDOP

  • Hora del receptor GPS

  • Hora: hora del sistema cuando se leen los datos, en formato datetime o duration

Cuando OutputFormat se establece en matrix, los datos se devuelven como matrices de tiempo, LLA, velocidad sobre el terreno, rumbo sobre el terreno, DOP y tiempo del receptor GPS. Las unidades para las lecturas del receptor GPS son las mismas que las del formato timetable .

Ajustable: Yes

Tipos de datos: character vector | string

Establezca el formato de la hora que se muestra cuando se leen los datos del GPS.

  • datetime : muestra la fecha y hora en que se leen los datos.

  • duration : muestra el tiempo transcurrido en segundos después de bloquear el objeto GPS. El objeto gpsdev se bloquea en la primera llamada de la función read después de la creación del objeto o en la primera llamada de la función de lectura después de la ejecución de release función.

Ajustable: Yes

Tipos de datos: character vector | string

Funciones del objeto

Para utilizar una función de objeto, especifique System object como primer argumento de entrada. Por ejemplo, para liberar recursos del sistema de un System object llamado obj, use esta sintaxis:

release(obj)
flushBorre todos los datos de GPS acumulados en los buffers y restablezca las propiedades
infoLea la frecuencia de actualización, la información de bloqueo del GPS y la cantidad de satélites a la vista para el receptor GPS.
readLeer datos del receptor GPS
releaseLiberar el objeto GPS
writeBytesEscribir comandos sin formato al receptor GPS

Ejemplos

contraer todo

Obtenga la ubicación geográfica utilizando el receptor GPS conectado a la computadora host en un puerto serie específico y trace la ubicación en un mapa.

Hardware requerido

Para ejecutar este ejemplo, necesita:

  • Módulo GPS UBlox Neo-6M

  • antena gps

  • Módulo USB a UART

  • cable USB

  • Cables de conexión

Conexión de hardware

GPS_UART_USB_PC.png

Conecte los pines del módulo GPS UBlox Neo-6M a los pines de su módulo USB a UART. Las conexiones son:

  • VCC - +5V

  • RX-TXO

  • TX-RXI

  • Tierra - Tierra

Conecte la antena GPS al módulo GPS. Conecte el módulo USB a UART a la computadora host con un cable USB. GPS Fix se puede adquirir fácilmente en lugares que tengan una vista despejada del cielo. Espere a que el módulo GPS adquiera señales satelitales (Fix). Esto se puede verificar verificando el LED Fix (D1) de su módulo GPS.

Crear objeto GPS

Cree un objeto gpsdev para el módulo GPS conectado a un puerto específico.

gps = gpsdev('COM4')
gps = 
  gpsdev with properties:

                         SerialPort: COM4	
                           BaudRate: 9600 (bits/s)

                     SamplesPerRead: 1	 
                           ReadMode: "latest"	 
                        SamplesRead: 0	 
Show all properties all functions

Leer los datos del GPS

Lea los datos del GPS y extraiga la latitud, longitud y hora de ellos. El GPS devuelve la fecha y hora UTC. Conviértalo a la zona horaria del sistema.

[gpsData,~] = read(gps);
latitude = gpsData.LLA(1);
longitude = gpsData.LLA(2);
gpsTime = gpsData.GPSReceiverTime;
gpsTime.TimeZone = 'local';

Trazar la posición en un mapa junto con la marca de tiempo.

Trazar la posición en ejes geográficos con los datos obtenidos del módulo GPS. El GPS debería tener una corrección para obtener valores válidos de latitud, longitud y gpsTime.

Si el módulo GPS no tiene corrección, los comandos anteriores dan NaN s para latitud y longitud y NaT para gpsTime. En este caso, asegúrese de que la antena esté expuesta a un cielo despejado, espere un tiempo y vuelva a intentar los pasos anteriores.

if(~isnan(latitude) && ~isnan(longitude))
 % plot the position in geographic coordinates
 fig = geoplot(latitude,longitude,'Marker',"o",'MarkerSize',6,'Color','red','MarkerFaceColor','red');

 % Sets the latitude and longitude limits of the base Map   
 geolimits([latitude-0.05 latitude+0.05],[longitude-0.05 longitude+0.05]) ;

 % Selects the basemap   
 geobasemap streets;
 timeString = strcat("Timestamp: ",string(gpsTime));

 % Create annotation and display time received from GPS
 annotation('textbox',[0.005 0.98 0.6 0.01],'FitBoxToText','on','string',timeString,'Color','blue','FontSize',10);
end

Limpiar

Cuando la conexión ya no sea necesaria, borre el objeto asociado.

delete(gps);
clear gps;

Escriba comandos de configuración en el receptor GPS conectado a la computadora host usando el objeto serialport .

Hardware requerido

Para ejecutar este ejemplo, necesita:

  • Módulo GPS UBlox Neo-6M

  • antena gps

  • Módulo USB a UART

  • cable USB

  • Cables de conexión

Conexión de hardware

GPS_UART_USB_PC.png

Conecte los pines del módulo GPS UBlox Neo-6M a los pines de su módulo USB a UART. Las conexiones son:

  • VCC - +5V

  • RX-TXO

  • TX-RXI

  • Tierra - Tierra

Conecte la antena GPS al módulo GPS. Conecte el módulo USB a UART a la computadora host con un cable USB. GPS Fix se puede adquirir fácilmente en lugares que tengan una vista despejada del cielo. Espere a que el módulo GPS adquiera señales satelitales (Fix). Esto se puede verificar verificando el LED Fix (D1) de su módulo GPS.

Crear objeto GPS

Conéctese al receptor GPS usando el objeto serialport . Especifique el nombre del puerto y la velocidad en baudios.

s = serialport('COM4',9600)
s = 
  Serialport with properties:

                 Port: "COM4"
             BaudRate: 9600
    NumBytesAvailable: 0

  Show all properties, functions

gps = gpsdev(s)
gps = 
  gpsdev with properties:

                         SerialPort: COM4	
                           BaudRate: 9600 (bits/s)

                     SamplesPerRead: 1	 
                           ReadMode: "latest"	 
                        SamplesRead: 0	 
Show all properties all functions

Escribir comandos de configuración

En la configuración predeterminada, el receptor GPS devuelve los siguientes mensajes NMEA: GPRMC, GPVTG, GPGGA, GPGSA, GPGSV y GPGLL. El receptor se puede configurar para que tenga un conjunto de mensajes de salida definido por el usuario.

Lea algunas líneas de mensajes predeterminados desde el puerto serie al que está conectado el receptor GPS.

for i = 1:10    
data = readline(s);
disp(data);
end
$GPRMC,,V,,,,,,,,,,N*53
$GPVTG,,,,,,,,,N*30
$GPGGA,,,,,,0,00,99.99,,,,,,*48
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,2,1,08,01,,,18,08,,,12,09,,,12,15,,,19*77
$GPGSV,2,2,08,23,,,13,24,,,09,25,,,10,27,,,25*79
$GPGLL,,,,,,V,N*64
$GPRMC,,V,,,,,,,,,,N*53
$GPVTG,,,,,,,,,N*30
$GPGGA,,,,,,0,00,99.99,,,,,,*48

Escriba el comando del monitor de versión en el receptor GPS para devolver la versión de software y hardware del receptor GPS.

configCMD = [0xB5 0x62 0x0A 0x04 0x00 0x00 0x0E 0x34];
% writeBytes(gps,cfg)
write(s,configCMD,'uint8')

Lea algunas líneas de mensajes nuevamente para verificar la versión del mensaje.

for i = 1:10    
data = readline(s);
disp(data);
end
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,2,1,05,01,,,13,09,,,11,15,,,16,23,,,12*74
$GPGSV,2,2,05,25,,,10*7A
$GPGLL,,,,,,V,N*64
µb
( 7.03 (45969)                  00040007  °$GPRMC,,V,,,,,,,,,,N*53
$GPVTG,,,,,,,,,N*30
$GPGGA,,,,,,0,00,99.99,,,,,,*48
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,2,1,06,01,,,11,09,,,11,23,,,14,24,,,21*75

Se puede observar en la salida que 7.03 (45969) es la versión de software y 00040007 es la versión de hardware.

Limpiar

Cuando la conexión ya no sea necesaria, borre el objeto asociado.

delete(gps);
clear gps;
clear s;

Lea los datos del receptor GPS conectado a la computadora host en un puerto serie específico.

Hardware requerido

Para ejecutar este ejemplo, necesita:

  • Módulo GPS UBlox Neo-6M

  • antena gps

  • Módulo USB a UART

  • cable USB

  • Cables de conexión

Conexión de hardware

GPS_UART_USB_PC.png

Conecte los pines del módulo GPS UBlox Neo-6M a los pines de su módulo USB a UART. Las conexiones son:

  • VCC - +5V

  • RX-TXO

  • TX-RXI

  • Tierra - Tierra

Conecte la antena GPS al módulo GPS. Conecte el módulo USB a UART a la computadora host con un cable USB. GPS Fix se puede adquirir fácilmente en lugares que tengan una vista despejada del cielo. Espere a que el módulo GPS adquiera señales satelitales (Fix). Esto se puede verificar verificando el LED Fix (D1) de su módulo GPS.

Crear objeto GPS

Cree un objeto gpsdev para el receptor GPS conectado a un puerto específico. Especifique el formato de salida de los datos como un calendario.

gps = gpsdev('COM4','OutputFormat',"timetable")
gps = 
  gpsdev with properties:

                         SerialPort: COM4	
                           BaudRate: 9600 (bits/s)

                     SamplesPerRead: 1	 
                           ReadMode: "latest"	 
                        SamplesRead: 0	 
Show all properties all functions

Leer los datos del GPS

Leer los datos del GPS y devolverlos como horario.

[tt,overruns] = read(gps)
tt=1×5 timetable
              Time                         LLA               GroundSpeed    Course            DOPs                GPSReceiverTime     
    ________________________    _________________________    ___________    ______    ____________________    ________________________

    22-Mar-2021 15:31:15.190    17.47    78.343     449.6      0.25619       NaN      9.31    1.48    9.19    22-Mar-2021 10:01:14.000

overruns = 0

Muestra el número de muestras leídas y las muestras disponibles en el búfer del host.

gps.SamplesRead
ans = 1
gps.SamplesAvailable
ans = 0

Suelte el objeto GPS para configurar las propiedades no ajustables. La función de liberación también borra el búfer y restablece las propiedades SamplesRead y SamplesAvailable .

release(gps)

Especifique el número de muestras por lectura en 2. Leer los datos del GPS.

gps.SamplesPerRead = 2;
read(gps)
ans=2×5 timetable
              Time                         LLA               GroundSpeed    Course            DOPs                GPSReceiverTime     
    ________________________    _________________________    ___________    ______    ____________________    ________________________

    22-Mar-2021 15:31:17.178    17.47    78.343       450     0.063791       NaN      9.32    1.48     9.2    22-Mar-2021 10:01:16.000
    22-Mar-2021 15:31:17.178    17.47    78.343       450     0.063791       NaN      9.32    1.48     9.2    22-Mar-2021 10:01:16.000

Muestra el número de muestras leídas y las muestras disponibles en el búfer del host.

gps.SamplesRead
ans = 1
gps.SamplesAvailable
ans = 0

Limpiar

Cuando la conexión ya no sea necesaria, borre el objeto asociado.

delete(gps);
clear gps;

Más acerca de

expandir todo

Historial de versiones

Introducido en R2020b

Consulte también