#gps #adafruit #波特率 #语句 #NMEA #模块 #端口

bin+lib adafruit_gps

为Adafruit Ultimate GPS或Adafruit Mini GPS PA1010D提供GPS解析和读取功能

13次发布

0.4.1 2021年7月23日
0.3.6 2020年5月23日
0.3.0 2020年4月30日
0.2.2 2020年4月27日
0.1.2 2020年4月6日

#619 in 硬件支持

Download history 5/week @ 2024-04-21 1/week @ 2024-04-28 2/week @ 2024-05-19 4/week @ 2024-06-02 3/week @ 2024-06-09 1/week @ 2024-06-16 3/week @ 2024-06-23 30/week @ 2024-06-30 128/week @ 2024-07-28

128 每月下载次数

MIT 协议

2MB
1.5K SLoC

简介

这是一个从adafruit python模块(https://github.com/adafruit/Adafruit_CircuitPython_GPS)移植过来的模块,用于读取和解析来自他们的Ultimate GPS和Adafruit Mini GPS PA1010D的NMEA数据语句。此readme中的大部分内容也直接来自adafruit库。

GPS模块提供一个串行字节信号,提供经度、纬度和元数据。

此模块只在raspberry pi zero上使用Adafruit Mini GPS PA1010D进行过测试。

注意

3.0更新引入了对Gps结构体和打开端口的破坏性更改,以尝试提高gps Hz。

依赖关系

Serialport: https://docs.rs/serialport/3.2.0/serialport/. Serialport用于读取GPS提供的字节信息以及发送命令。

串行依赖项包括

对于GNU Linux,需要pkg-configlibudev头文件

  • Ubuntu: sudo apt install pkg-config libudev-dev
  • Fedora: sudo dnf install pkgconf-pkg-config systemd-devel
  • 其他:一些Linux发行版提供pkgconf.org的pkgconf包而不是freedesktop.org的pkg-config

用法

请参阅example/simple.rs以获取基本用法的示例。

对于更高级的用法,请阅读specs.md以了解可以读取的命令和可以发送的命令。

注意波特率和GPS输出频率

对于3.0更新,我已经尝试将GPS的更新频率提高到10Hz。

要增加频率,GPS的波特率和端口都需要更改,以便输出更多的数据。为此,在文件开头,在打开端口之前,必须设置波特率(除非您想要默认的9600)。请参阅increase_frequency.rs以获取示例。

设置波特率需要一段时间,且容易出错,因此理想的做法是设置波特率和频率,并使用电池/保持电源,以便保留设置。如果断电(且没有电池),设置将重置为9600波特率和1000毫赫兹频率。

1000波特 = 每秒1000个符号。波特率计算。GPS最大语句长度为255(或接近)。9600 -> 允许每秒至少37.64个语句,或者10Hz时每秒3.7个语句。GGA -> 每次迭代一次 VTG -> 每次迭代一次 GSA -> 每次迭代一次 RMC -> 每次迭代一次 GLL -> 每次迭代一次 GSV -> 每次迭代最多4次

关于代码和贡献的说明

这个crate库主要是作为一个个人挑战和填补一个狭小的空缺而制作的,因此所有贡献都受到欢迎。尽管如此,这段代码可能需要改进,所有这些改进都受到欢迎。

RMC和GGA都有文档记录,但源代码中包括GPGLL和GNGGL,这两者尚未经过测试,但已包含在库中。

紧急情况

如果你的GPS因某种原因表现不佳,以下命令(在终端中输入)可能会有所帮助。/dev/serial0是这里使用的端口,所以根据你的情况更改它。

  • echo -e "$PMTK104*37\r\n" > /dev/serial0 -> 冷启动GPS
  • stty -F /dev/serial0 raw 9600 cs8 clocal -cstopb -> 更改端口的波特率(不是GPS的波特率)
  • stty -F /dev/serial0 -> 显示端口的波特率
  • cat /dev/serial0 -> 打印GPS的输出

依赖关系