在树莓派上使用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())
- 在树莓派上使用GPS模块
- [树莓派]正确使用GPS模块
- s3c2440开发板使用gps模块
- s3c2440开发板使用gps模块
- 安信可A7模块 GPRS/GPS使用教程
- EC20模块GPS功能的使用
- GPS在Android的使用
- 在 iOS 应用中使用 GPS
- 在iOS应用中使用GPS
- 在 iOS 应用中使用 GPS
- GPS模块初试手记
- GPS模块选型
- GPS模块应用程序
- GPS与GPRS模块
- GPS模块数据格式
- GPS使用
- 电子罗盘在GPS导航设备中的使用
- iPhone开发进阶(10)--- 在程序中使用GPS
- mongodb 简单部署方案及实例
- 【读书笔记】数理统计学教程 (一)
- python 对以空行作为分割的块文件进行读取的方法
- 关于Mongodb的全面总结
- PHP 死锁问题分析
- 在树莓派上使用GPS模块
- element-ui 自定义弹框,加入图片
- ubuntu安装完要做的工作
- MapReduce的优化
- 微信V3支付(避免重复进入这个坑)
- Ubuntu16.04默认安装了Python2和Python3的版本
- Python的MapReduce调用及多输入文件的使用(统计url的点击量)
- 制作大型MMO项目中的相机视角操作
- 设计模式之工厂模式VS抽象工厂模式