文章主要内容:

  • 模块之间的连接
  • 树莓派识别gps模块
  • 使用Python语言获取GPS数据

1.连线 ---- 使用 USB转TTL转换器,将树莓派和GPS模块连接

需要的设备:gps模块,gps天线,串口转usb转换器,杜邦线

1.1.我使用的gps模块如下,但是gps模块是串口的,和树莓派连接太麻烦,后期的串口调试对初学者也比较困难。所以,小白可以选择一个串口转USB转换器,使用USB连接树莓派,这样用起来比较简单。

                                        

1.2.转换器和gps模块连线方法如下图(只需要连四根线,图是盗来的),串口针脚处有字母标记,不要连错了:

1.3.GPS模块需要连接天线,天线有两种接口可以选择smr 和 ipex  (下图):

我使用的是smr接口的gps天线,天线长这样(下图):


2.树莓派识别GPS设备

把连接好天线和usb转接器的gps设备插到树莓派上,建议插到树莓派4个usb口的最上面靠里的usb口,那个口好像对应usb0

具体查看你插到了哪个usb口,可以使用命令:

ls /dev/ttyUSB*

然后会显示你使用了哪个usb口,如下图:

接下来,用软件测试连接是否成功,我们是用minicom这个软件来测试

首先,安装minicom  :

sudo apt-get install minicom

然后,安装gpsd相关库:

 sudo apt-get install gpsd gpsd-clients python-gps

安装好之后,使用命令,获取串口上的数据(注意波特率,我的gps设备是9600,usb口是usb0)

minicom -b 9600 -o -D /dev/ttyUSB0

注:  -b 设定的是波特率,是模块参数而定;-o 是不初始化Modem且不锁定文件;-D 设定的是接口

如果一切顺利,会看到这样的图片(懒得截图了,网上盗一个)

minicom一些使用技巧:

在 minicom 界面里,可以按Ctrl+A,然后按Z获取帮助;Ctrl+A、然后按Q来退出


3.python语言获取解析gps数据

想要用python解析gps数据,就要了解gps模块的数据协议。根据NMEA协议,我们从传感器上接收到的GPS经纬度数据的其中一行---GPRMC行的格式如下:

注:根据上一张命令行图片里面的数据,我们发现gps模块发送了好多行数据,其中,有很多行数据都可以用来定位,比如GPGGA,GPRMC。这里,我们选择的是GPRMC行(百度百科:推荐定位信息GPRMC)

例:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
字段0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息
字段1:UTC时间,hhmmss.sss格式
字段2:状态,A=定位,V=未定位
字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
字段4:纬度N(北纬)或S(南纬)
字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0)
字段6:经度E(东经)或W(西经)
字段7:速度,节,Knots
字段8:方位角,度
字段9:UTC日期,DDMMYY格式
字段10:磁偏角,(000 - 180)度(前导位数不足则补0)
字段11:磁偏角方向,E=东W=西
字段12:模式,A=自动,D=差分,E=估测,N=数据无效(3.0协议内容)
字段13:校验值($与*之间的数异或后的值)参考:https://www.jianshu.com/p/f164c433baa1

然后,我们使用Python现成的库 pymea2来解析gps数据:

安装库

pip3 install pynmea2

如何使用 pymea2 库来解析 gps 数据的代码如下:

import serial
import pynmea2
import timedef gps_get():print("开始测试:")#创建gps串口的句柄ser = serial.Serial("/dev/ttyUSB0", 9600 )  print("获取句柄成功,进入循环:")count = 0while(True):#读取一行gps信息#line = ser.readline()line = str(str(ser.readline())[2:])  # 将读取到的字节码转化成字符串(去掉前2位的无用字符)print(line)# 寻找有地理坐标的那一行数据if line.startswith('$GPRMC'):print("*********************")line = line.replace('\\r\\n\'', '')  #  字符串结尾的无用换行符print(line)rmc = pynmea2.parse(line)print("当前坐标:")print("北纬(度分秒):", float(rmc.lat)/100 , "度")print("东经(度分秒):", float(rmc.lon)/100 , "度")print("************")print("北纬(十进制):", rmc.latitude , "度")print("东经(十进制):",  rmc.longitude, "度")print("***************")count = count + 1if(count == 100):breakif __name__ == "__main__":gps_get()

我们需要注意一下点:

【1】 使用 pynmea2.parse(line)  来解析GPS的数据坐标,其输入必须严格按照其解析格式来,不能有其他非法字符(所以我的代码中,当我把数据转换成字符串以后,去掉了字符串首位的无用字符,去掉了结尾的换行符等转义字符,否则无法解析(试错n遍。。。))

【2】解析结果,返回的是一个类,我称之为 rmc ,其中有很多有意义的变量,你们可以自己百度拓展。我代码中使用到的,是 度分秒格式 的 经度lon 和纬度 lat ,还有十进制格式(float类型)的纬度latitude和 经度longitude 。我建议只用后者10进制,因为在地图中显示好像也是用的十进制

有任何疑问可以在评论区提出哦,点个赞再走呗(* ̄︶ ̄)

树莓派连接GPS模块,python获取GPS数据相关推荐

  1. python自动获取天气_用python获取天气数据,并作定时播报

    原标题:用python获取天气数据,并作定时播报 数据挖掘入门与实战 公众号: datadw 思路 1.调用和风天气的API,获取天气数据 2.用百度语音API,将天气数据合成语音 3.用树莓派每天早 ...

  2. Python零基础速成班-第12讲-Python获取网络数据Socket,API接口,网络爬虫Crawler(制作弹幕词云)

    Python零基础速成班-第12讲-Python获取网络数据Socket,API接口,网络爬虫Crawler(制作弹幕词云) 学习目标 获取网络数据Socket API接口 网络爬虫Crawler(制 ...

  3. 使用Python获取ADS-B数据,并显示飞机航迹动态

    使用Python获取ADS-B数据,并显示飞机航迹动态. 1.绘图环境 1)使用cartopy显示地理位置信息 import cartopy.crs as ccrs from cartopy.io.i ...

  4. Python 获取接口数据,解析JSON,写入文件

    Python 获取接口数据,解析JSON,写入文件 用于练手的例子,从国家气象局接口上获取JSON数据,将它写入文件中,并解析JSON: 总的来说,在代码量上,python代码量要比java少很多.而 ...

  5. python 获取股市数据 baostock + 画K线图 mpl_finance

    python 获取股市数据 baostock + 画K线图 mpl_finance 获取股票数据 安装baostock库 baostock库的特性 获取A股K线数据 核心代码如下 完整代码如下 画K线 ...

  6. python获取股票数据,并计算技术指标

    python获取stock数据. 计算技术指标使用talib库. 方法一:使用 pandas_datareader.data 库,该库获取的历史数据更多一些.上证股票在股票代码后面加上".S ...

  7. matlab python 股票,股票行情数据获取-Python获取股票数据?

    Python获取股票数据? 这里推荐一个包―tushare,tushare是一个免费.开源的python财经数据接口包.主要实现了从数据采集.清洗加工到数据存储过程,能够为金融分析人员提供快速.整洁的 ...

  8. 【搬运自用】 用Python获取网络数据 -Python100天从新手到大师Day57(GitHub)

    用Python获取网络数据 原作者:骆昊 https://github.com/jackfrued/Python-100-Days 更多内容欢迎查看并订阅专栏'Python从新手到大师'和'Pytho ...

  9. 树莓派连接EC20模块

    树莓派连接EC20模块 1.下载串口助手 sudo apt-get install minicom 2.配置串口 输入 sudo minicom 按下ctrl+A,松开然后按下Z 输入O 选择Seri ...

  10. MapBox离线地图+python获取瓦片数据

    工作中需要使用离线地图. 使用工具:MapBox离线地图+python获取瓦片数据 前端页面: <!DOCTYPE html> <html> <head><m ...

最新文章

  1. 没学过python、但是还是有公司要-学习python 基础都会了 为什么还是做不出项目呢?...
  2. tf.keras.preprocessing.image_dataset_from_directory() 简介
  3. UVA 10594 Data Flow
  4. DLNg[结构化ML项目]第二周迁移学习+多任务学习
  5. 搞懂静态变量static
  6. MySQL的CSV引擎应用实例解析
  7. 计算机系解说词,计算机室解说词
  8. Spark TopN
  9. abaqus 不收敛问题
  10. Flex Builder 3.0正式版+破解补丁
  11. 通信upf是什么意思_管理UPF的方法、装置及系统与流程
  12. VLAN间路由的配置(一)普通VLAN间路由的配置
  13. 【HAVENT原创】修改 CentOS 服务器名称
  14. 2014 计算机学科 排名,2014QS世界大学学科排名:计算机学科排行榜
  15. 数学:AI和大数据的基础
  16. HTML_body中常用的标签部分
  17. std::uninitialized_copy::_Unchecked_iterators::_Deprecate
  18. Java内存区域与Java内存模型
  19. c语言子函数定义与调用,C语言的简单函数定义与调用
  20. AD中PCB走线实现开窗

热门文章

  1. 华为员工自杀-又是加班惹得祸
  2. Android-混淆学习
  3. IBM:协作有道 创新无限
  4. mysql - user/privileges/用户与权限/用户权限/管理用户权限
  5. iOS-父视图半透明子alpha视图不透明
  6. linux虚拟机重启后,telnet不通端口的排查思路
  7. POJ2251-Dungeon Master
  8. 基于OpenVINO部署PaddlePadle-YOLOE模型—2.模型下载与转换
  9. 2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
  10. java list 交集 并集 差集 去重复并集