在树莓派上使用GPS模块

来源:互联网 发布:揭阳淘宝村在哪里 编辑:程序博客网 时间:2024/06/08 04:52

GPSD介绍

GPSD是一个Linux下的一个守护进程,用以侦听来自GPS接收器的位置等信息,并将这些位置信息转换成一种简化的格式。
GPSD支持二十多种不同GPS输出格式的GPS接收机,例如NMEA、Ashtech、AIVDM、iTalk Binary、Trimble TSIP、RTCM、uBlox UBX binary等。将收到的packet解析之后,可以通过D-BUS、共享内存和socket(默认端口为:2947)方式输出。
GPSD packet中同时提供了多种客户端,例如gpsctl、gpsmon、gpspipe等,可以根据需要进行使用。
gpsd 是通过串行或USB端口监视连接到主机的一个或多个GPS或AIS接收器的服务守护程序,使得可以在主机的TCP端口2947上查询传感器的位置/路线/速度的所有数据。
使用gpsd多个位置感知客户端应用程序可以共享对支持的传感器的访问,而无需争用或丢失数据。而且,gpsd响应大多数GPSs发出的NMEA 0183格式的查询更容易解析。该gpsd分发包括可链接的C服务库,C ++包装类和一个Python模块,开发者gpsd应用程序可以使用它来封装所有的通信gpsd。
GPSD在移动嵌入式系统中无处不在。它是Android手机上的地图服务的基础。无人机,机器人潜艇和无人驾驶汽车无处不在。最近几代载人飞机,海洋导航系统和军车越来越普遍。
http://www.catb.org/gpsd/

在树莓派上测试GPS模块:

1、树莓派一个,GPS模块一个,USB转串口TTL模块一个。
2、使用ttyUSB0而不是使用树莓派的板载串口ttyAMA0,因为ttyUSB0串口使用起来更方便,可以随意的插拔,还可以在电脑、手机等其他设备上使用。
3、连接好GPS线,树莓派上插上USB串口,查看设备名
ls /dev/ttyUSB*
其中”ttyUSB0”就是GPS模块的设备名。
注:如果你的串口gps的设备名不是“ttyUSB0”,就请用你自己设备名替换。
4、安装gpsd相关的软件和库
sudo apt-get install gpsd gpsd-clients python-gps
5、使用cat命令查看gps模块输出
cat /dev/ttyUSB0
6、设置gpsd的gps数据源是gps模块的设备名ttyUSB0”
sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
7、使用gpsd软件,显示gps信息
cgps -s
注:请将gps置于室外,或者窗户边,有利于gps定位,如果长时间显示“NO FIX”的状态,请移动gps的位置,并且使用下面命令重启gps模块:
sudo killall gpsd
sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
8、用python3测试GPS,安装gps3库
pip3 install gps3
https://pypi.python.org/pypi/gps3
9、测试代码gpstest.py

#!/usr/bin/env python3# coding=utf-8from gps3 import agps3#GPSDSocket creates a GPSD socket connection & request/retrieve GPSD output.gps_socket = agps3.GPSDSocket()#DataStream unpacks the streamed gpsd data into python dictionaries.data_stream = agps3.DataStream()gps_socket.connect()gps_socket.watch()for new_data in gps_socket:    if new_data:        data_stream.unpack(new_data)        print('Altitude = ', data_stream.alt)        print('Lat      = ', data_stream.lat)          print('Lon      = ', data_stream.lon)        print('Speed    = ', data_stream.speed)

10、python3 gpstest.py
如果不能运行,请用下面命令重启gps模块:
sudo killall gpsd
sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
11、也可以选择其他python库测试,比如gpsd-py3
pip3 install gpsd-py3
12、gpsd-py3测试代码

import gpsd# Connect to the local gpsdgpsd.connect()# Connect somewhere elsegpsd.connect(host="127.0.0.1", port=2947)# Get gps positionpacket = gpsd.get_current()# See the inline docs for GpsResponse for the available dataprint(packet.position())
原创粉丝点击