Nmea Gps Port

0 views
Skip to first unread message

Alethia Tiell

unread,
Aug 3, 2024, 6:10:40 PM8/3/24
to pearbnsadilad

NMEA is an acronym for the National Marine Electronics Association. NMEA existed well before GPS was invented. According to the NMEA website, the association was formed in 1957 by a group of electronic dealers to create better communications with manufacturers. Today in the world of GPS, NMEA is a standard data format supported by all GPS manufacturers, much like ASCII is the standard for digital computer characters in the computer world.

The purpose of NMEA is to give equipment users the ability to mix and match hardware and software. NMEA-formatted GPS data also makes life easier for software developers to write software for a wide variety of GPS receivers instead of having to write a custom interface for each GPS receiver. For example, VisualGPS software (free), accepts NMEA-formatted data from any GPS receiver and graphically displays it. Without a standard such as NMEA, it would be time-consuming and expensive to write and maintain such software.

NMEA 0183 is a combined electrical and data specification for communication between marine electronics such as echo sounder, sonars, anemometer, gyrocompass, autopilot, GPS receivers and many other types of instruments. It has been defined and is controlled by the National Marine Electronics Association (NMEA). It replaces the earlier NMEA 0180 and NMEA 0182 standards.[1] In leisure marine applications, it is slowly being phased out in favor of the newer NMEA 2000 standard,[2][3] though NMEA 0183 remains the norm in commercial shipping.

The electrical standard that is used is EIA-422, also known as RS-422, although most hardware with NMEA-0183 outputs are also able to drive a single EIA-232 port. Although the standard calls for isolated inputs and outputs, there are various series of hardware that do not adhere to this requirement.

The NMEA 0183 standard uses a simple ASCII, serial communications protocol that defines how data are transmitted in a "sentence" from one "talker" to multiple "listeners" at a time. Through the use of intermediate expanders, a talker can have a unidirectional conversation with a nearly unlimited number of listeners, and using multiplexers, multiple sensors can talk to a single computer port.

While NMEA 0183 only defines an RS-422 transport, there also exists a de facto standard in which the sentences from NMEA 0183 are placed in UDP datagrams (one sentence per packet) and sent over an IP network.

Most GPS manufacturers include special messages in addition to the standard NMEA set in their products for maintenance and diagnostics purposes. Extended messages begin with "$P". These extended messages are not standardized.

NMEA 0183 continued to be maintained separately: V4.10 was published in early May 2012, and an erratum noted on 12 May 2012.[15] On November 27, 2018, it was issued an update to version 4.11, which supports Global Navigation Satellite Systems other than GPS.[16]

I am trying to get the nmea gps data from an EM7455 snapdragon X7 LTE-a WWAN modem and I have a NMEA COM port. When I look at it with putty I see data, sometimes it is intermittant, but I cannot get the location in Skylite or my software. Anyone have any ideas?

I am using 7Semi EC200U development module. I installed the drivers and QNavigator and could able to establish the communication with the module. But when I try to access the GNSS, it is showing no ports available. I also looked the device manager, there is no mention of USB NMEA port in the list.

There are also scattered forum suggests to use a 3rd party program/driver called GPSGate. However requires licensing for each port and appears to work only on Windows. (I also do development on Linux).

I only just obtained a GPSMAP 66i last week, so I have not tested this on the 66i specifically, but with other 'Garmin Spanner' configured devices, when prompted to enter Mass Storage Mode you should select 'No' and the GPSr will remain functioning like normal while sending NMEA data over the USB cable, which will require any number of software solutions on the other end, depending on OS used, etc. There are multiple 'Garmin Spanner' configuration options for how the NMEA data is formatted before it is transmitted. The data will be there, but you may need to install virtual serial port software or use software titles that can read USB serial data.

I did a search here in the Garmin Forums and found several posts with multiple NMEA software options, many of which do not work fully with WIN10, but well enough to see the NMEA data stream was present and active.

Just search 'NMEA'

It appears that there are native USB serial port drivers for Win10, but that they are not necessarily installed by default. This article has instructions for enabling them. Look toward the bottom, for the "native method". I assume this is prerequisite to using whatever software actually reads and uses the NMEA stream.

Hi. I have a Matek F765-WING FC that I connected to, among other things, a UBLOX M9N GNSS receiver and a 900MHz serial telemetry link. The FC reads the GNSS location properly, as confirmed through Mission Planner. I have set up serial6 as NMEA output at 9600 baud. I will be sending these strings to an automatic antenna tracker. The problem is that the NMEA strings sent out the serial6 port, while being at the correct rate and also the correct string types show the location data within the strings as zero. See my attached screen capture.
I am currently running ArduPlane V4.1.0dev.
image1426683 36.3 KB

The GNSS receiver has a valid fix with 8+ satellites and places the vehicle at the correct location on the map. What do I need to do to get the actual location data out of the FC serial port on these strings please? Is this a bug of some sort that affects only people in a particular hemisphere? Have I missed something somewhere? FYI I am in Australia. Any help would be appreciated.

I have had a bit of a dig through some source code and found the AP_NMEA_Output.cpp code that assembles the relevant strings. It seems to me that the code that formats the latitude (line 102), longitude (line 112) are not getting the right data coming in on loc.lat and loc.lng. The altitude data in loc.alt (line 132) is also zero. Also, from the data captured earlier in the thread, pos_valid is showing as 0, even though I am getting valid position data in MP via Mavlink.

Can someone please confirm or deny that the code requires the home position to be set before the ahrs.get.location function will return a valid location. I have been doing some digging in other parts of the forum and suspect this is the cause of my grief. So even though I have a GPS lock, without the home position set the location data is null.

HELP!
I finally managed to get some time to look into this again and it is still not working . I have tried setting the home location using MP, setting the origin using MP, arming the FC, and I still get zero data coming out the NMEA strings (GPRMC and GPGGA) on the serial port. As stated before the two strings are assembled by the code but location and altitude data show as zeros (refer to image earlier in this thread).

So I am definitely stuck and could really use some help to get this going. I need the NMEA strings coming out the serial port to be able to track the vehicle on my AAT during flight. Any help would be greatly appreciated. I suspect it is not a great problem, but I have exceeded my experience in C++ already unfortunately.

Bump. Any thoughts on this one everyone? I have a flight (rocket) coming up in a couple of weeks and it would be nice to have this transmitting the relevant location data for tracking and recovery purposes .

Then in collector I tried to add the GS16 GPS receiver as the location provider however when I try to 'switch' from the integrated receiver to the GS16 GPS receiver (which is connected via Bluetooth) the error message "connection failed" appears. I closed Captivate so no programs were using the GPS sensor and used PuTTY to test the NMEA stream (screenshot attached below).

After coming across the above issue I then tried to work around it by installing GPS Complete and installing the GPSDirect Driver and selecting the NMEA source as the COM port (COM5) that the GPS receiver is connected too.

Back in collector I selected the integrated receiver as the location provider. The location of the "integrated receiver" was showing the location of the GPS receiver however the Horizontal Accuracy and Vertical Accuracy were shown as 2m when Captivate was showing the true accuracy to be around 25mm.

2) Are there any specific setting that are required when setting up the GPSDirect Driver to get the GST message through to Collector? or is the GPSReverse (COM Port Driver) required to be installed?

Thanks for the suggestion, however I don't think the Lecia GS16 can connect to Lecia Zeno Connect as this is for the GG02/03/04 units. I think the app NTRIP Client for Android could be used to connect to RTK.

Update: I have talked to Michael Chourdakis (the developer of GPSdirect) and he has said the GST sentence cannot pass though the Windows sensor interfaces. This explains the 2nd question I had about collector receiving the GST message through the GPSDirect Driver.

Hi Hugh, I am also having this same issue. What firmware version is the GS16 using? I get the same "connection failed" message in Collector on my Windows tablet. In Collector for Android, there is no "connection failed" message and it looks like it is connected, but no location is received.

We only have this issue while the GS16 is on firmware 7.50 or 7.52. We are able to successfully make the connection by rolling the firmware back to 6.04...but that firmware doesn't send the GST NMEA messages so the accuracy that is reported in Collector only gets down to about 12'.

It seems that ArcGIS uses a service (you cannot directly set the port) to establish the connection and it expects only 1 SPP port from our device, but instead receives two and does not know what to do with it or uses the incorrect port.

c80f0f1006
Reply all
Reply to author
Forward
0 new messages