单片机创意小制作,GPS记录器DIY
全球定位系统,小名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的芯片占据了民用市场七八成的份额,而目前用的比较多的是2004年发布的SiRFstar III,也就是所谓的“第3代”芯片。
接下来就是让其他产品能“听懂”从GPS芯片发出的数据是什么意思了,这时就需要有个通信协议。目前大部分GPS模块采用的是NMEA0138协议。这个协议涵盖了许多方面,GPS只是用到其中的一部分。
NMEA 协议简介
NMEA 是由美国全国海洋电子协会(The National Marine Electronics Association)制定的一套通信协议,是目前GPS最常见的通信协议。
以笔者的这个GPS 模块为例,它将接收到的GPS卫星信号解码之后,通过串口以NMEA格式输出,而用到的语句只有4个:$GPGGA、$GPGSA、$GPGSV、$GPRMC,其中美元符号($)代表前缀,表示语句开始;GP 代表对象,代表用在 GPS 上;后面的GGA、GSA、GSV、RMC等是语句类型;每条语句的各个数据字段用半角逗号(,)分开;结尾为*XX,XX 是整个语句的校验和,以检验收到的语句是否正确,代表回车和换行,表示该条语句结束。
我们所要做的就是将其接收下来,解析出我们要的数据,再进行下一步的应用。
数据解析和保存
有了从模块那里收到的数据,接下来就是解析出里面有用的数据了。图12.2所示为简单的解析流程。
由于使用的是单片机,所以最简单的保存数据的方案便是使用SPI接口的Flash。另外由于NMEA语句是为了便于传输,采用字符形式,所以“身材”比较大,基本上每次的数据量在300~500字节,由于Flash容量限制,不能将原始的NMEA 语句直接保存,所以我们自己定义了一个存储格式,将其中有用的数据摘出来以二进制的格式保存,这样每次的数据顺利地缩小了。在实际应用中,每个点的数据只需要32字节。
如何浏览路径
说到这里,就必须请出神器——Google Earth了。这是谷歌出的一款可以看卫星图的软件,可惜的是目前的6.0 版还不能直接支持 NMEA 协议。不过 Google Earth 支持另外一种语言,那就是KML。其全称是Keyhole Markup Language,基于XML,同样,它包含了很多复杂和高级的内容,在此不再赘述,我们只需要用到其中一部分——在Google Earth 中画路径。
下面是一个最简单的KML示例:Path from GPS Logger V2
Path Name
这个KML文件被Google Earth读取后会生成:
简单来说,它告诉Google Earth,生成一个文档,名字为Path from GPS Logger V2,其中有一个路径,名字叫Path Name,路径的是“连线”的模式,颜色为黄色(ff00ffff),线宽5像素,而具体经纬度信息则包含在标签中,继而Google Earth会根据其中的经纬度信息绘制出一条折线。
所以,只要将之前保存的每个点的数据,依次填充到标签中,则生成的KML被Google Earth读取之后显示的就是我们记录的路径。
至此,我们自制记录器所需要了解的背景都全部知道了,接下来便是制作的过程了。
主要功能目标
直接显示当前日期和时间、经纬度、海拔、速度、方向等信息,显示卫星信号强度、卫星数目、分布情况等。
将位置信息记录到存储器中,并显示当前空间使用情况。板载的Flash可用保存50994个记录点,按每秒一次计,可连续记录14小时。当空间满了之后,可以将数据转存至TF卡之后重新记录。可实时浏览存储器中的数据,也可将存储器中的记录导出,或者转换成 Google Earth可以识别的KML格式。
图12.3 GPS 记录器的模块框图
GPS 记录器的设计
GPS记录器的模块框图如图12.3所示。数据通信方面,GPS模块通过串口与MCU通信,TF卡和SPI Flash则分别挂载在两个硬件SPI上,LCD通过并行方式与MCU连接。供电方面,采用锂电池(自带过充过放保护电路)供电,由于GPS内置了LDO(低压差线性稳压器),所以直接与电池连接;另外一路则经3.3V LDO输出给MCU、LCD、Flash和TF卡供电;同时,用STM32自带的ADC模数转换测出锂电池的电压,以此估算剩余电池电量。图12.4为根据框图设计出的PCB原理图。
图12.4 GPS 记录器的PCB 原理图
绘制 PCB
根据液晶显示屏的尺寸,确定了主控板的大小。元器件不多,所以PCB尺寸只有显示屏的1/2左右。制作完成的PCB图与实物如图12.5所示。
表12.1 制作所需原材料和元器件
图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种模式。按“显示模式”按键可以在3种模式中循环切换,如图12.11所示。
图12.11 显示屏下半部具备3种显示模式
图12.12 将数据存储到 TF 卡中
按“记录模式”键可以切换记录开始和停止模式。按“菜单”键可进入功能菜单。选择“菜单→转储→TF卡(KML)”可将存储器中的数据以KML文件的格式转存到TF卡中,如图12.12所示。选择“菜单→转储→TF卡(转储)”可将存储器中的数据以原始二进制格式存到TF卡中。
转储之后,在TF卡的GPS目录中就会有已经生成好的KML 文件,如果装了 Google Earth,就会出现如图12.13所示的图标。
图12.13 存储在TF卡中的KML文件
直接双击之后会自动打开 Google Earth,黄色的连线就是我们记录下的路径,如图12.14所示。
图12.14 GPS记录器记录下的路径可在 Google Earth 中显示
选择“菜单→浏览记录”可以实时浏览存储器中记录的路径和记录点的信息,并能直观地了解存储器空间使用情况,如图12.15所示。选择“菜单→擦除空间”,可将数据擦除,继续记录,如图12.16所示。
后记
其实市场上早已有产品化的GPS记录器,而且成本更低、功能更强,但是DIY的乐趣在于更深地了解其中的原理,以及发挥自己的想象力,根据自己的需要定制。比如,还是这套硬件,通过修改软件,还能实现GPS测面积的功能。
图12.15 实时浏览存储器中记录的路径和记录点的信息
图12.16 擦除记录
单片机万用表设计
原文链接:http://www.51jrft.com/jsj/jsjkxyjs/368.html
目前,数字万用表以其耗电低、测量精度高等优点正逐步取代模拟万用表成为电子测量领域的霸主。本设计利用AT89C52单片机设计了一种数字万用表,该万用表以单片机作为控制核心,包括各种测量电路、模/数转换电路、显示电路、报警电路等。硬件电路设计主要包括一些芯片的选择以及电路的具体设计,为使系统更加稳定,使系统整体精度得以保障,本电路使用了ADC0808作为A/D转换芯片,单片机系统设计采用AT89C52单片机作为主控芯片,配以RC上电复位电路和11.0592MHZ震荡电路,显示模块采用液晶屏LM016L。程序每执行周期耗时缩到最短,这样保证了系统的实时性。软件设计则主要涉及单片机如何控制各个模块。最后使用proteus软件对整个系统进行仿真与测试,检测系统设计是否符合预期目标。 HM000055
本文设计的数字万用表可测量交直流电压、电流、电阻和电容元件的值,最终的测量结果直接显示在液晶屏上,便于使用者直接读取数据,而且它的制作成本低廉,性价比高,非常适合在校学生进行电子设计时测量各类数据。
关键词:数字万用表;单片机;proteus软件;模/数转换
2.2主要芯片的选择
一般来说,在进行电子设计时肯定会用到芯片,如常见的单片机、液晶屏等,然而市面上同种类型的芯片也是令人眼花缭乱,这时候选择何种芯片则直接关系到整体系统稳定性、性价比等诸多方面。本课题设计的数字万用表里面所用到的主要芯片有单片机、液晶屏以及模/数转换芯片,接下来就将详细讲解各种芯片是如何选择的。
2.2.1单片机的选择 查看完整请+Q:351916072获取
单片机作为本次设计的核心,选择的结果直接关系到整体系统的好坏,因此在选择单片机型号时也是斟酌再三,主要考虑了以下两种方案。
方案一:PIC单片机:PIC单片机具有许多优点,如:自带模数转换,驱动能力强,可直接驱动数码管,而且抗干扰能力也很强。但是缺点也较为明显,主要是价格偏高、使用起来较为复杂,对于本次设计来说有点大材小用。
方案二:51单片机,如:AT89C52。AT89C52是ATMEL公司生产的一款低电压,高性能CMOS 8位单片机。它的功能虽不如PIC单片机强大,但是它的价格低廉,而且对于51单片机由于之前课程设计时经常用到,所以比较容易上手,它所使用的集成开发环境是我们比较熟悉的Keil C51,编程效率很高。
在本次设计中经过综合考虑最后选择了方案二,使用一款51单片机,即AT89C52作为核心芯片,这主要是因为选择熟悉的芯片可以节省大量的时间,而且它的售价也只需几块钱,较为便宜。
2.2.2模/数转换芯片的选择
模/数转换芯片的主要功能是将模拟量转换为数字量,所以模/数转换芯片的好坏直接关系到最后测量数据的精确度,本次设计主要考虑了以下两种方案。
方案一:选用ADC574。ADC574是12位CMOS单片型逐次逼近式模数转换芯片,只需两根线就可以很好的与单片机组成测量系统,但是它的售价较高。
方案二:选用ADC0808。ADC0808是8位CMOS单片型逐次逼近式模数转换芯片,性能虽然不如ADC574,但对于本次设计来说已经够用了,更为重要的是价格较之ADC574更为便宜。
因此,综合考虑两种方案后,还是选择了方案二,ADC0808更具性价比,更适合于本次设计。
2.2.3液晶屏的选择
液晶屏的作用主要是显示最后测量得到的数值,液晶屏的选择也考虑了两种方案。
方案一:选择Nokia5110。这款液晶采用3.3V供电,功耗小,采用点阵方式显示包括汉字在内的多种字符。它有84x48 的点阵可以显示4 行汉字;采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有9条。
方案二:选择LM016L。这款液晶可用于显示数字、字母、符号等,采用HD44780控制器。HD44780具有简单而功能强大的指令集,可实现字符移动、闪烁等功能。
方案一中Nokia5110虽然功能强大,但是它的供电电压是3.3V,如果选择此方案则需要额外提供3.3V的电源。方案二中的LM016L则不存在这个问题,本次设计中液晶屏只需显示一些字符和数字,LM016L完全可以胜任,而且它的价格还稍微便宜,因此选用方案二。
2.3本章小结 查看完整请+Q:351916072获取
经过前期的仔细思考和选择,最终本次设计的基本框架终于确定下来,整个硬件系统采用分模块设计的方案,共分为交直流电压测量模块、直流电流测量模块、电阻测量模块、电容测量模块、单片机最小系统模块、A/D转换模块。同时硬件系统所需要用的芯片也确定了下来:单片机选择AT89C52、模数转换芯片选择ADC0808、液晶屏选择LM016L。同时硬件的整体布局也得到明确,本次毕业设计的雏形出现。
第1章 绪 论 1
1.1 课题研究背景 1
1.2 课题研究意义 2
1.3 课题的研究内容 2
第2章 总体方案论证 3
2.1 总体框架设计 3
2.2 主要芯片的选择 4
2.2.1 单片机的选择 4
2.2.2 模/数转换芯片的选择 5
2.2.3 液晶屏的选择 5
2.3 本章小结 6
第3章 数字万用表硬件电路设计 7
3.1 测量模块 7
3.1.1 直流电压测量模块 7
3.1.2 交流电压测量模块 8
3.1.3 直流电流测量模块 10
3.1.4 电容测量模块 10
3.1.5 电阻测量模块 11
3.2 单片机最小系统模块 12
3.3 模/数转换模块 14
3.4 液晶显示模块 15
3.5 报警模块 16
3.6 本章小结 16
第4章 数字万用表软件设计 17
4.1 Keil C51简介 17
4.2 单片机软件设计 18
4.3 电压测量软件设计 20
4.4 电流测量软件设计 21
4.5 电阻测量软件设计 22
4.6 本章小结 24
第5章 数字万用表仿真与测试 25
5.1 Proteus软件简介 25
5.2 测量模块仿真与测试 27
5.2.1 直流电压模块测试 27
5.2.2 交流电压模块测试 28
5.2.3 电流模块测试 29
5.2.4 电阻模块测试 30
5.2.5 电容模块测试 31
5.3 本章小结 32
第6章 总结与展望 33
致谢 34
参考文献 35
附 录 36
相关问答
单片机 方案 万用表 优缺点?1.单片机方案万用表具有一定的优点和缺点。2.优点:单片机方案万用表具有测量精度高、稳定性好的特点,能够提供更准确的测量结果;同时,单片机方案万用表还具...
基于 单片机 的数字 万用表 有什么特点 - 158****7487 的回答 - 懂得单片机可以增加仪表的智能性,可以实现普通仪表不容易具备的功能。例如:交流信号有效值显示功能,最大值,最小值显示功能,方波占空比显示功能,大范围...
怎么用 万用表 测量出三相电机是否短路或烧掉-ZOL问答6条回答:【推荐答案】1:测量相间的绝缘电阻。2:测量相间与外壳的绝缘电阻。(这两项只能粗略测量有无直接短路或接地,因为万用表内的电压太低,若想准确最好用摇表...
天宇t5 万用表 测评?天宇T5万用表,采用单片机电路设计,精度高,准确度高,温度漂移小,档位功能多,量程大,使用普通电池更方便。天宇T5万用表,采用单片机电路设计,精度高,准确度高,...
请教下伺服电机用 万用表 应当怎么测量好坏?-ZOL问答万用表测的不太准还是用摇表准,有用(0)回复jeshop_xiazai用万用表电阻档R×1,分别测三个线圈的电阻阻值,阻值应一致或大致相同,如果有一组线圈不通,或为零则...
智能 万用表 测电容总是显示电压?关闭电源重新开机,相当于重启。智能万用表采用单片机方案,工作时运行内嵌程序,相当于一个微型的电脑,因此也像电脑一样有出错或死机的可能。遇到智能万用表...
为什么新出的 万用表 电池不用9V 的了?新款万用表3V即可工作,因此淘汰9V电池。。老款万用表普遍使用9V层叠电池,容量小,价格贵,通用性差,购买更换不方便,使用成本高。新款万用表使用DTM0660系...
如何判断 单片机 引脚电压?可通过万用表直接进行测量。可通过万用表直接进行测量。
kt9201 万用表 用什么主控?KT9201万用表是一种数字式多用途测试仪器,采用的主控芯片为STC89C52单片机。该单片机是英飞凌(STMicroelectronics)公司推出的一款高性能、低功耗、易于编程和...
怎么使用 万用表 测交流电流?万用表是做硬件的必备工具之一,万用表功能强大,可以测电压、电阻、二极管等,测电流也是非常简单。万用表在测量电流时需要主要两个非常关键的问题:1)将万用表...