【摘要】為實現(xiàn)GPS導(dǎo)航線路的數(shù)據(jù)記錄和圖片關(guān)聯(lián),設(shè)計并實現(xiàn)了基于ATMEGA644P單片機的GPS數(shù)據(jù)記錄器。硬件上系統(tǒng)選用EB3631搭建GPS模塊,通過串口與ATMEGA644P單片機通信采集GPS定位信息。軟件上使用FatFs文件系統(tǒng)模塊掛接SD卡,F(xiàn)atFs模塊在ATMEGA644P單片機上的移植高效地寫入GPGGA導(dǎo)航數(shù)據(jù),通過PC機上的GPicSync軟件,成功實現(xiàn)圖片與導(dǎo)航線路中位置信息關(guān)聯(lián)。經(jīng)過實際測試,系統(tǒng)運行效果良好。
【關(guān)鍵詞】數(shù)據(jù)記錄器;關(guān)聯(lián);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,F(xiàn)atFs 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用戶設(shè)備價格不斷下降及GPS應(yīng)用研究的不斷深入,大量GPS定位導(dǎo)航系統(tǒng)被應(yīng)用于航海、飛機的導(dǎo)航、導(dǎo)彈衛(wèi)星測控、精密授時、石油開采等方面。本文以第三代GPS芯片EB3631為核心,詳細描述了基于ATMEGA644P單片機的數(shù)據(jù)記錄器的硬件和軟件設(shè)計方案,使得用戶可以實時獲取當(dāng)前經(jīng)緯度坐標(biāo),記錄導(dǎo)航線路,還能為攝影圖片添加坐標(biāo)信息,方便旅游愛好者戶外旅游,系統(tǒng)實用性較高。
1.硬件設(shè)計
GPS數(shù)據(jù)記錄器總體設(shè)計框架如圖1所示。主控制器采用基于AVR內(nèi)核的8位低功耗控制器ATMEGA644P,芯片具有64K的片內(nèi)FLASH,2K的EEPROM,4K的片內(nèi)SRAM[1]。芯片通用I/O接口32個,集成了IIC接口、SPI接口、JTAG接口及8通道的10為ADC轉(zhuǎn)換接口,豐富的外圍接口,能更好的滿足系統(tǒng)的設(shè)計要求。GPS接收機采用臺灣環(huán)天公司的EB3631為核心器件,由于采用TTL電平輸出,可以直接與控制器進行通信,為用戶提供定位信息。PC機上采用串口助手通過RS232電平轉(zhuǎn)換電路接收GPS定位信息,便于調(diào)試。電源模塊采用一節(jié)9V金霸王干電池,經(jīng)過π型濾波電路,LM7805穩(wěn)壓為ATMEGA644P、LCD1602液晶提供5V電壓,5V電壓經(jīng)過AMS1117-3.3V低壓差穩(wěn)壓芯片穩(wěn)壓[2],為GPS模塊提供3.3V電壓。
圖1 GPS數(shù)據(jù)記錄器總體設(shè)計框架圖
1.1 SD卡接口電路
SD卡是在MMC卡的基礎(chǔ)上發(fā)展而來,高效的讀寫速度使得SD卡成為當(dāng)前數(shù)碼產(chǎn)品中應(yīng)用最廣泛的存儲卡。在SD模式下,SD卡采用6線制,使用CLK、CMD、DAT0~DAT3進行數(shù)據(jù)通信,在SPI模式,使用CLK、CMD、DAT0~DAT3信號線與主機通信。使用單片機對SD卡操作時,一般都采用SPI方式。
單片機通過SPI接口操作SD卡,每次通信都采用命令傳輸和應(yīng)答的方式完成數(shù)據(jù)傳輸。每個命令都對應(yīng)不同的應(yīng)答格式,命令分為標(biāo)準(zhǔn)的CMD和ACMD,每次使用ACMD之前都必須要首先發(fā)送CMD55,而標(biāo)準(zhǔn)的CMD命令可以直接對SD卡操作;應(yīng)答中除R2的數(shù)據(jù)長度是136位之外,其余的R1、R1b、R3、R6、R7都是48位的數(shù)據(jù)[3]。圖2是SD卡接口電路圖。
圖2 SD卡接口電路圖
1.2 NMEA-0813協(xié)議
NMEA-0813是美國海洋電子協(xié)會為海用電子設(shè)備制定的標(biāo)準(zhǔn)格式,數(shù)據(jù)輸出采用ASCII碼字符,目前廣泛采用的版本是V2.0。數(shù)據(jù)傳輸以$開始,后面的是5個字母的語句頭。其中語句頭的前兩個字母代表系統(tǒng)”ID”,如果是GP,則表示該語句屬于GPS定位系統(tǒng);如果是HC,則表示該語句屬于羅經(jīng)方位系統(tǒng)。語句“ID”由最后3個字母決定,語句頭之后是數(shù)據(jù)集合,不同類型的數(shù)據(jù)字段以“,”分割,每條語句以回車換行符結(jié)束[4]。
$GPGGA是 GPS定位系統(tǒng)中標(biāo)準(zhǔn)的GPS定位信息語句,$GPRMC是推薦最小的定位信息語句。GPS數(shù)據(jù)傳輸采用標(biāo)準(zhǔn)的RS232異步傳輸,通信的波特率一般默認(rèn)是4800,1個起始位,8個數(shù)據(jù)位,一個停止位,無奇偶校驗位[5]。以下數(shù)據(jù)是在阿壩師專實驗樓四樓,通過串口助手實時接收到的一條“$GPGGA”語句:
$GPGGA,074525.577,3055.5690,N,10324.7642,E,1,04,3.4,829.0,M,-32.7,M,0000*79這條語句實際的意義是UTC(格林尼治)當(dāng)?shù)氐臅r間為7時45分25秒,地理位置是位于北緯30°55.5690′,東經(jīng)103°24.7624′,GPS方位的獲得是非差分方式,接收到衛(wèi)星數(shù)目為4顆,水平精度為3.4m,天線離海平面的高度為829m,大地水準(zhǔn)面的高度為-32.7m,校驗和為79H。
1.3 EB3631 GPS模塊設(shè)計
GPS(Global Positioning System),也是我們通常所說的全球定位系統(tǒng),一個完整的GPS定位系統(tǒng)由太空部分、監(jiān)控部分、用戶部分組成。用戶部分由GPS接收機、數(shù)據(jù)處理軟件及相應(yīng)的設(shè)備組成,GPS接收機是由前置放大器、信號處理、控制與顯示、記錄和供電單元組成。GPS系統(tǒng)定位的原理:每顆GPS衛(wèi)星時刻發(fā)送自身的位置和時間信號,用戶接收機可以測量出每顆衛(wèi)星到接收機的時間延遲,根據(jù)信號傳輸?shù)乃俣龋瑢⑺俣扰c時間延遲相乘便可得出接收機到不同衛(wèi)星的距離[6]。三維坐標(biāo)、速度和時間的確定至少需要接收到4顆衛(wèi)星的數(shù)據(jù)才能解算。
基于EB3631的GPS接收板,是高性能的、低功耗的GPS接收板。核心器件采用第三代芯片SiRFstar III,高速的GPS芯片,-159dBm超高的靈敏度,4Mb的flash存儲空間,該芯片具有兩個串行口,方便與ATMEGA644P控制器通信,采用NMEA-0183 和SIRF binary協(xié)議,一次最大可接收20顆衛(wèi)星,即使在信號很微弱的環(huán)境,定位也很快。圖3所示是GPS接口電路。
圖3 GPS接口電路
2.FAT文件系統(tǒng)
FAT文件系統(tǒng)發(fā)展至今,出現(xiàn)了FAT12、FAT16、FAT32三種類型。根據(jù)FAT表中每個FAT項所占長度來分類,即他們的FAT表中每個FAT項占用的位數(shù)分別為12、16、32位[7]。由于FAT12不支持中文文件名,并且最多管理8MB的容量,使得它的淘汰成為必然。雖然FAT16能管理16MB~2GB的磁盤空間,但是造成大量的空間浪費,F(xiàn)AT32的出現(xiàn)解決了這一問題。
FatFs是免費開源的通用文件系統(tǒng)模塊,用在小型嵌入式系統(tǒng)中實現(xiàn)FAT文件系統(tǒng),采用ANSI C編寫,不依賴硬件平臺,用戶只需要編寫底層的磁盤驅(qū)動函數(shù)、RTC函數(shù)、應(yīng)用層函數(shù)就能將FatFs模塊的移植到文件系統(tǒng)中。FatFs模塊中提供了許多函數(shù),下面就能其中常用函數(shù)做簡單說明,詳細的函數(shù)說明參考文獻[8]。
f_mount:在使用FatFs時,必須要注冊一個工作區(qū)域,使用完畢需要注銷工作區(qū)域。
f_open:打開/創(chuàng)建一個文件,文件打開后,便可對文件進行讀寫操作。
f_close:文件讀寫完成后必須關(guān)閉調(diào)用此函數(shù)關(guān)閉打開的文件。
f_read,f_write:文件的讀寫函數(shù)。
f_opendir,f_readdir:存儲卡上指定目錄的打開讀取函數(shù)。
3.軟件設(shè)計與實現(xiàn)
GPS數(shù)據(jù)記錄器采用WINAVR/GCC編譯器作為軟件開發(fā)環(huán)境,F(xiàn)AT文件系統(tǒng)管理模塊采用FatFs R0.10版本,利用PC機上串口助手作為調(diào)試平臺。在本課題中,將SD卡格式化為FAT32文件系統(tǒng)類型,顯示模塊采用1602字符型液晶,同時利用LED燈的連續(xù)閃爍作為寫入GPS定位信息到SD卡的提示。整個系統(tǒng)的軟件部分采用模塊化的設(shè)計,便于管理及升級,以下就SD卡、GPS及主程序做詳細說明。
3.1 SD卡程序
SD卡在上電時,默認(rèn)處于SD卡模式,要使SD卡進入SPI模式,必須對SD卡進行初始化操作。在系統(tǒng)上電后,控制器必須要發(fā)送至少74個時鐘后,才能發(fā)送SD卡復(fù)位命令,復(fù)位成功后,SD卡進入SPI模式,之后發(fā)送SD卡激活命令完成SD卡的初始化。在初始化時SPI時鐘不能太快,否則會失敗。圖4是SD卡初始化流程圖。在初始化成功后,應(yīng)盡量提高SPI的速率,通過單塊讀寫命令CMD17、CMD24完成對數(shù)據(jù)長度為512字節(jié)數(shù)據(jù)塊的讀寫[9]。
圖4 SD卡初始化流程圖
3.2 GPS接收程序
由于GPS板接收到的語句格式不只一條,所以要完整的接收到“$GPGGA*”數(shù)據(jù),就必須對語句頭進行檢測,當(dāng)接收的字符和這7個字符完全相同后,才能將數(shù)據(jù)進行存儲[10],當(dāng)接收到”*”字符,表示該條語句接收結(jié)束,可以對數(shù)據(jù)進行處理。圖5所示是串行口中斷函數(shù)接收子程序流程。
圖5 串行口中斷函數(shù)接收GPS子程序流程
圖6 主程序流程圖
3.3 主程序設(shè)計
圖6是GPS數(shù)據(jù)記錄器的主程序設(shè)計流程。系統(tǒng)在啟動后,初始化I/O端口、定時器、USART、SPI以及LCD1602液晶,初始化完成之后在LCD液晶上顯示開機LOGO。隨后初始化SD卡,利用FatFs文件系統(tǒng)模塊掛接SD卡,掛接完畢后,就能通過FatFs文件系統(tǒng)模塊高效的管理SD卡。隨后在SD卡上創(chuàng)建GPS_XXX.TXT文件,XXX文件的編號可以從000-999,該文件用于記錄GPS定位信息中經(jīng)緯度數(shù)據(jù)。系統(tǒng)檢測到按鍵SW1被按下,便打開串口中斷,此時ATMEGA644P單片機通過串口接收GPS接收板發(fā)回的$GPGGA數(shù)據(jù),以獲得當(dāng)前的經(jīng)緯度坐標(biāo),并將信息在LCD1602液晶屏上分行顯示,每500毫秒更新一次;同時將$GPGGA語句所包含的所有信息寫入到GPS_XXX.TXT文件中,通過LED指示燈將連續(xù)的閃爍,說明數(shù)據(jù)正在寫入到SD卡。
將SD卡插入到讀卡器并連接到電腦上,利用http://www.gpsvisualizer.com/ 網(wǎng)站,通過Upload a GPS file按鈕,上傳記錄導(dǎo)航線路數(shù)據(jù)的GPS_XXX.TXT文件,并轉(zhuǎn)換為GPicSync軟件所支持的GPX file格式文件,通過該軟件,旅游愛好者便能為旅途過程中的照片添加經(jīng)緯度信息,使得圖片與位置信息對應(yīng)起來。經(jīng)過實際測試,該系統(tǒng)的實際運行結(jié)果良好,并能連續(xù)供電達3個小時以上。
4.結(jié)語
本文設(shè)計了一種基于ATMEGA單片機的低功耗、低成本的GPS數(shù)據(jù)記錄器。主要闡述了整個系統(tǒng)的硬件設(shè)計原理、主要模塊電路設(shè)計、文件系統(tǒng)以及軟件設(shè)計流程,系統(tǒng)在戶外運行,在實際使用過程中運行效果良好,為旅游愛好者出行帶來極大的便利。
參考文獻
[1]Atmel Company.Atmega164P/324P/644P Datasheet[EB/OL].http://www.atmel.com[2013-02].
[2]Ams Company.AMS1117 Datasheet[EB/OL].http://www.ams-semitech.com/attachments/File/AMS1117_20120314.pdf.[2012-03].
[3]SD Group and SD Association .SD Specification Part 1 Physical Layer Simplified Specification Version 3.01[EB/OL].[2011-07].http://www.sdcard.org/developers/tech/sdcard/pls/simplified_specs.
[4]何誠剛.便攜式GPS接收機設(shè)計[J].電子設(shè)計工程,2009,
17(6):7-7.
[5]潘方.RS232串口通信在PC機與單片機通信中的應(yīng)用[J].現(xiàn)代電子技術(shù),2012,35(13):69-71.
[6]求是科技.單片機典型模塊設(shè)計實例導(dǎo)航[M].北京:人民郵電出版社,2008:195-196.
[7]劉偉.數(shù)據(jù)恢復(fù)技術(shù)深度揭秘[M].北京:電子工業(yè)出版社,2010:197-251.
[8]FatFs Generic FAT System Module[OL].[2014-01].http://elm-chan.org/fsw/ff/00index_e.html.
[9]張恒.基于AT89S52和FAT16的SD卡讀寫系統(tǒng)設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2009(8):54-55.
[10]樓然苗,李光飛.單片機課程設(shè)計指導(dǎo)[M].北京:北京航空航天大學(xué)出社,2007:210-212.
基金項目:阿壩師專2012年校級科研基金項目(編號:ASC12-29);阿壩師專2012年校級教改項目(編號:J201204)。
作者簡介:王波(1985—),男,四川成都人,碩士研究生,主要從事單片機與嵌入式應(yīng)用設(shè)計方面的研究。