一月份的时候觉得好玩买了树莓派,但是太懒没怎么研究,但最近当初买树莓派时的那个梦想又萦绕心头,决定抽空完成一下当年的计划~ GPS模块是其中很重要的一环,于是在某宝上搜索,找了一家相对便宜也很轻巧的GPS模块,而且这个模块和天线是合体的,非常省空间。

几天后快递来啦,今天有空来鼓捣一下 o(^▽^)o 先来看看这个模块,这是天线的一面

这是组装好之后的效果

我给树莓派安装的是 Raspbian,基于Debian;像 Pidora 的话应该大同小异吧,以下操作均为 Raspbian。

下面来简述一下吧。树莓派串口通信网上有很多教程了,我也是搜索着一步步摸索出来的。要想连接上这个GPS模块,先得知道模块和树莓派的针脚定义,然后要对树莓派进行一些设置。

一、树莓派配置修改

树莓派的串口据了解,默认是用于SSH调试的,如果需要使用串口连接其他设备需要进行两步修改:

1. 修改 /etc/inittab

sudo vi /etc/inittab

(如果用不惯vi,又是用图形界面,可以选择用leafpad)

注释掉文件中的这一行,以关闭串口登录

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

这一行一般位于文件最后一行,注释的方式是在前面加一个“#”

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

2. 修改 /boot/cmdline.txt

sudo vi /boot/cmdline.txt

将下面高亮的部分删除

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

最后变成了:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

修改好这两部分之后,需要重启树莓派

sudo reboot

二、串口连接

现在要对GPS模块和树莓派进行连接,根据GPS模块的文档和树莓派的针脚定义一共需要连接4根线:VCC 5V、GND 接地、TXD和RXD。树莓派上所谓的TOP和BOTTOM,指的是GPIO针脚的两排,BOTTOM是靠近SD卡的一侧。

对硬件我也是小白哈,连错了,大家千万要注意模块上的TXD连接树莓派的RXD,模块的RXD连接树莓派的TXD!我的连接方式如下图:

三、通过minicom获取串口数据

经过上面两步的操作树莓派就和GPS模块连接好了~ 那如何获取GPS模块发出的内容呢,就要通过 minicom 这个工具,来获取串口的数据。

sudo apt-get install minicom

安装好之后通过minicom命令获取串口上的数据:

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

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

如果一切顺利的话,应该能看到这样的画面(Press CTRL-A Z for help on special keys 下面哗哗的出现内容):

这就说明一切 ok 啦,根据GPS模块的文档,知道了这是一种叫NMEA-0183的协议,包括 GSA 当前卫星信息、GSV 可见卫星信息、GGA GPS定位信息、RMC 推荐定位信息和 VTG 地面速度信息等内容。

在 minicom 界面里,可以按Ctrl+A,然后按Z获取帮助;Ctrl+A、然后按Q来退出(据说如果minicom里没有显示,可以试试按一下Ctrl+A、然后按E,启用或关闭回显,没有试过)。如果没有出现上面的内容,除了刚刚说的Ctrl+A、E外,还应该好好检查一下针脚有没有插错、看一下GPS模块的指示灯工作情况怎么样。

四、编程获取串口数据

通过 minicom 测试后,说明串口和GPS模块工作正常,我们就应该用编程的方式来获取串口数据了,以Python为例,要获取串口的数据需要安装Python serial模块

sudo apt-get install python-serial

安装好后先通过python命令,进入python命令行进行测试

python

首先,导入serial模块

import serial

然后打开串口,存放到 ser 中,方法接收一个端口名,和一个波特率

ser = serial.Serial("/dev/ttyAMA0", 9600)

通过ser的read()方法只能获取一个字符,但read()方法有一个接收字符长度的重载,首先通过ser.inWaiting()方法获取总长度,再通过ser.read()读取

ser.read(ser.inWaiting())

这样就能获取数据了!我们只需要对read到的数据进行分析、处理即可,写成 .py 脚本即可。

五、NMEA-0183 一些数据的计算方式

需要说两个关于NMEA-0183协议返回内容的计算方式,一个是时间,另一个是经纬度。

1. GGA和RMC的时间

来看一下GGA和RMC返回的格式:

$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh

GGA和RMC都会返回时间,他们的第一个参数<1>就是UTC时间,即协调世界时,格式为hhmmss,要换算成北京时间只需要加上8小时即可;RMC的<9>为UTC日期,格式为ddmmyy(日月年)。下面列一条RMC返回的数据:

$GPRMC,125315.00,A,3853.70120,N,12133.61898,E,1.710,,081114,,,A*7E

好,我们可以数一下,<1>对应的是 125315.00 也就是UTC时间 12:53:15,换算成北京时间就是 20:53:15;参数<9>为 081114,根据 dd/mm/yy 来算就是14年11月08日~

看,如果我们要做一个根据GPS授时的功能,是不是so easy!

2. 经纬度计算

同样的,GGA和RMC都会返回经纬度;GGA的<2>~<5>和RMC的<3>~<6>含义及格式相同,下面还是以RMC来做示范(看看上一点的RMC数据)。找到RMC参数<3>~<6>,分别是

<3>

3853.70120

纬度(ddmm.mmmm)

<4>

N

纬度半球(N 北半球、S 南半球)

<5>

12133.61898

经度(dddmm.mmmm)

<6>

E

经度半球(E 东经、W 西经)

注意看经纬度的格式啊,这都是个啥,GPS坏了么,3853度?当然不是,纬度和经度都是“度分”格式,dd代表度,m代表分,那么显而易见:

纬度信息:3853.70120,就是38度和53.70120分。

分换算成度只需要除以60,也就是 53.70120 / 60 = 0.89502,那么3853.70120的含义就是38.89502° (OMG 把自己住处位置暴露了,欢迎来串门)。

算好经纬度之后可以用 ditu.google.cn 输入 纬度N 经度E 来看看你所在位置哈。

好啦,总结了一些网上已经有的东西,分享给大家~ 大家请轻喷哈 o(* ̄▽ ̄*)ブ

参考文献

python gps模块_树莓派连接GPS模块相关推荐

  1. 树莓派连接EC20模块

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

  2. 树莓派连接GPS模块,python获取GPS数据

    文章主要内容: 模块之间的连接 树莓派识别gps模块 使用Python语言获取GPS数据 1.连线 ---- 使用 USB转TTL转换器,将树莓派和GPS模块连接 需要的设备:gps模块,gps天线, ...

  3. arduinopn532模块_树莓派使用libnfc驱动ITEAD NFC PN532模块

    libnfc是首个遵循GNU(自由工程项目)通用公共许可证针对所有人都完全免费的低级别NFC软件开发包和编程应用程序接口.它提供了完整的透明度且免费供大家使用.该库目前支持调制ISO / IEC144 ...

  4. ds1302模块 树莓派_树莓派用4g模块实现三网通开机自启动

    测试环境: 树莓派3b+ &华为ME909S-821&联通(移动)电话卡 &树莓派官网最新镜像 实验链接实拍图 树莓派 1.测试ME909s模块 实物图 华为的ME909s 4 ...

  5. python硬件编程_树莓派c语言 设置并使用树莓派进行Python和C语言编程 - 硬件设备 - 服务器之家...

    树莓派c语言 设置并使用树莓派进行Python和C语言编程 发布时间:2017-03-01 来源:服务器之家 设置并使用树莓派进行Python和C语言编程 (下) Python部落组织翻译, 禁止转载 ...

  6. 树莓派python开发教程_树莓派Raspberry开发从基础到进阶视频+设计资料超详细教程下载...

    课程内容 [初级篇]重点推荐:树莓派开发实战视频教程+文档教程(含源码) 课程目录 教学视频与源代码 1.[进阶篇]Raspberry详细视频教程 树莓派基础 安装树莓派的操作系统 远程登录和使用树莓 ...

  7. 树莓派python开发教程_树莓派教程(基于python编程)--入门篇

    原标题:树莓派教程(基于python编程)--入门篇 一:格式化SD卡 SD卡插入读卡器连接电脑,使用SDFormatter对SD卡进行格式化 (重装烧录也要进行着SD卡格式化操作) 二:下载官方镜像 ...

  8. java9 模块_了解Java 9模块

    java9 模块 Java 9的主要创新是引入了模块. 关于此功能的讨论很多,发布日期被推迟了几次以正确完成所有操作. 今天,我们将讨论模块的机制,以及Java 9总体带来的好处. 该帖子基于Inte ...

  9. 树莓派安装python模块_树莓派引脚编号、pypi说明和安装

    树莓派引脚电平是3.3V. 关于引脚的编号,不同的库会有不同的编号: pypi-说明和安装 这个库完整的名字是raspberry-gpio-python,通过这个库可以方便地用python操作树莓派的 ...

最新文章

  1. Java 自带性能监控工具:监视和管理控制台jconsole的使用
  2. qt布局中listwidget 保持固定宽度_UI设计中响应式设计实用技巧
  3. 在CGD中快速实现多线程的并发控制
  4. 智能推荐:“相关性搜索”只给你最想要的
  5. 无向图缩点:tarjan点双与边双缩点(模板)
  6. react循环的值为什么要有key_react中为何推荐设置key
  7. JDBC连接各种数据库的方法(经典)
  8. 大数据 数据库 评测_大数据产品能力评测介绍.pdf
  9. 使用BCC工具获取Linux内核空间read/write操作的文件名
  10. 根据年月查询每月数据并渲染到页面,支持数据的展示与折叠隐藏
  11. 【问题7】集群部署时的分布式 session 如何实现?
  12. 黑马程序员html基本笔记
  13. win10便签常驻桌面_win7和win10自带桌面便签哪里找
  14. 爬虫实战(二)之登录百度云盘
  15. 全国软考中级软件设计师 学习笔记-UML部分
  16. 计算机动画类型,FW动画类型及制作详解 -电脑资料
  17. 主流手机分辨率与尺寸
  18. 网易邮箱添加html,在网易邮箱中实行添加标签窗口的详细步骤
  19. 武田收到CHMP肯定意见,推荐ALUNBRIG(R) (brigatinib)用于治疗既往用过克唑替尼的ALK+非小细胞肺癌患者
  20. pyqt制作简单的摄像头监控界面

热门文章

  1. 开关电源基础知识(PWM与PFM)
  2. SpringBoot动态配置开启关闭定时任务
  3. html网游戏页设计,网页版游戏设计.html
  4. 使用postgresql和Arcgis创建路网拓扑结构
  5. 申请【华为·云享专家】流程
  6. “同声传译”的难度有多大?
  7. Python-14:爬虫之正则表达式1
  8. css元素发光效果图,纯CSS3实现圆圈动态发光特效动画的示例代码
  9. Chipscope run卡住问题Sample Buffer has 0 samples
  10. 九图鸡汤(从繁体中文翻译为简体中文)