一次 TinyGPS 升级,新增了对 NMEA v3.0 和 GLONASS 的支持
2015 年 9 月 3 日 · admin
简而言之:可以试试我 fork 的 https://github.com/florind/TinyGPS。它增加了 GLONASS 和 NMEA 3.x 支持,同时完全兼容原版 TinyGPS 和 Arduino。
我的博客已经沉寂太久了(整整四年!),但这段时间我一直在积极参与几个项目。大约 3 年半前,我重新拾起了硬件工程——这是我从小就喜欢的一项爱好。
我正在把 GPS 集成到一个兼容 Arduino 的硬件项目中,使用的是 Maestro Wireless 的一款名为 A5100 的模块。它的一大特点是支持 GLONASS(俄罗斯的卫星导航系统)。
TinyGPS 项目已经提供了相当不错的 GPS 支持,但缺少 NMEA v3.0 等领域内的新特性,也不支持其他卫星导航系统。这意味着,在解析上述 A5100 等设备发送的 NMEA 语句时,一些有用数据会被忽略。
因此,我更新了 TinyGPS,补充了这些缺失的功能,并将代码发布在这里:https://github.com/florind/TinyGPS。它可以直接替换 TinyGPS,并向后兼容所有与 NMEA 兼容、接入 Arduino 的 GPS 接收器。
完整细节请参阅 Github 文档。值得一提的是,此次更新增加了 GLONASS 支持,并在尚未定位时提供了一些有用信息:
- 日期和时间
- 可见卫星数量
利用这些数据,我们可以构建包含更多高级信息的 GPS 用户界面。下面就是我在一款小型 Sharp ePaper LCD——LS013B4DN04——上制作的界面:
![]() |
![]() |
右侧截图显示 GPS 设备已经完成定位。虽然界面仍显示所有可见卫星,但实际上只有 3 颗参与了定位计算。图中还显示了GNS 模式指示器“AN”,表示当前定位结果只使用了 GPS 星座。
如果你对 e210 感到疑惑,它表示水平精度因子,也就是 HDOP。除以 100 后,就能得到 Wikipedia 中所列范围对应的数值。
A5100 及其他新款 GPS 芯片开箱即支持Galileo(预计 2016 年投入运行)和BEIDOU(目前已在亚洲投入运行)。 由于本次更新只增加了 GLONASS 支持,如果你所在地区还能使用其他卫星系统,也欢迎自行添加支持——目前可以考虑 BEIDOU。

