树莓派与gps使用

树莓派 使用的gps模块有2种,一种是 串口的,一种是usb口的

usb口的gps为

树莓派与gps使用_第1张图片


串口的gps为

树莓派与gps使用_第2张图片


串口的gps 有一个接线的问题,

关注的针脚是 TX,RX

树莓派与gps使用_第3张图片



对应的接上就行,使用的 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还是串口,最终都转成了文件句柄的方式。


你可能感兴趣的:(技术,树莓派)