基于ATMEGA644P单片机的GPS数据记录器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于ATMEGA644P单片机的GPS数据记录器
【摘要】为实现GPS导航线路的数据记录和图片关联,设计并实现了基于ATMEGA644P单片机的GPS数据记录器。
硬件上系统选用EB3631搭建GPS模块,通过串口与ATMEGA644P单片机通信采集GPS定位信息。
软件上使用FatFs 文件系统模块挂接SD卡,FatFs模块在ATMEGA644P单片机上的移植高效地写入GPGGA导航数据,通过PC机上的GPicSync软件,成功实现图片与导航线路中位置信息关联。
经过实际测试,系统运行效果良好。
【关键词】数据记录器;关联;ATMEGA644P单片机;GPS模块;FatFs
Abstract:To record the data and associated with Images in the navigation,this paper designed and implemented GPS data logger based on ATMEGA644P MCU.In the design of hardware,the system chose EB3631 to build a GPS module and communicated with ATMEGA644P controller using a serial port to get GPS information.In the design of Software,SD card is articulated by using FatFs file system module,FatFs module that is transplanted on ATMEGA644P MCU writes GPGGA Data efficiently in the navigation,Using GPicSync software on PC,implemented images associated with the location information successful in the navigation.Test shows that the system runs with good effect.
Keywords:Data Logger;Correlation;ATMEGA644P MCU;GPS Module;FatFs 引言
随着GPS用户设备价格不断下降及GPS应用研究的不断深入,大量GPS定位导航系统被应用于航海、飞机的导航、导弹卫星测控、精密授时、石油开采等方面。
本文以第三代GPS芯片EB3631为核心,详细描述了基于ATMEGA644P 单片机的数据记录器的硬件和软件设计方案,使得用户可以实时获取当前经纬度坐标,记录导航线路,还能为摄影图片添加坐标信息,方便旅游爱好者户外旅游,系统实用性较高。
1.硬件设计
GPS数据记录器总体设计框架如图1所示。
主控制器采用基于A VR内核的8位低功耗控制器ATMEGA644P,芯片具有64K的片内FLASH,2K的EEPROM,4K的片内SRAM[1]。
芯片通用I/O接口32个,集成了IIC接口、SPI接口、JTAG 接口及8通道的10为ADC转换接口,丰富的外围接口,能更好的满足系统的设计要求。
GPS接收机采用台湾环天公司的EB3631为核心器件,由于采用TTL 电平输出,可以直接与控制器进行通信,为用户提供定位信息。
PC机上采用串口助手通过RS232电平转换电路接收GPS定位信息,便于调试。
电源模块采用一节9V金霸王干电池,经过π型滤波电路,LM7805稳压为ATMEGA644P、LCD1602液晶提供5V电压,5V电压经过AMS1117-3.3V低压差稳压芯片稳压
[2],为GPS模块提供3.3V电压。
图1 GPS数据记录器总体设计框架图
1.1 SD卡接口电路
SD卡是在MMC卡的基础上发展而来,高效的读写速度使得SD卡成为当前数码产品中应用最广泛的存储卡。
在SD模式下,SD卡采用6线制,使用CLK、CMD、DAT0~DAT3进行数据通信,在SPI模式,使用CLK、CMD、DAT0~DAT3信号线与主机通信。
使用单片机对SD卡操作时,一般都采用SPI方式。
单片机通过SPI接口操作SD卡,每次通信都采用命令传输和应答的方式完成数据传输。
每个命令都对应不同的应答格式,命令分为标准的CMD和ACMD,每次使用ACMD之前都必须要首先发送CMD55,而标准的CMD命令可以直接对SD卡操作;应答中除R2的数据长度是136位之外,其余的R1、R1b、R3、R6、R7都是48位的数据[3]。
图2是SD卡接口电路图。
图2 SD卡接口电路图
1.2 NMEA-0813协议
NMEA-0813是美国海洋电子协会为海用电子设备制定的标准格式,数据输出采用ASCII码字符,目前广泛采用的版本是V2.0。
数据传输以$开始,后面的是5个字母的语句头。
其中语句头的前两个字母代表系统”ID”,如果是GP,则表示该语句属于GPS定位系统;如果是HC,则表示该语句属于罗经方位系统。
语句“ID”由最后3个字母决定,语句头之后是数据集合,不同类型的数据字段以“,”分割,每条语句以回车换行符结束[4]。
$GPGGA是GPS定位系统中标准的GPS定位信息语句,$GPRMC是推荐最小的定位信息语句。
GPS数据传输采用标准的RS232异步传输,通信的波特率一般默认是4800,1个起始位,8个数据位,一个停止位,无奇偶校验位[5]。
以下数据是在阿坝师专实验楼四楼,通过串口助手实时接收到的一条“$GPGGA”语句:
$GPGGA,074525.577,3055.5690,N,10324.7642,E,1,04,3.4,829.0,M,-32.7,M,0000*79这条语句实际的意义是UTC(格林尼治)当地的时间为7时45分25秒,地理位置是位于北纬30°55.5690′,东经103°24.7624′,GPS方位的获得是非差分方式,接收到卫星数目为4颗,水平精度为3.4m,天线离海平面的高度为829m,大地水准面的高度为-32.7m,校验和为79H。
1.3 EB3631 GPS 模块设计
GPS(Global Positioning System),也是我们通常所说的全球定位系统,一个完整的GPS定位系统由太空部分、监控部分、用户部分组成。
用户部分由GPS 接收机、数据处理软件及相应的设备组成,GPS接收机是由前置放大器、信号处
理、控制与显示、记录和供电单元组成。
GPS系统定位的原理:每颗GPS卫星时刻发送自身的位置和时间信号,用户接收机可以测量出每颗卫星到接收机的时间延迟,根据信号传输的速度,将速度与时间延迟相乘便可得出接收机到不同卫星的距离[6]。
三维坐标、速度和时间的确定至少需要接收到4颗卫星的数据才能解算。
基于EB3631的GPS接收板,是高性能的、低功耗的GPS接收板。
核心器件采用第三代芯片SiRFstar III,高速的GPS芯片,-159dBm超高的灵敏度,4Mb 的flash存储空间,该芯片具有两个串行口,方便与ATMEGA644P控制器通信,采用NMEA-0183 和SIRF binary协议,一次最大可接收20颗卫星,即使在信号很微弱的环境,定位也很快。
图3所示是GPS接口电路。
图3 GPS接口电路
2.FAT文件系统
FAT文件系统发展至今,出现了FAT12、FAT16、FAT32三种类型。
根据FAT 表中每个FAT项所占长度来分类,即他们的FAT表中每个FAT项占用的位数分别为12、16、32位[7]。
由于FAT12不支持中文文件名,并且最多管理8MB的容量,使得它的淘汰成为必然。
虽然FAT16能管理16MB~2GB的磁盘空间,但是造成大量的空间浪费,FAT32的出现解决了这一问题。
FatFs是免费开源的通用文件系统模块,用在小型嵌入式系统中实现FAT文件系统,采用ANSI C编写,不依赖硬件平台,用户只需要编写底层的磁盘驱动函数、RTC函数、应用层函数就能将FatFs模块的移植到文件系统中。
FatFs模块中提供了许多函数,下面就能其中常用函数做简单说明,详细的函数说明参考文献[8]。
f_mount:在使用FatFs时,必须要注册一个工作区域,使用完毕需要注销工作区域。
f_open:打开/创建一个文件,文件打开后,便可对文件进行读写操作。
f_close:文件读写完成后必须关闭调用此函数关闭打开的文件。
f_read,f_write:文件的读写函数。
f_opendir,f_readdir:存储卡上指定目录的打开读取函数。
3.软件设计与实现
GPS数据记录器采用WINA VR/GCC编译器作为软件开发环境,FAT文件系统管理模块采用FatFs R0.10版本,利用PC机上串口助手作为调试平台。
在本课题中,将SD卡格式化为FAT32文件系统类型,显示模块采用1602字符型液
晶,同时利用LED灯的连续闪烁作为写入GPS定位信息到SD卡的提示。
整个系统的软件部分采用模块化的设计,便于管理及升级,以下就SD卡、GPS及主程序做详细说明。
3.1 SD卡程序
SD卡在上电时,默认处于SD卡模式,要使SD卡进入SPI模式,必须对SD卡进行初始化操作。
在系统上电后,控制器必须要发送至少74个时钟后,才能发送SD卡复位命令,复位成功后,SD卡进入SPI模式,之后发送SD卡激活命令完成SD卡的初始化。
在初始化时SPI时钟不能太快,否则会失败。
图4是SD卡初始化流程图。
在初始化成功后,应尽量提高SPI的速率,通过单块读写命令CMD17、CMD24完成对数据长度为512字节数据块的读写[9]。
图4 SD卡初始化流程图
3.2 GPS接收程序
由于GPS板接收到的语句格式不只一条,所以要完整的接收到“$GPGGA*”数据,就必须对语句头进行检测,当接收的字符和这7个字符完全相同后,才能将数据进行存储[10],当接收到”*”字符,表示该条语句接收结束,可以对数据进行处理。
图5所示是串行口中断函数接收子程序流程。
图5 串行口中断函数接收GPS子程序流程
图6 主程序流程图
3.3 主程序设计
图6是GPS数据记录器的主程序设计流程。
系统在启动后,初始化I/O端口、定时器、USART、SPI以及LCD1602液晶,初始化完成之后在LCD液晶上显示开机LOGO。
随后初始化SD卡,利用FatFs文件系统模块挂接SD卡,挂接完毕后,就能通过FatFs文件系统模块高效的管理SD卡。
随后在SD卡上创建GPS_XXX.TXT文件,XXX文件的编号可以从000-999,该文件用于记录GPS 定位信息中经纬度数据。
系统检测到按键SW1被按下,便打开串口中断,此时ATMEGA644P单片机通过串口接收GPS接收板发回的$GPGGA数据,以获得当前的经纬度坐标,并将信息在LCD1602液晶屏上分行显示,每500毫秒更新一次;同时将$GPGGA语句所包含的所有信息写入到GPS_XXX.TXT文件中,通过LED指示灯将连续的闪烁,说明数据正在写入到SD卡。
将SD卡插入到读卡器并连接到电脑上,利用http:/// 网站,通过Upload a GPS file按钮,上传记录导航线路数据的GPS_XXX.TXT文件,并转换为GPicSync软件所支持的GPX file格式文件,通过该软件,旅游爱好者便能为旅途过程中的照片添加经纬度信息,使得图片与位置信息对应起来。
经过实际测试,该系统的实际运行结果良好,并能连续供电达3个小时以上。
4.结语
本文设计了一种基于ATMEGA单片机的低功耗、低成本的GPS数据记录器。
主要阐述了整个系统的硬件设计原理、主要模块电路设计、文件系统以及软件设计流程,系统在户外运行,在实际使用过程中运行效果良好,为旅游爱好者出行带来极大的便利。