树莓派 使用的gps模块有2种,一种是 串口的,一种是usb口的
usb口的gps为
串口的gps为
串口的gps 有一个接线的问题,
关注的针脚是 TX,RX
对应的接上就行,使用的 gps 读取的软件为 cgps
安装 sudo apt-get install gpsd gpsd-clients python-gps
lsusb 确认是否识别
ls /dev/ttyUSB* 查找设备号
设置句柄映射
开机启动:gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
arch启动:/usr/sbin/gpsd -N -n /dev/ttyUSB0 -F /var/run/gpsd.sock
gpsd参数说明:
-b = bluetooth-safe: open data sources read-only
-n = don't wait for client connects to poll GPS
-N = don't go into background
-F sockfile = specify control socket location
使用 cgps -s
+-------------------------------------------++---------------------------------+
| Time: n/a ||PRN: Elev: Azim: SNR: Used: |
| Latitude: n/a || |
| Longitude: n/a || |
| Altitude: n/a || |
| Speed: n/a || |
| Heading: n/a || |
| Climb: n/a || |
| Status: NO FIX (2 secs) || |
| Longitude Err: n/a || |
| Latitude Err: n/a || |
| Altitude Err: n/a || |
| Course Err: n/a || |
| Speed Err: n/a || |
| Time offset: n/a || |
| Grid Square: n/a || |
只要不提示gps连接超时,就证明 gpsd.sock 连接成功
左边是当前的坐标,左边是卫星的信号问题
如果能够读到卫星,但是当前坐标没有展示,这个是gps模块没有连接到卫星,所以无法提供位置信息。
注意:
PRN 我理解是微信的唯一id
SNR 是卫星的信号
Used 如果都是N就是连接卫星没有成功
telnet 127.0.0.1 2947 会有信息返回,说明设备连接成功
cgps -s 通过命令行查看
python读取代码这个是在cgps能够正常读取信息的时候使用,这里面有很多异常的情况没有处理。只能做参考
from gps import *
import time
session = gps(mode=WATCH_ENABLE)
try:
while True:
report = session.next()
#print report
if report['class'] == 'VERSION':
print 'connect GPS suc.'
if report['class'] == 'DEVICES':
print 'searching satellite ing....'
if report['class'] == 'WATCH':
print 'search satellite suc.'
if report['class'] == 'TPV':
print 'time ' , report.time
print 'latitude ' , report.lat
print 'longitude ' , report.lon
if report['class'] == 'SKY':
print 'satellites NO. ',len(report.satellites)
time.sleep(3)
except StopIteration:
print "GPSD has terminated"
实际上这里无论是USB还是串口,最终都转成了文件句柄的方式。