目的:树莓派用串口连接GPS+BD模块获取位置信息
材料:树莓派3b(Ubuntu MATE系统),GPS+BD模块,GPS有源天线,杜邦线
步骤:
1. 连接各模块
2. 修改串口设置,由于树莓派3b添加了蓝牙模块,默认状态下串口是被蓝牙占用的,所以首先要修改系统配置,未修改过的读者请看另一篇文章进行修改(查看文章);配置好的读者进行第三步
3. 通过minicom获取串口数据
sudo apt-get install minicom
若提示Unable to locate package……,请使用sudoapt-get update && sudo apt-get install minicom
安装好后使用minicom命令获取串口上的数据
minicom -b 9600 -o -D /dev/ttyAMA0
-b 设定的是波特率,是模块参数而定;-o 是不初始化Modem且不锁定文件;-D 设定的是接口
如果一切顺利,将会出现如下画面:
我们从这张图上基本找不出有用信息,因为此时的GPS信号太差了,原因是我忘记把天线的一头放到窗外了
放到窗外后,一切正常,将会出现如下画面:
红框标记的为有用信息,为了解读它,让我们来了解一下GNSS卫星协议(只讲重要的):
NMEA0183消息输出格式 :$--sss,df1,df2,…[CR][LF]
数据标识是表示某种卫星发射。标识如下:
GN:全球导航卫星系统(GNSS-global navigationsatellite system)
BD:北斗导航卫星系统(COMPASS)
各主要GNNS消息内容识别码的含义如下:
GGA:时间、位置、定位数据
GLL:经纬度,UTC时间和定位状态
GSA:接收机模式和卫星工作数据,包括位置和水平/竖直稀释精度等。稀释精度(Dilution of Precision)是个地理定位术语.一个接收器可以在同一时间得到许多颗卫星定位信息,但在精密定位上,只要四颗卫星讯号即已足够了
GSV:接收机能接收到的卫星信息,包括卫星ID,海拔,仰角,方位角,信噪比(SNR)等
RMC:日期,时间,位置,方向,速度数据。是最常用的一个消息
VTG:方位角与对地速度
MSS:信噪比(SNR),信号强度,频率,比特率
ZDA:时间和日期数据
4. 用python读取位置信息,nano getGPSInfoBySerial.py,复制如下代码:
import serial
import pynmea2
import time
ser = serial.Serial("/dev/ttyAMA0",9600)
while True:
line = ser.readline()
if line.startswith('$GNRMC'):
rmc = pynmea2.parse(line)
print "Latitude: ", float(rmc.lat)/100
print "Longitude: ", float(rmc.lon)/100
break
这里需要用到pynmea2的库,python官网可以下载,并且有帮助文档
用sudo python getGPDInfoBySerial.py运行程序,注意:这里一定要用sudo不然会报权限不够的错,因为这里访问了串口的数据
使用USB连接的教程:http://blog.csdn.net/qq_32384313/article/details/77744542