基于51单片机GPS的导航系统设计(3)---毕设论文
南 陽 理 工 學 院
本科生畢業設計(論文)
學院(系):計算機與信息工程學院
專 業: 物聯網工程
學 生: 喬蒙蒙
指導教師 : 周國運
完成日期 2019 年 5 月
南陽理工學院本科生畢業設計(論文)
基于單片機&GPS的導航系統設計
Design of Navigation System Based on Single-chip
Microcomputer & GPS
總 計:34頁
表 格:4個
插 圖:23幅
南 陽 理 工 學 院 本 科 畢 業 設 計(論文)
基于單片機&GPS的導航系統設計
Design of Navigation System Based on Single-chip
Microcomputer &GPS
學 院(系): 計算機與信息工程學院
專 業: 物聯網工程
學 生 姓 名: 喬 蒙 蒙
學 號: 1506955060
指導教師(職稱): 周國運(教授)
評 閱 教 師: 王海琳(講師)
完 成 日 期: 2019年5月
南陽理工學院
Nanyang Institute of Technology
基于單片機&GPS的導航系統設計
物聯網工程 喬蒙蒙
[摘 要] 該設計實現了基于單片機&GPS的定位及導航功能.。系統硬件方面主要由51單片機,GPS模塊以及藍牙模塊組成;系統軟件由單片機主控制器程序和手機APP定位導航程序組成:單片機主控制器使用c語言編程,使用keil uVision5編程工具,編寫了GPS位置信息接收、解析以及傳輸的程序。手機APP定位導航使用易語言編程,使用E4A編程開發工具,編寫了定位程序和導航程序。系統的主要原理是51單片機作為主控制器負責接收來自GPS模塊的位置信息,進行解析,之后發送給藍牙模塊,最后編寫手機程序負責接收位置信息并進入地圖實現導航功能.。系統主要應用于車輛導航定位、戶外探險定位以及其他領域。但是現實生活中的定位導航工具比這些精進很多,所以該設計需要做更深入地研究。
[摘 要] 51單片機;導航;GPS;藍牙;手機程序
Design of Navigation System Based on Single-chip Microcomputer &GPS
Internet of Things Engineering Major Qiao mengmeng
Abstract:This design realizes the positioning and navigation function based on single chip microcomputer &GPS. The hardware of the system is mainly composed of 51 single chip microcomputer, GPS module and bluetooth module. The system software is composed of MCU main controller program and mobile phone APP positioning and navigation program: the MCU main controller USES c language programming and keil uVision5 programming tool to write the program for receiving, analyzing and transmitting GPS position information. Mobile phone APP positioning and navigation using easy language programming, using E4A programming development tools, wrote the positioning program and navigation program. The e main principle of the system is 51 single-chip microcomputer as the main controller is responsible for receiving position information from the GPS module, to analyze, and then sent to the bluetooth module, finally write a mobile phone program is responsible for receiving position information and entering the map to achieve navigation function. The system is mainly used in vehicle navigation and positioning, outdoor adventure positioning and other fields. However, real life location and navigation tools are much more sophisticated than these, so the design needs to be further studied.
Key words: 51 single-chip microcomputer; navigation; GPS; bluetooth; mobile phone program
1 緒論
1.1設計背景及研究現狀
20世紀50年代,考慮到自身經濟利益以及軍事效益,美國開始研究設計衛星導航系統,經過30多年的努力,終于建成了全球定位系統。1994年4月,24顆工作衛星發射完畢,導航系統進入全面運行階段,主要應用于軍事。此外,該系統還可以實現各種交通工具的導航定位,國家部隊的調用,軍事目標的定位等等,尤其是在沙漠風暴和對科索沃的轟炸這兩場典型高技術戰爭中,由于其精確定位的優勢應用于制作巡航導彈,從而打擊敵軍,甚至是地面士兵也會隨身攜帶該裝置,利于作戰。總之,GPS應用領域本來挺廣泛。
在國際公認的八項重大無線產業之中,衛星導航是非常具有代表性的。對于GPS定位技術的衛星導航應用,我國的發展速度較為迅速。北斗衛星導航系統的逐漸應用,就是一個非常有力的證明。隨著無線通訊的發展,GPS技術更是以精度高,自動化,效率高,全天候,定位導航,精確測量等優勢受到很多領域的歡迎,應用范圍更廣泛。
總的來說,無論是發展速度還是發展階段,在國內GPS技術在國內還是有非常樂觀的局勢的。對于GPS技術的模型化,即GPS接收機的設計已經進入到了一個比較成熟的階段,甚至可以與計算機的發展相比。盡管如此,由于GPS技術起步較晚,GPS還是存在一些問題的 。以前,在國內,GPS導航技術應用最廣泛的是漁業,但隨著時間的推移,GPS導航技術越來越多地應用在車輛定位上。值得欣慰的是,我國的無線通信工程技術的高速發展,對于位置信息的定位服務也將走上快速上升的坡道上并高速前進。單從北斗三號,我們就可以知道對于我國的導航系統建設來說一個非常大的進步。但我們仍需不斷的努力,進一步研究GPS技術,從而解決GPS技術出現的問題,爭取將導航系統建設做到極致并為全球的用戶服務,將它的用途發揮到極致,適用范圍更大。
1.2設計內容
本設計主要分為以下幾個部分:第一部分,設計定位接收裝置系統,由51單片機控制GPS模塊以及藍牙模塊從而實現位置信息的接收。第二部分,接收GPS模塊的位置信息并對GPS數據進行解析和處理,通過藍牙模塊建立51單片機和手機的通信,第三部分,編寫手機APP程序,首先,有類似藍牙串口APP的功能,用于接收單片機通過藍牙發送的位置信息,最后,實現定位和導航的功能:即對接收到的位置信息的定位,定位之后的搜索路線和路線模擬場景以及實時場景的路線規劃。
1.3設計意義
本次設計使用51單片機為主控制模塊,對定位系統綜合進行硬件部分的設計以及對其進一步地開發,以及使用E4A開發APP客戶端。
GPS定位功能適用于許多領域,商業價值很高,但是從某種層面上來說,GPS定位系統還是有一些需要解決的問題比如(1)對于成本的提高,最有現實性的直接影響的就是,消費者們的購買意愿。(2)無線通信技術與GPS定位芯片相配套的技術文件的缺少(3)如何使衛星導航技術在國民經濟建設社會發展中發揮更大的作用已經成為人們關注的問題。盡管如今GPS技術一直在不斷地完善,但是對于以上產生的問題還是不容忽視的,要想使GPS繼續的更加前進一步的發展,對于那些問題是急需解決的。因此,設計一個定位導航系統還是非常必要的。由于GPS應用范圍廣泛,潛在商業價值高,所以需要我們去對其更加的深入研究。
2 方案選擇及總體設計
2.1 方案選擇
2.1.1 主控制器方案選擇
本次設計采用51單片機中的90系列的STC90C516RD+型號的單片機作為本次設計的主控制器,由其控制GPS全球定位模塊的定位,對位置信息的解析以及藍牙模塊的位置信息的傳輸。
STC90C516RD+型號的單片機是功耗比較低,速度超高的90系列的單片機,相比89系列,版本的更新方面,生產工藝方面,安全性方面,穩定性方面等都有更好的優勢。其內部有專門的復位電路,時鐘頻率等必備的電路設計。而且STC90C516RD+型號的單片機有一個串口(P3.0和P3.1)可以實現與串口外部設備相連接,并實現對串口外設的控制,并且可以通過串口調試助手看出來接收區的數據從而對硬件的程序進行進一步的修改以及完善。
2.1.2 GPS模塊方案選擇
本文研究定位導航的的功能,定位是及其重要的。定位不成功或者有差錯,則會導致后續導航路線的嚴重錯誤,可見定位無法忽視,對定位的精度及其嚴格。不過需要注意的是,最好采用配有SMA天線的GPS模塊。將天線置于窗戶附近即可,很容易就可以搜索到定位的位置信息,如果使用陶瓷天線則定位效果不是很好。
本次設計采用NEO-6M模塊作為定位模塊接收位置信息,內配有3m天線與之連接搜索信號。NEO-6M模塊具有很高性能的定位裝置。他們結構緊密,適合電池驅動,但是有成本和空間方面上的限制。NEO-6M模塊由于其專用采集引擎的量大,能夠進行在最大范圍的空間內進行特別精確的搜索,使其能夠以最快速度找到衛星。不僅如此,該模塊還能減少干擾,即使處在有挑戰性的天氣情況下,也能有很精確的定位功能。
2.1.3 通信模塊方案選擇
對于該設計來說,51單片機主控制器的SBUF接收了來自GPS定位模塊的位置信息之后,對其進行解析(將原始數據解析成我們平時能一看就懂的位置信息或者說是高德地圖可以直接使用的位置信息),那么之后的工作就是傳輸了,該設計的通信模塊使用的是HC-05 藍牙串口通信模塊,它是一個最常用的通信模塊,配置簡單,并且容易上手。需要注意的是,使用之前要查詢該型號的藍牙模塊的AT配置指令集并查詢其名稱,配對碼,MAC地址,主從模式等重要信息,如果想修改則可以使用AT配置語句對其進行修改。該藍牙模塊配置的條件很簡單,只要上電以及藍牙模塊的EN置于高電平即可。使用起來非常的靈活,方便,是個很好的通信傳輸模塊的選擇。
2.2 系統功能總體設計
2.2.1 系統總體實現的功能
(1)GPS模塊實現定位功能;
(2)51單片機實現對各個模塊的控制功能和位置信息的信息解析;
(3)易安卓APP實現位置信息(經緯度)顯示功能;
(4)易安卓實現定位以及導航(路線規劃)功能;
2.2.2 系統總體設計原理圖
該定位導航系統的硬件設計:以51單片機為主控制器,控制GPS模塊和藍牙模塊的硬件系統。對單片機編程,讀取GPS模塊的定位數據,并通過藍牙通信模塊把定位信息發送給手機APP,通過所編寫的手機導航程序,在手機上規劃行駛路線,并把接收的位置進行定位以及按照已搜索的路線進行導航。該設計的綜合性的系統原理如圖2-1所示:
3 開發工具簡介
3.1 單片機程序開發軟件keil uVision5
該設計使用keil uVision5,即集成開發單片機的編程工具。通常對于硬件的編程,也就是STC90C516RD+的編程都是使用C語言或者匯編語言的,只要有一點C語言基礎,使用該程序開發軟件便可以學習的很快,因為除了硬件本身以外的些許語句還是一樣的。比起Keil 4,keil uVision5更加精進和豐富。它是一個KEIL公司開發的集成開發環境,一直在不斷的更新和發展著。該軟件有特別豐富的函數庫,包括各種型號的單片機的初始化函數,而且,此軟件具有很豐富的庫文件。keil 5編譯工具界面如圖3-1所示.
圖3-1 keil 5編譯工具界面圖
3.2 手機程序開發軟件易安卓
易安卓也叫E4A,即易語言FOR安卓,可以說是專門為寫安卓APP的一個類似易語言的輕松開發安卓應用APP的開發工具。因其語言是中文,使其復雜性降到了比較低的一個層面,就算沒有易語言的扎實基礎,只要學過計算機編程語言,短時間內勝任一個沒有學過的陌生編程語言也是沒有問題的。E4A的開發環境和易語言是一樣的,不僅有各種核心的E4A類庫,還有各種安卓手機開發方面的庫。純中文編寫代碼,對于里面自帶的例程比起英文編程,E4A可能更容易看懂,核心原理方面所有編程都是很類似的,不過對于初次看見例程來說,E4A可能會方便很多,也會省下很多時間。雖說E4A還處于初級階段,但是對于開發一個具有基本的常用功能安卓手機APP還是完全沒有問題的。打開該開發軟件,左側是豐富的E4A類庫,介紹有屬性和方法等,可以隨時查看自己編寫安卓APP所需的類庫的方法以及注釋,不僅如此,還自帶有E4A的各種級別的例程,沒有接觸過的開發能夠快速學習從而快速編碼開發安卓手機APP。易安卓開發界面如圖3-2所示。
圖3-2 易安卓開發界面圖
4 系統硬件設計
4.1 51單片機
51單片機是所有可以兼容Intel 8031指令系統的單片機的統稱。該系列的單片機在發展上有了很大的進展。51單片機不僅是基礎入門,而且是應用最廣泛的單片機。該設計的主控制器使用stc90c516rd+最小系統,包括CPU,存儲器,并行和串行接口,定時器/計數器以及中斷。單片機有40個引腳大致分為4類:電源,時鐘,控制和四個并行IO口。
(1)單片機主芯片內部電路圖如圖4-1所示:
圖4-1 單片機內部電路原理圖
STC90C516RD+一共有四個并行I/O口,32個I/O端口。需要注意的是,P3口不僅僅做I/O口使用,還具有第二功能,比如P3.0為串口輸入口,即串口通信中的RXD引腳,P3.1為串口輸出口,即串口通信中的TXD引腳。
(2)供電&下載&串口模塊通信電路如圖4-2所示:
圖4-2 供電&下載&串口模塊通信電路圖
(3)復位電路
阻容復位時,電容為10uF,電阻為10K,RESET腳內部沒下拉電阻,必須用此10K電阻。復位電路圖如圖4-3所示:
圖4-3 復位電路圖
4.2 GPS定位模塊
該定位模塊使用U-BLOX NEO-6M,原理圖如圖4-4所示,模塊如圖4-5所示。
圖4-4 NEO-6M原理圖
圖4-5 NEO-6M模塊
主要參數:
1、模塊采用U-BLOX NEO-6M,是GPSmini版,和GPS標準版功能沒有大的差別,而且具有體積更小的優勢。
2、模塊添加放大電路,方便快速搜索衛星。
3、模塊的參數可以修改設置,并可保存在EEPROM。
4、模塊自帶SMA接口,可以連接各種有源天線。
5、模塊因其電源可為3.3V也可為5V而可適用于各種單片機。
6、模塊配置可充電后備電池,可以保存因斷開電源丟失的位置信息。
引腳說明如表4-1所示:
表4-1 GPS模塊引腳說明表
其中,PPS引腳連接指示燈,該指示燈的輸出狀態以及輸出特性是可以通過程序自行設置的。但是我們無須再重新去設置,使用默認的即可。PPS指示燈默認狀態:有2個狀態:(1) 常亮,證明該GPS模塊可以正常工作(可用),但是不能證明該GPS模塊已經實現了位置信息的定位。(2)閃爍,證明該GPS模塊不僅僅可以正常的工作還可以對位置信息進行成功地定位。
所以,我們可以通過 PPS 指示燈亮的狀態去判斷,我們的定位工作進行到哪一個步驟或者說是是否可以正常工作。
NEO-6M與51單片機引腳的連接方法如表4-6所示:
表4-2 NEO-6M與51單片機引腳連接表
4.3 藍牙傳輸模塊
藍牙HC-05如圖4-6所示
圖4-6 HC-05模塊
藍牙傳輸模塊使用HC-05藍牙模塊,該模塊是藍牙串口通信模塊,帶 EDR 藍牙協議的透傳模塊。該模塊支持AT 指令,用戶可根據自己需求更改角色(主、從模式)以及串口波特率、設備名稱等必要參數,使用靈活。對于藍牙模塊的傳輸,使用的是透傳。從藍牙模塊這功能特性方面來說,使用起來特別方便,因為開發者并不需要特別的了解藍牙協議內部實現的具體過程。只需藍牙模塊正常工作便可以開發看葉無線傳輸產品。串口藍牙模塊具體的工作機制就是不需要對單片機傳輸的數據做任何處理,也不需要自己深入學習什么協議,適合初學者學習使用。
使用這個藍牙模塊之前,要先使用AT指令對其進行配置,比如名字,密碼等,以及查詢藍牙Mac地址,設置主從模式。該設計需要提取單片機收到的位置信息,然后將其通過藍牙模塊發送給手機,具體來說,是發送給手機APP,需要注意的是,連接之前需要把設置里面的藍牙打開,搜索到該藍牙模塊時候,輸入PIN,即密碼,將手機自帶藍牙(設置里面自行打開藍牙)與藍牙模塊進行配對,此時,就可以用手機APP與藍牙模塊連接。因此,需要手機作為主機去主動連接藍牙模塊,所以將藍牙模塊設置成從模式從而實現主機(手機)對藍牙模塊進行的主動連接,這個模式同時也是默認的,如果經AT指令查詢就是這個模式,則不用對其進行修改。否則,需要將主模式修改為從模式。
該設計需要51單片機通過藍牙模塊與安卓手機通信,模塊與手機的聯接通訊圖如圖4-7所示:
圖4-7 單片機與藍牙模塊連接圖
5 系統軟件設計
5.1 51單片機主控制程序流程
首先,進行串口初始化配置,清空接收GPS數據的數組,方便接收位置的最新數據信息,判斷原始數據(未解析的位置信息)是否獲取成功,如果成功,則通過原始數據中的A或者V繼續判斷位置信息是否有效,如果是字符A,就代表該位置信息有效,如果是字符V,則代表該位置信息無效。接著,判斷數據是否正確,如果正確,則進行解析數據,即對獲取到的位置信息進行時間、維度以及經度等信息和換算GPS數據格式的解析。解析完成,往51單片機串口發送解析過的GPS數據,實現數據傳輸。主程序流程圖如圖5-1所示:
圖5-1 主程序流程圖
5.2 51單片機主控制器程序設計
5.2.1 GPS數據接收程序設計
數據的接收是采用中斷的方式的,一旦有定位數據需要接收,查詢RI的值,如果RI=1,則清除串行口中斷接收中斷,即軟件設置RI=0(如果接收中斷成功,硬件會自動將RI設置為1,那么我們需要通過軟件編程清除掉中斷標志)。接著,從SBUF緩存區讀取GPS數據,將符合$GPRMC語句的數據流存儲在idata寄存器中,結束本次定位,對存儲的位置信息清空,方便接收更新的GPS定位數據。
下圖是中斷接收GPS數據的程序:
5.2.2 串口配置程序設計
51單片機與GPS模塊,51單片機與藍牙模塊都是通過串口進行通信的。可見,串口通信對于單片機與外部設備通信是極其重要的。
在此之前,需要對串口進行初始化配置(初值以及波特率設置)。下面是串口初始化的配置程序:
5.2.3數據傳輸控制程序設計
對于藍牙模塊傳輸的過程,比較簡單。進行數據傳輸過程之前,需要使用AT指令配置藍牙模塊,從而真正地實現藍牙模塊的透傳功能,即單片機給藍牙發送什么信息,那么藍牙模塊接收到信息之后,就會原封不動地將藍牙模塊接收到的信息發送給手機APP。單片機通過串口將解析過的位置信息發送給藍牙模塊。使用查詢的方式發送數據,在查詢發送之前,必須關閉串行口中斷(ES=0),并且設置TI=1,如果TI為0,則查詢TI,當TI為1時(前一次發送結束)才往下執行。另外,往51單片機串口發送的是解析過的數據,即將GPS模塊接收到的經緯度格式換算成高德地圖可以直接使用的經緯度格式。
數據傳輸流程圖如圖5-2所示:
圖5-2 數據傳輸流程圖
下面是51單片機往串口發送解析過的GPS數據的程序:
5.3 手機接收定位信息程序設計
手機APP要接收藍牙模塊傳送過來的位置信息,在此之前,要先通過手機設置里自帶的安卓藍牙與配置好AT命令的HC-05藍牙模塊配對,并輸入即配對密碼。用代碼取已配對設備即可,取配對設備的代碼如下:
手機APP定位信息接收界面的代碼如下:
將代碼編譯過后的APP界面的界面如圖5-3所示:
圖5-3 APP位置信息接收界面圖
5.4 手機導航程序設計
手機APP接收位置信息之后,對當前所在位置的進行定位,對當前位置進行坐標查詢地址,查詢完畢之后,以當前位置作為出發地,代碼設計中,將目的地默認為南陽火車站(可修改),接著,執行搜索路線的功能,從而開始執行模擬導航功能,并進行實時導航。從而實現完整的實現該系統的定位和導航功能。
手機APP導航程序設計代碼如下:
編譯過后的手機APP導航界面如圖5-4所示:
圖5-4 APP導航界面圖
點擊開始搜索路線,由起點到終點的路線規劃會在高德地圖中顯示出來,效果圖會如圖5-5所示:
圖5-5 路線規劃效果圖
點擊開始駕車實時導航,會進入導航界面,該導航是按照之前搜索的路線開始進行導航的,地圖導航界面效果圖如圖5-6所示:
圖5-6地圖導航界面圖
6 系統調試運行及測試
6.1 GPS模塊定位測試
GPS模塊的引腳有五個,可以將GPS模塊與USB-TTL工具相連接,在此之前,要記得給電腦安裝相應的驅動,可以在電腦的設備管理器看到對應COM端口按照如下過程測試GPS定位情況:
(1)連線
表6-1 GPS模塊與USB-TTL模塊連接表
GPS模塊 USB-TTL模塊
VCC VCC
GND GND
TXD RXD
RXD TXD
PPS -
(2)測試
選擇好端口號(和設備管理器里面一致),點擊打開串口按鈕,如果串口接收區的信息是無效的,把天線放置窗戶旁邊,有利于信號的接收。串口調試助手的接收區(GPS原始數據)效果圖如圖6-1所示:
圖6-1 GPS數據接收圖
將串口調試助手接收區收到的經緯度,經過坐標轉換,輸入GPS經緯度地圖定位工具中的GPS坐標(轉換過的),定位效果圖如圖6-2所示:
圖6-2 定位效果圖
6.2 藍牙傳輸模塊測試
對于藍牙模塊的測試,將藍牙模塊與USB-TTL工具相連,其中連接方式和GPS模塊類似。這里需要注意的是,在藍牙模塊測試之前,使其進入AT指令模式,對其通過AT指令進行配置。AT配置指令如下:
表6-2 AT指令配置表
在通信之前要將手機設置里面的藍牙打開,與剛剛配置好的藍牙模塊相配對,手機藍牙與藍牙模塊配對圖如圖6-3所示:
圖6-3 手機藍牙與藍牙模塊配對圖
從stc串口調試助手發字符串“123”給手機APP,效果圖如圖6-4所示:
圖6-4 藍牙模塊與手機APP通信效果圖
從手機APP發送字符串“哈哈哈”給stc串口調試助手,效果圖如圖6-5所示:
圖6-5 手機APP與藍牙模塊通信效果圖
從以上效果圖可以看出,實現了藍牙模塊和手機APP的相互通信。
6.3 51單片機串口調試
該設計一個很重要的部分就是串口通信,我們可以電腦端控制發送什么,串口接收什么,將寫好的串口通信程序通過stc-isp軟件燒錄到51單片機中,打開串口,將波特率設置為9600,最后,通過stc-isp中自帶的串口助手數據接收區查看接收的數據是否與電腦端發送的字符串一致,如果一致,證明51單片機的串口完好,即該串口通信程序可用。如果不一致,從下面幾個方面查看排查問題:(1)查看串口通信程序是否寫錯(2)檢查晶振頻率是否為11.0592MHz(3)查看波特率是否9600。
51單片機串口通信圖如圖6-6所示:
圖6-6 51單片機串口通信圖
6.4 手機APP接收GPS數據測試
手機自帶藍牙與藍牙模塊配對成功后,將手機藍牙與藍牙模塊連接。對于藍牙透傳模塊發送過來的解析過的位置信息,手機端編寫的相應的程序來負責接收HC-05模塊發送的數據,并對接收到的數據調用高德地圖api接口,并設計了目的地和與定位地點所處的城市,從而更精確地搜索行駛路線。APP接收定位數據圖如圖6-7所示:
圖6-7 APP接收定位數據圖
6.5 定位信息解析
首先,要了解到GPS接收信息是遵循一個統一標準的協議的,即NMEA-0183 協議。目前已經成了GPS定位導航設備默認的統一的一個行業內的標準協議。 NMEA-0183協議傳遞GPS的位置信息是通過數據幀來進行傳遞的。
幀格式形如:aaccc,ddd,ddd,…,ddd?hh(CR)(LF)1、“aaccc,ddd,ddd,…,ddd*hh(CR)(LF) 1、“aaccc,ddd,ddd,…,ddd?hh(CR)(LF)1、“”:幀命令起始位
2、aaccc:地址域,前兩位為識別符(aa),后三位為語句名(ccc)
3、ddd…ddd:數據
4、“”:校驗和前綴(也可以作為語句數據結束的標志)
5、hh:檢驗和,中間所有字符ASCII碼的檢驗和
6、(CR)(LF):幀結束,回車和換行符
了解到,數據幀一共有七種基本的語句格式,選擇接收其中一種數據格式,再對其進行解析即可。
$GPRMC,055037.00,A,3258.29117,N,11232.54636,E,0.236,260419,A7A
$GPVTG,T,M,0.236,N,0.437,K,A24
$GPGGA,055037.00,3258.29117,N,11232.54636,E,1,06,2.49,125.2,M,-17.5,M,7A
$GPGSA,A,3,07,16,27,30,08,28,2.90,2.49,1.480F
$GPGSV,2,1,07,07,64,308,47,08,71,015,36,16,22,078,39,18,45,147,77
$GPGSV,2,2,07,27,37,041,40,28,08,285,39,30,30,315,464C
GPGLL,3258.29117,N,11232.54636,E,055037.00,A,A?6C比如GPGLL,3258.29117,N,11232.54636,E,055037.00,A,A*6C 比如GPGLL,3258.29117,N,11232.54636,E,055037.00,A,A?6C比如GPRMC,這個是比較常用的。GPRMC語句中一共有十二個信息,分別用逗號隔開。可以解析幾個比較重要的即可。比如,UTC時間,定位狀態,經度,緯度等。可以將GPS模塊直接接在USB?TTL上,可以看出來未解析的原始數據。對GPRMC語句中一共有十二個信息,分別用逗號隔開。可以解析幾個比較重要的即可。比如,UTC時間,定位狀態,經度,緯度等。可以將GPS模塊直接接在USB-TTL上,可以看出來未解析的原始數據。對GPRMC語句中一共有十二個信息,分別用逗號隔開。可以解析幾個比較重要的即可。比如,UTC時間,定位狀態,經度,緯度等。可以將GPS模塊直接接在USB?TTL上,可以看出來未解析的原始數據。對GPRMC格式的數據進行解析:
$GPRMC,055037.00,A,3258.29117,N,11232.54636,E,0.236,260419,A7A
可以看得出來,經緯度的格式與我們平時看到的經緯度的格式是不一樣的,需要進一步換算。我們需要將解析過而且轉化過的經緯度信息將位置信息傳給藍牙模塊。
紅線里面的是北緯32度58.29117分,東經112度32.54636分,可以知道在地圖中的經緯度的單位是度,所以將其換算成度,例如:
北緯32度58.29117分換算過程如下:
58.29117分=0.9715195度(58.29117/60),把之前的度加起來是32.9715195度。
東經112度32.54636分換算過程如下:
32.54636分=0.542439333度(32.54636/60),把之前的度加一起是112.54243933度。
所以對于GPS數據的解析不只是把時間,經度,維度等信息分別解析分離出來并保存,還需要將經緯度換算成我們日常生活中能夠使用的經緯度才可以,即要將換算過的經緯度信息發送給藍牙模塊,然后進行傳輸,傳給手機APP。
7 總結
本次畢業設計,我的課題是基于GPS&單片機的導航系統設計,剛開始知道自己的課題是這個題目的時候,說實話,對于一個對單片機只是有一點皮毛的我來說,根本不知道該從何處做起。大學期間雖說,學過單片機這門課,但是只是了解一些皮毛而已,要想完成一個小課設都是很艱難的,更別說是完成綜合性這么強的畢業設計了。從一開始選題后,就一直在學習單片機,看的學習視頻就是結合的學校實驗室的普中的51單片機開發儀,整個過程學習結束對單片機有了很深的了解。在進行畢業設計的過程中主要出現了兩個比較重要的問題:(1)在對單片機的串口通信進行調試的時候,結果發現串口助手接收區一直出現亂碼現象。于是搜了很多的串口通信的例子,發現幾乎都不能用,全都會出現亂碼的現象。最后經過查閱博客,了解到串口通信對于單片機晶振的波特率要求特別嚴格,如果是12MHZ的晶振,使用4800的波特率可以使誤差降到最低,如果使用9600的波特率,誤差可以高到百分之八點多。但是如果使用11.0592MHZ的晶振并且串口的波特率為9600,誤差可以達到0,也就是0誤差。(2)對于STC90C516RD+單片機來說,只有一個串口,那就是P3.0和P3.1,那么如何連接兩個串口外部設備呢?一開始想的方案是用STC15系列的單片機,這種系列的單片機有兩個串口可以用,也就是說串口肯定是夠用的,可是后來突然想到,這個設計,并不需要雙向通信,即當GPS模塊和單片機通信時,只需要GPS的發送引腳(TXD)和單片機的接收引腳(RXD)連接,單片機的發送引腳(TXD)和藍牙模塊的接收引腳(RXD)連接接口,這樣一來,單片機串口不夠的問題便可以解決了。之所以這么去想問題解決的方法是,是因為GPS模塊和單片機不需要互相通信,單向通信就可以實現單片機接收GPS模塊發送的位置信息了,而藍牙模塊和和單片機也不需要互相通信,單向通信就可以實現單片機發送數據給藍牙模塊了。
雖說整個過程有煎熬,但是也有開心,每每解決一個小問題,就覺得特別的開心。總的來說,對于這個課題的畢業設計,我從中真的是受到了很大的啟發,尤其是出現問題之后的心態,不是放棄,而是對于解決問題的那種渴望。從不會到會,從不擅長到做出來,內心充滿了成就感。而且,我們這次畢設,不僅僅有硬件還有軟件。雖說有難度,但不得不說特別鍛煉對于理論知識在現實實物中的實踐與應用方面上的能力。
對于我們工科來說,最重要的不是理論的理解,而是對理論的實踐。實踐也是檢驗理論學習情況,對理論理解深度的的很重要的硬性條件。在實踐中不斷的成長,在問題中不斷的進步,進而解決一個個出現的問題,最終完成設計。
參考文獻
[1] 袁博. 梁怡林 STM32主控的GPS/GPRS移動終端定位跟蹤系統[J], 2018.
[2] 周國運等. 單片機原理與接口技術(C語言版)[M]. 清華大學出版社, 2014.
[3] 霍玲玲.易語言入門與提高[M].國防工業出版社2012.
[4] 關東升,趙志榮 .Android開發案例驅動教程[M].機械工業出版社,2011.
[5] 袁東等.51單片機應用開發實戰手冊[M].電子工業出版社,2011.
[6] 譚浩強.c語言程序設計[M].北京:清華大學出版社,2011.
[7] 劉基余.GPS 衛星導航定位原理與方法(第二版)[M].北京:科學出版社有限責任公司, 2016.
[8] 謝揚,潘子豪.易安卓開發平臺可視化界面在智能家居領域的應用[J].單片機與嵌入式系統應用.2015.
[9] 宋戈.51單片機應用開發范例大全[M].人民郵電出版社,2012.
[10] 徐愛鈞.Keil C51 單片機高級語言應用編程技術[M].電子工業出版社,2015.
致謝
本次畢業設計,我要感謝我的畢業指導老師周老師和我的同組同學,特別是周老師。就這次畢業設計來說,老師和同學幫助了我很多。從起初的定畢業設計課題,到后來的帶我們一組人借硬件設備,比如51單片機,GPS模塊,以及藍牙模塊,再到最后的論文細心批閱,周老師一直在幫助我們。
在這次畢業設計的過程中,無論是硬件還是軟件編程方面都出現了許許多多的問題。很多硬件和軟件的問題,也是老師耐心幫助我們解決的。每每遇到一些自己和同學都無法解決的問題的時候,我們都會尋求周老師的幫助,周老師每次都會很認真地對于我們出現的問題進行一次次地解決。就算是一開始的開題報告,對于不合適的地方也是做了修改和批注,并退回來重新做了部分的刪減和修改。對于硬件模塊所需要的資料以及原理圖,防止我們找的不全或者不對,會幫我們整理好并發給我們。對于一些比較簡單的問題,同學也幫助了我很多。要是沒有老師和同學的幫助,我可能不能按時地完成該設計。
再一次真心地感謝我的畢業設計指導老師和同學。
總結
以上是生活随笔為你收集整理的基于51单片机GPS的导航系统设计(3)---毕设论文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html中鱼眼效果,鱼眼效果和放大效果怎
- 下一篇: MATLAB实现已知DH参数的正运动方程