13次发布
0.4.1 | 2021年7月23日 |
---|---|
0.3.6 | 2020年5月23日 |
0.3.0 |
|
0.2.2 | 2020年4月27日 |
0.1.2 | 2020年4月6日 |
#619 in 硬件支持
128 每月下载次数
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-config
和libudev
头文件
- 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的输出