GPS记录器的显示界面除此之外,还有些另类的应用!

全球定位系统,绰号GPS,想必大家都不陌生。对我们来说,它只有一个功能——定位,说白了就是可以告诉我们现在所在位置的经纬度。

虽然功能很简单,但可以从中衍生出很多应用。比如汽车导航器不仅可以告诉我们现在在哪里,还可以告诉我们怎么去我们想去的地方;另一个例子是一个团队想知道车辆的位置,然后为每辆车安装一个GPS和无线收发设备,实时了解车辆信息。

图 12.1 GPS 记录仪显示界面

此外,还有一些替代应用:比如GPS授时,所谓授时,就是告诉我们现在几点了。虽然这有点矫枉过正,但这个时间相当准确,可以精确到毫秒,并且可以用作许多应用程序的标准时钟。然后就是今天要DIY的这个“GPS记录仪”(见图12.1),总之就是记录我们经过的位置的设备。有人想问,这个有什么用呢?如果有旅行的朋友在旅行的过程中发现了一条非常漂亮的小路,湖光山色,风景优美,可以用这个设备记录下路径,分享给朋友;如果探险者出去探险,他还可以使用该设备记录路线,并在探险结束后按原路线安全返回。这是路线回溯功能。

接下来让我们回顾一下基本的基础知识。

GPS原理介绍

GPS应用程序已经变得非常流行。现在很多手机都集成了GPS导航功能,但是只有导航仪或者GPS接收器是不够的。它还有24颗卫星悬挂在天空中作为信号源。这24颗卫星像草莓外的种子一样均匀分布在地球上,全球任何地方基本上都可以接收到GPS卫星信号。接收器根据包含卫星发送的消息的信号计算它的位置。另外,卫星发射后我们不能离开。因此,地球上仍然有一个地面中心来监测和校正这些卫星。因此,一个完整的 GPS 系统包括 GPS 卫星、用户接收机和地面监控中心。

图12.2 解析过程

GPS接收器和通信协议

上面提到的GPS系统由3部分组成,但我们平时只能接入接收端。别看市面上琳琅满目的各种品牌的导航仪和接收机,世界上只有少数几家公司能够设计出其上使用的GPS接收和处理芯片。其中SiRF芯片占据了70%~80%的民用市场,目前使用的是2004年发布的SiRFstar III,也就是所谓的“第三代”芯片。

下一步是让其他产品“理解”GPS芯片发送的数据意味着什么。这时候就需要通信协议了。目前大部分 GPS 模块使用 NMEA0138 协议。这个协议涵盖了很多方面,GPS只是其中的一部分。

NMEA 协议简介

NMEA是美国国家海洋电子协会(The National Marine Electronics Association)制定的一套通信协议,是目前GPS最常用的通信协议。

以笔者的GPS模块为例,将接收到的GPS卫星信号解码后通过串口输出为NMEA格式,只用到了4句:$GPGGA、$GPGSA、$GPGSV、$GPRMC,其中USD 符号($)代表前缀,表示语句的开始;GP代表物体,表示在GPS上使用;以下GGA、GSA、GSV、RMC等为语句类型;每个语句的数据字段用半角逗号(,)分隔;结尾是*XX,XX是整个语句的校验和,用来检查接收到的语句是否正确,代表回车换行,表示语句结束。

我们要做的就是接收它,解析出我们想要的数据,然后进行下一步的应用程序。

数据解析和保存

有了从模块接收到的数据,下一步就是解析出里面有用的数据。图 12.2 显示了一个简单的解析过程。

由于使用的是单片机,所以保存数据最简单的方案就是使用SPI接口的Flash。另外,由于NMEA语句为了传输方便,都是采用字符的形式,“体”比较大。基本上,每次的数据量是300到500字节。由于Flash容量的限制,无法直接保存原始的NMEA语句,所以我自己定义了一种存储格式,把有用的数据提取出来,以二进制格式保存,这样每次都可以顺利的压缩数据。在实际应用中时钟模块是什么意思,每个点只需要 32 字节的数据。

如何浏览路径

说到这里,就不得不请来神器——谷歌地球。这是谷歌的一款可以查看卫星图像的软件。不幸的是,当前的 6.0 版本不能直接支持 NMEA 协议。但是 Google 地球支持另一种语言,那就是 KML。它的全称是Keyhole Markup Language,基于XML。同样,它包含了很多复杂高级的内容,这里不再赘述。我们只需要使用其中的一部分——在 Google Earth 中绘制路径。

这是一个最小的 KML 示例:

GPS Logger V2 的路径

路径名称

路径名称

此 KML 文件由 Google 地球读取并生成:

简单来说就是告诉 Google Earth 从 GPS Logger V2 生成一个名为 Path 的文档,其中有一个名为 Path Name 的路径,路径为“连接”模式,颜色为黄色(ff00ffff),线宽为5个像素,标签中包含了具体的经纬度信息,然后Google Earth会根据经纬度信息绘制一条折线。

因此,只要将之前保存的每个点的数据依次填入标签中,生成的KML就会被Google Earth读取,显示出来的就是我们记录的路径。

至此,关于自制刻录机我们需要了解的背景都知道了,接下来就是制作流程了。

主要功能目标

直接显示当前日期时间、经纬度、高度、速度、方向等信息,显示卫星信号强度、卫星编号、分布等。

将位置信息记录到内存并显示当前空间使用情况。板载Flash可保存50994个记录点,每秒一次可连续记录14小时。当空间已满时,您可以将数据传输到 TF 卡并重新记录。内存中的数据可以实时浏览,内存中的记录也可以导出,或者转换成谷歌地球可以识别的KML格式。

图 12.3 GPS Logger 框图

GPS记录仪的设计

GPS记录仪模块框图如图12.3所示。数据通信方面,GPS模块通过串口与MCU通信,TF卡和SPI Flash分别挂载在两个硬件SPI上,LCD与MCU并联。供电方面,采用锂电池(带过充过放保护电路)供电。由于GPS内置LDO(低压差线性稳压器),所以直接与电池相连;另一种是通过3.3V LDO输出给MCU、LCD、Flash和TF卡供电;同时,利用STM32自带的ADC模数转换,测量锂电池的电压,估算出电池剩余电量。图 12.

图12.4 GPS记录仪PCB原理图

绘制 PCB

根据液晶屏的大小,确定主控板的大小。元器件不多,所以PCB尺寸只有显示屏的1/2左右。完成的PCB图和实物如图12.5所示。

表12.1 生产所需原材料及零部件

图片[1]-GPS记录器的显示界面除此之外,还有些另类的应用!-老王博客

图12.5 成品PCB图与实物

图 12.6 焊接元件的 PCB

图12.7 GPS模块通过支架安装

焊接元件和PCB调试

笔者的习惯是焊接后立即检查零件是否能正常工作,以便尽快发现问题,快速确定问题根源。

焊接前,目测电路板有无开路或短路,然后用万用表测量电源正负极之间是否有短路。

先焊好供电部分,焊好USB插口、LDO稳压管、充电芯片和阻容元件,然后上电,测量输出是否3.3V,可以的话也可以接用示波器看输出电压是否纯净。

在LDO输出和整板电源之间,作者加了一个0Ω的电阻。该电阻可用作跳线。断开后可检测芯片部分是否短路。调试后直接短接即可。

供电部分完成后,接下来就是焊接单片机和外围晶振和复位电路,组成最小的系统。判断单片机能否运行,也可以在板上安装两个LED,然后编写一个测试程序循环开关。如果成功,说明单片机基本正常。

最后焊接Flash芯片、TF卡座、按键等。

至此,原来的空PCB更像是一块电路板,如图12.6。

一般来说,使用陶瓷天线的GPS模块需要让天线尽可能的朝向天空,这样才能尽可能的接收到信号,所以在安装GPS模块的时候设计了一个支架,让模块天线和接收器成45°角。刚面向天空时,即使平放或站立,也可以部分面向天空,如图12.7。此外,还为该模块更换了备用电池。

图 12.8 显示了所有组件组装后的外观。安装电池和后盖,如图12.9时钟模块是什么意思,至此硬件组装完成。

软件设计思路与调试

由于功能简单,软件不需要复杂的结构,流程如图12.10。开机初始化完成后,系统进入无限主循环,循环检查GPS接收是否完成,是否有按键按下。

图12.8 当所有组件都组装好后

图 12.9 安装电池和后盖

GPS 接收和分析使用中断。当接收完成后,置位标志位,主循环检测到数据接收完成,然后将数据显示在LCD上。如果设置需要记录,会记录在 SPI Flash 中。

如果按下“菜单”按钮,则进入菜单功能;如果按下“显示模式”按钮,则切换显示模式;如果按下“录制”按钮,则切换是否录制到 SPI Flash。

图12.10软件流程图

操作与界面

录音机上部有4个按键,分别用于“菜单/退出”、“上一个/显示模式”、“下一个/录音模式”和“确定”。

正常显示时,屏幕分为 3 个区域。顶部显示电池电量、卫星信息、时间等,中间以大字体显示当前经纬度,下半部分按显示方式显示卫星信息、速度、航向和记录信息。按下“显示模式”按钮可循环显示 3 种模式,如图 12.11 所示。

图12.11 显示屏下半部分有3种显示模式

图12.12 保存数据到TF卡

按“录音模式”键切换录音开始和停止模式。按“菜单”键进入功能菜单。选择“菜单→转储→TF卡(KML)”,将内存中的数据以KML文件格式转储到TF卡中,如图12.12。选择“菜单→转储→TF卡(转储)”将内存中的数据以原始二进制格式保存到TF卡中。

转储后在TF卡的GPS目录下会有一个生成的KML文件。如果安装了 Google 地球,则会出现图 12.13 所示的图标。

图12.13个存储在TF卡中的KML文件

直接双击会自动打开谷歌地球。黄色的连线就是我们记录的路径,如图12.14。

图 12.14 GPS logger 记录的路径

选择“菜单→浏览记录”,实时浏览内存中记录的路径和记录点信息,直观了解内存空间的使用情况,如图12.15。选择“Menu → Erase Space”擦除数据并继续记录,如图12.16。

后记

其实市面上已经有商业化的GPS记录仪,成本更低,功能更强,但DIY的乐趣在于对原理有更深入的了解,发挥你的想象力,根据自己的需求进行定制。例如,这套硬件也可以通过修改软件来实现GPS区域测量的功能。

图12.15 实时浏览内存中记录的路径

图 12.16 擦除记录

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论