

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 畢 業(yè) 設(shè) 計(jì)</p><p> 基于安卓控制的智能無(wú)線開(kāi)關(guān)</p><p> 學(xué)生畢業(yè)論文(設(shè)計(jì))承諾書</p><p> 本人鄭重承諾:所呈交的畢業(yè)論文(設(shè)計(jì))是在指導(dǎo)老師的指導(dǎo)下進(jìn)行的研究工作及取得的研究成果,論文中參考他人的文獻(xiàn)資料均已明確標(biāo)注出,論文中的結(jié)論和結(jié)果為本人獨(dú)立完成,沒(méi)有抄襲、剽竊他人研究成果。</p&g
2、t;<p><b> 畢業(yè)論文作者:</b></p><p><b> 簽字日期: </b></p><p><b> 摘 要</b></p><p> 本課題研究的是基于安卓手機(jī)控制的智能無(wú)線開(kāi)關(guān)設(shè)計(jì)?;赼ndroid手機(jī)平臺(tái)和ARM
3、核心板,借助于藍(lán)牙技術(shù),設(shè)計(jì)和實(shí)現(xiàn)了一種無(wú)線控制開(kāi)關(guān)系統(tǒng)。實(shí)現(xiàn)通過(guò)手機(jī)端無(wú)線控制ARM開(kāi)發(fā)板端的LED燈的亮滅功能。</p><p> Android手機(jī)作為客戶端發(fā)送藍(lán)牙信號(hào),藍(lán)牙模塊HC-06作為服務(wù)器端接收信號(hào),并向服務(wù)器端的控制器ARM核心板傳遞信號(hào)。雙方通過(guò)串口進(jìn)行通信。ARM控制器通過(guò)判斷是否接收到信號(hào)從而控制核心板上的LED燈的亮滅。</p><p> 本文詳細(xì)介紹了基于
4、安卓智能手機(jī)的無(wú)線開(kāi)關(guān)控制系統(tǒng)的設(shè)計(jì)以及實(shí)現(xiàn)。從課題的背景開(kāi)始討論,接著到開(kāi)發(fā)平臺(tái)的搭建,再到系統(tǒng)整體方案的設(shè)計(jì),最后對(duì)整個(gè)設(shè)計(jì)進(jìn)行總結(jié),分析出本系統(tǒng)的優(yōu)勢(shì)以及出現(xiàn)的不足。</p><p> 關(guān)鍵詞:android 藍(lán)牙 無(wú)線通信 ARM</p><p><b> 目 錄</b></p><p><b> 1 緒論1&l
5、t;/b></p><p><b> 前 言1</b></p><p> 1.1 近距離無(wú)線通信技術(shù)概述2</p><p> 1.3 課題的來(lái)源背景5</p><p> 1.4國(guó)內(nèi)外研究狀況6</p><p> 1.5系統(tǒng)總體方案6</p><p
6、> 1.5.1 設(shè)計(jì)要求6</p><p> 1.5.2 硬件的選?。?</p><p> 1.5.3軟件的設(shè)計(jì):7</p><p> 2 開(kāi)發(fā)環(huán)境的搭建8</p><p> 2.1 Linux開(kāi)發(fā)環(huán)境搭建8</p><p> 2.1.1 關(guān)于Linux系統(tǒng)8</p><
7、;p> 2.1.2 關(guān)于GNU8</p><p> 2.1.3 利用Vmware虛擬機(jī)搭建Linux開(kāi)發(fā)環(huán)境8</p><p> 2.2 安卓應(yīng)用開(kāi)發(fā)環(huán)境搭建10</p><p> 2.2.1 關(guān)于Eclipse軟件10</p><p> 2.2.2 android SDK開(kāi)發(fā)環(huán)境搭建10</p>&l
8、t;p> 2.2.3 android NDK 開(kāi)發(fā)環(huán)境搭建11</p><p> 3系統(tǒng)硬件的選取13</p><p> 3.1關(guān)于ARM處理器13</p><p> 3.2 GEC210開(kāi)發(fā)板簡(jiǎn)介15</p><p> 3.3 藍(lán)牙HC-06模塊的簡(jiǎn)介17</p><p> 3.3.1
9、 HC-06模塊特征17</p><p> 3.3.2 AT 指令集 (對(duì)藍(lán)牙模塊進(jìn)行測(cè)試)19</p><p> 4 系統(tǒng)軟件的設(shè)計(jì)22</p><p> 4.1 相關(guān)軟件編程技術(shù)22</p><p> 4.1.1 嵌入式C編程22</p><p> 4.2 系統(tǒng)底層軟件的設(shè)計(jì)22</p
10、><p> 4.2.1 LED燈驅(qū)動(dòng)程序設(shè)計(jì)22</p><p> 4.2.2 LED燈測(cè)試程序設(shè)計(jì)26</p><p> 4.2.3 UART串口配置28</p><p> 4.3 系統(tǒng)上層軟件的設(shè)計(jì)30</p><p> 4.3.1 android應(yīng)用程序工程分析30</p><
11、p> 4.3.2 智能手機(jī)端的應(yīng)用程序設(shè)計(jì)31</p><p> 4.3.3 GEC210開(kāi)發(fā)板端的應(yīng)用程序設(shè)計(jì)37</p><p> 5 系統(tǒng)整體的調(diào)試42</p><p> 5.1 系統(tǒng)軟硬件的測(cè)試42</p><p> 5.2 結(jié)論與總結(jié)45</p><p> 參 考 文 獻(xiàn)46&l
12、t;/p><p> Abstract47</p><p><b> 附錄:48</b></p><p> 附錄一:led_drv.c48</p><p> 附錄二:led_test.c50</p><p> 附錄三:AndroidApp工程源文件:52</p><
13、;p> 3.1 主界面源代碼MainActivity.java52</p><p> 3.2 控制界面源代碼SearchBlueTooth.java55</p><p> 3.3 “關(guān)閉APP”類源代碼SysApplication.java60</p><p> 3.5 主界面布局文件:activity_main.xml61</p>
14、<p> 3.6 控制界面布局文件searchbluetooth.xml63</p><p> 附錄四:ArmApp工程源代碼:63</p><p> 4.1 主界面源文件MainActivity.java63</p><p> 4.2 主界面布局文件activity_main.xml65</p><p> 4
15、.3 Jni源代碼文件:65</p><p> 4.3.1 C庫(kù)源文件ArmApp.cpp65</p><p> 4.3.2 頭文件com_jhhu-armapp_MainActivity.h69</p><p> 4.3.3 Android.mk70</p><p> 4.3.4 Application.mk70<
16、;/p><p><b> 致 謝71</b></p><p> 仲愷農(nóng)業(yè)工程學(xué)院畢業(yè)論文(設(shè)計(jì))成績(jī)?cè)u(píng)定表72</p><p><b> 1 緒論</b></p><p><b> 前 言</b></p><p> 隨著移動(dòng)互聯(lián)網(wǎng)平
17、臺(tái)的發(fā)展,搭載著免費(fèi)、開(kāi)源的android操作系統(tǒng)的android智能手機(jī)在移動(dòng)平臺(tái)以其市場(chǎng)占有率第一的優(yōu)勢(shì)而大放異彩。然而在現(xiàn)實(shí)生活中存在著許多這樣的應(yīng)用情況,系統(tǒng)需要實(shí)時(shí)傳輸小量的、近距離的突發(fā)信號(hào),這就需要近距離無(wú)線通信技術(shù)。因此,基于安卓智能手機(jī)控制的無(wú)線開(kāi)關(guān)系統(tǒng)亦是一個(gè)值得關(guān)注的領(lǐng)域。</p><p> 安卓智能手機(jī)隨處可見(jiàn),開(kāi)關(guān)更是司空見(jiàn)慣,無(wú)線開(kāi)關(guān)也是不再新鮮,然而基于安卓智能手機(jī)控制的無(wú)線開(kāi)關(guān)確
18、實(shí)一個(gè)較為新鮮的事物。本系統(tǒng)是一個(gè)基于安卓手機(jī)的智能無(wú)線開(kāi)關(guān)系統(tǒng),其涉及的硬件設(shè)備由處理單元(基于contex-A8內(nèi)核的S5PV210處理器)、發(fā)射模塊(三星智能手機(jī))、接收模塊(藍(lán)牙接收器)、ARM核心板以及其外接電路構(gòu)成。軟件系統(tǒng)則需要用JAVA語(yǔ)言寫兩個(gè)安卓APP,一個(gè)是安裝到手機(jī)端作為藍(lán)牙信號(hào)發(fā)送的發(fā)送端,另一個(gè)則是安裝到ARM核心板上作為藍(lán)牙信號(hào)的接收端。除此之外,還需要用C語(yǔ)言寫關(guān)于ARM板上的LED燈的硬件驅(qū)動(dòng)程序以及u
19、art串口的初始化程序。當(dāng)發(fā)射模塊發(fā)出信號(hào)時(shí),接收模塊會(huì)接收到無(wú)線信號(hào),ARM處理器就會(huì)作出分析使對(duì)應(yīng)的LED燈執(zhí)行相應(yīng)的亮滅操作,以LED燈的亮滅來(lái)模擬開(kāi)關(guān)的狀態(tài)。此設(shè)計(jì)需要用到C語(yǔ)言,JAVA語(yǔ)言,數(shù)字電路,模擬電路,嵌入式系統(tǒng)設(shè)計(jì)以及安卓編程等相關(guān)知識(shí)。</p><p> 1.1 近距離無(wú)線通信技術(shù)概述</p><p> 目前使用較廣泛的近距無(wú)線通信技術(shù)是藍(lán)牙(Bluetooth
20、),無(wú)線局域網(wǎng)802.11(Wi-Fi)和紅外數(shù)據(jù)傳輸(IrDA)。同時(shí)還有一些具有發(fā)展?jié)摿Φ慕酂o(wú)線技術(shù)標(biāo)準(zhǔn),它們分別是:ZigBee、超寬頻(Ultra WideBand)、短距通信(NFC)、WiMedia、GPS、DECT、無(wú)線1394和專用無(wú)線系統(tǒng)等。它們都有其立足的特點(diǎn),或基于傳輸速度、距離、耗電量的特殊要求;或著眼于功能的擴(kuò)充性;或符合某些單一應(yīng)用的特別要求;或建立競(jìng)爭(zhēng)技術(shù)的差異化等。但是沒(méi)有一種技術(shù)可以完美到足以滿足所有
21、的需求。</p><p> 藍(lán)牙技術(shù)有其性價(jià)比高,普遍性(一般的智能手機(jī)都有搭載藍(lán)牙模塊)的特點(diǎn),較為適合用作短距離無(wú)線通信,因此此處主要對(duì)藍(lán)牙技術(shù)進(jìn)行介紹。</p><p> 藍(lán)牙技術(shù)(bluetooth)技術(shù)是近幾年出現(xiàn)的,廣受業(yè)界關(guān)注的近距無(wú)線連接技術(shù)。它是一種無(wú)線數(shù)據(jù)與語(yǔ)音通信的開(kāi)放性全球規(guī)范,它以低成本的短距離無(wú)線連接為基礎(chǔ),可為固定的或移動(dòng)的終端設(shè)備提供廉價(jià)的接入服務(wù)。藍(lán)牙
22、技術(shù)是一種無(wú)線數(shù)據(jù)與語(yǔ)音通信的開(kāi)放性全球規(guī)范,其實(shí)質(zhì)內(nèi)容是為固定設(shè)備或移動(dòng)設(shè)備之間的通信環(huán)境建立通用的近距無(wú)線接口,將通信技術(shù)與計(jì)算機(jī)技術(shù)進(jìn)一步結(jié)合起來(lái),使各種設(shè)備在沒(méi)有電線或電纜相互連接的情況下,能在近距離范圍內(nèi)實(shí)現(xiàn)相互通信或操作。其傳輸頻段為全球公眾通用的2.4GHzISM頻段,提供1Mbps的傳輸速率和10m的傳輸距離。藍(lán)牙技術(shù)誕生于1994年,Ericsson當(dāng)時(shí)決定開(kāi)發(fā)一種低功耗、低成本的無(wú)線接口,以建立手機(jī)及其附件間的通信。
23、該技術(shù)還陸續(xù)獲得PC行業(yè)業(yè)界巨頭的支持。1998年,藍(lán)牙技術(shù)協(xié)議由 Ericsson、IBM、Intel、NOKIA、Toshiba等5家公司達(dá)成一致。藍(lán)牙協(xié)議的標(biāo)準(zhǔn)版本為802.15.1,由藍(lán)牙小組(SIG)負(fù)責(zé)開(kāi)發(fā)。802.15.1的最初標(biāo)準(zhǔn)基于藍(lán)牙1.1實(shí)現(xiàn),后者已構(gòu)建到現(xiàn)行很多藍(lán)牙設(shè)備中。新版802.15.1a基本等同于藍(lán)牙1.2標(biāo)準(zhǔn),具備</p><p> 以上優(yōu)勢(shì)的形成,必將改變中國(guó)藍(lán)牙行業(yè)的現(xiàn)有局
24、面,并在深圳形成以高新技術(shù)為龍頭的一體化藍(lán)牙產(chǎn)業(yè)基地,更好的為全中國(guó),全世界服務(wù)。業(yè)內(nèi)專家認(rèn)為,藍(lán)牙的市場(chǎng)前景取決于藍(lán)牙價(jià)格和基于藍(lán)牙的應(yīng)用是否能達(dá)到一定的規(guī)模。有了藍(lán)牙,我們可以不再為數(shù)字家庭的布線而煩惱,移動(dòng)電話、計(jì)算機(jī)、數(shù)碼相機(jī)、攝像機(jī)、打印機(jī)、傳真機(jī)和掌上電腦等能隨心所欲無(wú)線連通。有了藍(lán)牙,這些設(shè)備即會(huì)實(shí)現(xiàn)自動(dòng)同步。即使用戶的個(gè)人電腦放在手提箱內(nèi),用戶也可以通過(guò)電話收電子郵件,通過(guò)移動(dòng)電話屏幕閱讀郵件標(biāo)題,而不會(huì)有到處找連接線、
25、開(kāi)機(jī)、關(guān)機(jī)等待等等諸如此類的一系列煩惱。藍(lán)牙技術(shù)擁有廣闊的潛力市場(chǎng)。</p><p> 1.2 android操作系統(tǒng)簡(jiǎn)介</p><p> Android操作系統(tǒng)是一款由Google公司于2007年11月5日宣布的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng)。2008年9月22日,美國(guó)運(yùn)營(yíng)商T-Mobile USA在紐約正式發(fā)布第一款Google手機(jī)——T-Mobile G1。該款手機(jī)為臺(tái)灣
26、宏達(dá)電代工制造,是世界上第一部使用Android操作系統(tǒng)的手機(jī)。至最新的數(shù)據(jù)顯示,搭載著安卓系統(tǒng)的智能手機(jī)在世界市場(chǎng)的占有率已達(dá)到78.9%,遠(yuǎn)遠(yuǎn)拋開(kāi)排名第二的ios系統(tǒng)的15.5%。成為目前市場(chǎng)占有率最高,發(fā)展最為快速的一種手機(jī)操作系統(tǒng)。</p><p> Android系統(tǒng)是基于Linux和Java技術(shù),它在底層采用Linux內(nèi)核和本地庫(kù),在上層提供Java支持框架和開(kāi)發(fā)接口。它借助于Linux強(qiáng) 大的穩(wěn)定
27、性、開(kāi)放性和可移植性,Java語(yǔ)言開(kāi)發(fā)的廣泛性、簡(jiǎn)單性和可移植性,一經(jīng)推出就受動(dòng)廣泛關(guān)注和歡迎,在嵌入式開(kāi)發(fā)中產(chǎn)生比較深遠(yuǎn)的影響。</p><p> Android的系統(tǒng)架構(gòu)采用了分層架構(gòu)的思想,如下圖所示。從上層到底層共包括四層,分別是應(yīng)用程序程序?qū)印?yīng)用框架層、系統(tǒng)庫(kù)和Android運(yùn)行時(shí)和Linux內(nèi)核。</p><p> 圖1 Android系統(tǒng)架構(gòu)圖</p>&
28、lt;p> 每層功能簡(jiǎn)要介紹如下:</p><p><b> 一 應(yīng)用程序?qū)?lt;/b></p><p> 該層提供一些核心應(yīng)用程序包,例如電子郵件、短信、日歷、地圖、瀏覽器和聯(lián)系人管理等。同時(shí),開(kāi)發(fā)者可以利用Java語(yǔ)言設(shè)計(jì)和編寫屬于自己的應(yīng)用程序,而這些程序與那些核心應(yīng)用程序彼此平等、友好共處。</p><p><b>
29、 二 應(yīng)用程序框架層</b></p><p> 該層是Android應(yīng)用開(kāi)發(fā)的基礎(chǔ),開(kāi)發(fā)人員大部分情況是在和她打交道。應(yīng)用程序框架層包括活動(dòng)管理器、窗口管理器、內(nèi)容提供者、視圖系統(tǒng)、包管理器、 電話管理器、資源管理器、位置管理器、通知管理器和XMPP服務(wù)十個(gè)部分。在Android平臺(tái)上,開(kāi)發(fā)人員可以完全訪問(wèn)核心應(yīng)用程序所使用的API框 架。并且,任何一個(gè)應(yīng)用程序都可以發(fā)布自身的功能模塊,而其他應(yīng)用程
30、序則可以使用這些已發(fā)布的功能模塊?;谶@樣的重用機(jī)制,用戶就可以方便地替換平臺(tái)本 身的各種應(yīng)用程序組件。</p><p> 三 系統(tǒng)庫(kù)和Android運(yùn)行時(shí)</p><p> 系統(tǒng)庫(kù)包括九個(gè)子系統(tǒng),分別是圖層管理、媒體庫(kù)、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。 Android運(yùn)行時(shí)包括核心庫(kù)和Dalvik虛擬機(jī),前者既兼容了大
31、多數(shù)Java語(yǔ)言所需要調(diào)用的功能函數(shù),又包括了Android的核心庫(kù),比如 android.os、android.net、android.media等等。后者是一種基于寄存器的java虛擬機(jī),Dalvik虛擬機(jī)主要是完成對(duì)生命周期的管理、堆棧的管理、線程的管理、安全和異常的管理以及垃圾回收等重要功能。</p><p><b> 四 Linux內(nèi)核</b></p><p&
32、gt; Android核心系統(tǒng)服務(wù)依賴于Linux2.6內(nèi)核,如安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。Linux內(nèi)核也是作為硬件與軟件棧的抽象層。驅(qū)動(dòng):顯示驅(qū)動(dòng)、攝像頭驅(qū)動(dòng)、鍵盤驅(qū)動(dòng)、WiFi驅(qū)動(dòng)、Audio驅(qū)動(dòng)、flash內(nèi)存驅(qū)動(dòng)、Binder(IPC)驅(qū)動(dòng)、電源管理等。</p><p> 由此可見(jiàn),Android的系統(tǒng)架構(gòu)采用分層架構(gòu)的思想,架構(gòu)清晰,層次分明,協(xié)同工作。</p>
33、<p> 1.3 課題的來(lái)源背景</p><p> 從2007年11月5日谷歌公司正式向外界展示了這款名為android的操作系統(tǒng)到如今(2014年5月),android操作系統(tǒng)已從最開(kāi)始的1.0版本到如今的4.4版本kitkat,系統(tǒng)性能達(dá)到質(zhì)的飛躍,UI界面更是在2.X時(shí)代升級(jí)到4.X時(shí)代的時(shí)候得到質(zhì)的改變,從而使得如今最新的4.4版本是一個(gè)非常優(yōu)秀的操作系統(tǒng)。</p><
34、p> 在ARM處理器方面,經(jīng)歷了經(jīng)典的ARM7、ARM9、ARM11等系列,如今Cortex系列更是成為了主流。而在cortex系列中,其cortex-A系列以其開(kāi)放式操作系統(tǒng)的高性能處理器的特點(diǎn)性能更是遠(yuǎn)高于面向?qū)崟r(shí)應(yīng)用的卓越性能的Cortex-R 系列 和面向具有確定性的微控制器應(yīng)用的Cortex-M 系列。Cortex-A系列較為高端的系列亦分為A8、A9、A15乃至字長(zhǎng)為64位的A50系列。在如今的智能手機(jī)領(lǐng)域,A8、A
35、9等系列被廣泛應(yīng)用。</p><p> 在短距離無(wú)線通信方面,藍(lán)牙已經(jīng)是一種非常普遍,性價(jià)比高的短距離無(wú)線通信工具。只要是智能手機(jī),都會(huì)搭載藍(lán)牙模塊,這也就意味著,本課題的短距離無(wú)線通信工具材料來(lái)源異常豐富,可謂隨手可得。</p><p> 1.4國(guó)內(nèi)外研究狀況</p><p> 在智能家居系統(tǒng)研發(fā)方面,亦即包含無(wú)線開(kāi)關(guān)控制,美國(guó)及一些歐洲國(guó)家一直處于領(lǐng)先地位
36、。近年來(lái),以美國(guó)微軟公司及摩托羅拉公司等為首的一批國(guó)外知名企業(yè),先后擠身于智能家居的研發(fā)中。例如:微軟公司開(kāi)發(fā)的“夢(mèng)幻之家”、摩托羅拉公司開(kāi)發(fā)的“居所之門”、IBM公司開(kāi)發(fā)的“家庭主任”等均已日趨成穩(wěn)得技術(shù)強(qiáng)占家居市場(chǎng)。此外,日韓新等國(guó)的龍頭企業(yè)紛紛致力于家居智能化的開(kāi)發(fā),對(duì)家居市場(chǎng)更是躍躍欲試。</p><p> 20世紀(jì)90年代后期,我國(guó)的智能小區(qū)日益興起。眾所周知,我國(guó)的智能化住宅建設(shè)最早起于上海、廣州和
37、深圳等沿海城市,并逐漸向內(nèi)陸發(fā)展。在97香港回歸之際,在建設(shè)部“97跨世紀(jì)住宅小區(qū)案競(jìng)賽活動(dòng)”中,上海中皇廣場(chǎng)被建設(shè)部科技委員會(huì)列為全國(guó)首家“智能住宅示范工程”,揭開(kāi)了全國(guó)智能小區(qū)發(fā)展的序幕。</p><p> 我國(guó)的智能家居相對(duì)于國(guó)外起步較晚, 尚未形成一定的國(guó)家標(biāo)準(zhǔn)。目前,主要采用國(guó)外的一些技術(shù)產(chǎn)品,但也有一些企業(yè)推出了自己的產(chǎn)品,主要有:e家庭(海爾)、e-home數(shù)字家園(清華同方)等。<
38、;/p><p> 國(guó)內(nèi)各大軟、硬件機(jī)構(gòu)正在積極的研制、開(kāi)發(fā)更為符合市場(chǎng)的智能化家居設(shè)備,以解決當(dāng)前智能化產(chǎn)品實(shí)用性差、使用復(fù)雜及產(chǎn)品價(jià)格昂貴等缺點(diǎn),而技術(shù)創(chuàng)新性也逐步向國(guó)際先進(jìn)水平靠攏,這樣的未來(lái)值得期待。</p><p> 由于安卓操作系統(tǒng)是近幾年才流行起來(lái)的,基于安卓智能手機(jī)控制的領(lǐng)域可謂相對(duì)以前的常規(guī)無(wú)線控制較為新鮮。</p><p><b> 1
39、.5系統(tǒng)總體方案</b></p><p> 1.5.1 設(shè)計(jì)要求</p><p> 本次設(shè)計(jì)要求設(shè)計(jì)出一個(gè)基于安卓智能手機(jī)控制的智能無(wú)線開(kāi)關(guān)系統(tǒng)。通過(guò)實(shí)現(xiàn)從手機(jī)端發(fā)送藍(lán)牙信號(hào)無(wú)線控制ARM核心板上的LED燈的亮滅來(lái)達(dá)到無(wú)線控制開(kāi)關(guān)的功能。本次設(shè)計(jì)要求懂得一定的C語(yǔ)言以及JAVA語(yǔ)言知識(shí),對(duì)嵌入式系統(tǒng)的驅(qū)動(dòng)程序編程以及安卓應(yīng)用程序編程有一定的了解,以及熟悉數(shù)、模電等電路知識(shí)。
40、</p><p> 1.5.2 硬件的選?。?lt;/p><p> 1)安卓智能手機(jī):對(duì)此不作出太大要求,只要有足夠的ROM空間能夠安裝藍(lán)牙控制的APP即可。</p><p> 2)藍(lán)牙接收模塊:本模塊分主機(jī)和從機(jī),主機(jī)能和從機(jī)配對(duì)通信,從機(jī)與從機(jī)之間或主機(jī)與主機(jī)之間不能通信,從機(jī)能和電腦、手機(jī)等的藍(lán)牙配對(duì)通信,購(gòu)買時(shí)默認(rèn)為從機(jī)。我們?cè)谧鰺o(wú)線開(kāi)關(guān)控制時(shí),藍(lán)牙模塊主
41、要是實(shí)現(xiàn)接收從手機(jī)端發(fā)送過(guò)來(lái)的指令,所以我們需要的是從機(jī)模塊。。</p><p> 3)ARM開(kāi)發(fā)板(附帶LED燈):此處之所以不選擇我們熟悉的傳統(tǒng)的51系列8位單片機(jī)而選擇32位的基于cotex-A8內(nèi)核的S5PV210處理器,是為了增加課題的新穎性以及挑戰(zhàn)32位的ARM的驅(qū)動(dòng)程序編程,該開(kāi)發(fā)板搭載的是Android2.3系統(tǒng)。</p><p> 1.5.3軟件的設(shè)計(jì):</p&
42、gt;<p> 1)Android的應(yīng)用程序設(shè)計(jì):需熟悉JAVA語(yǔ)言以及android應(yīng)用程序設(shè)計(jì)。</p><p> 2)UART串口初始化程序:鑒于我們的藍(lán)牙模塊是通過(guò)串口與ARM核心板進(jìn)行通信,故需要我們對(duì)arm板上的uart口進(jìn)行一系列的初始化。</p><p> 3)LED燈的驅(qū)動(dòng)程序設(shè)計(jì):由于arm開(kāi)發(fā)板上的android系統(tǒng)是基于linux內(nèi)核的,故此處需
43、要充分了解linux系統(tǒng)的驅(qū)動(dòng)程序設(shè)計(jì),從而才能熟練寫出LED燈的驅(qū)動(dòng)程序。</p><p> 圖2 整體結(jié)構(gòu)方案圖</p><p><b> 2 開(kāi)發(fā)環(huán)境的搭建</b></p><p> 2.1 Linux開(kāi)發(fā)環(huán)境搭建</p><p> 2.1.1 關(guān)于Linux系統(tǒng)</p><p>
44、 Linux操作系統(tǒng)誕生于1991 年的10 月5 日(這是第一次正式向外公布的時(shí)間),其是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個(gè)基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。</p><p> Linux用途廣
45、泛,可安裝在各種計(jì)算機(jī)硬件設(shè)備中,比如手機(jī)、平板電腦、路由器、視頻游戲控制臺(tái)、臺(tái)式計(jì)算機(jī)、大型機(jī)和超級(jí)計(jì)算機(jī)。嚴(yán)格來(lái)講,Linux這個(gè)詞本身只表示Linux內(nèi)核,但實(shí)際上人們已經(jīng)習(xí)慣了用Linux來(lái)形容整個(gè)基于Linux內(nèi)核,并且使用GNU 工程各種工具和數(shù)據(jù)庫(kù)的操作系統(tǒng)。</p><p> Linux存在著許多不同的Linux版本,有我們熟悉的Ubuntu、RedHat、Debian、SUSE等等,雖然各家公
46、司的Linux系統(tǒng)略有不同,但它們都使用了Linux內(nèi)核。在本次設(shè)計(jì)中我們選擇市場(chǎng)上較為普遍的Ubuntu系統(tǒng)。</p><p> 2.1.2 關(guān)于GNU</p><p> GNU計(jì)劃,又稱革奴計(jì)劃,是由Richard Stallman在1983年9月27日公開(kāi)發(fā)起的。它的目標(biāo)是創(chuàng)建一套完全自由的操作系統(tǒng)。Richard Stallman最早是在net.unix-wizards新聞組上
47、公布該消息,并附帶一份《GNU宣言》等解釋為何發(fā)起該計(jì)劃的文章,其中一個(gè)理由就是要“重現(xiàn)當(dāng)年軟件界合作互助的團(tuán)結(jié)精神”。為保證GNU軟件可以自由地“使用、復(fù)制、修改和發(fā)布”,所有GNU軟件都有一份在禁止其他人添加任何限制的情況下授權(quán)所有權(quán)利給任何人的協(xié)議條款,GNU通用公共許可證(GNU General Public License,GPL)。即“反版權(quán)”(或稱Copyleft)概念。</p><p> GNU
48、計(jì)劃最終并沒(méi)有如Richard Stallman所愿,創(chuàng)建出一套完全自由的操作系統(tǒng),但是卻創(chuàng)造出了vi編輯器、gcc編譯器、gdb調(diào)試器等一大堆自由軟件。最終GNU工程各種工具和數(shù)據(jù)庫(kù)和我們熟悉的Linux內(nèi)核組建成我們熟悉的Linux操作系統(tǒng)。本次設(shè)計(jì)中就是使用vi編輯器、gcc編譯器、gdb調(diào)試器等工具在Linux平臺(tái)下編輯LED燈的驅(qū)動(dòng)程序和UART的初始化程序。</p><p> 2.1.3 利用Vmw
49、are虛擬機(jī)搭建Linux開(kāi)發(fā)環(huán)境</p><p><b> 1)安裝虛擬機(jī)</b></p><p> 直接雙擊打開(kāi)VMware-workstation-9.0.1.exe,輸入相應(yīng)序列號(hào)即可成功安裝虛擬機(jī)。</p><p> 2)安裝Ubuntu系統(tǒng)</p><p> 根據(jù)百度經(jīng)驗(yàn)逐步進(jìn)行安裝:</p&g
50、t;<p> http://jingyan.baidu.com/article/14bd256e0ca52ebb6d26129c.html</p><p> 3)搭建交叉編譯環(huán)境</p><p> 由于我們要在X86環(huán)境下的ubuntu系統(tǒng)編譯出能在ARM環(huán)境下運(yùn)行的可執(zhí)行程序,所以我們必須要通過(guò)交叉編譯。則需要安裝交叉編譯器(cross compiler)。此處我們選
51、擇交叉編譯工具:arm-linux- 4.2.2</p><p><b> 搭建步驟</b></p><p> 1) 在/usr/local/下建立交叉編譯器的安裝目錄arm:</p><p> sudo mkdir /usr/local/arm</p><p> 2)將下載的交叉編譯器包解
52、壓到/usr/local/arm目錄下:</p><p> sudo tar jxvf cross-4.2.2-eabi.tar.bz2 -C /usr/local/arm/ </p><p> 3)解壓成功后,修改PATH環(huán)境變量:</p><p> sudo vim /etc/profile</p><p>
53、 在文件為加入交叉編譯器arm-linux-所在的路徑:</p><p> export PATH=$PATH:/usr/local/arm/4.2.2-eabi/usr/bin</p><p><b> 然后退出vim。</b></p><p> 4) 更新一下配置文件/etc/profile:</p><
54、p> source /etc/profile</p><p><b> 5)工具安裝成功:</b></p><p> 以上工具只是用來(lái)編譯驅(qū)動(dòng)程序,由于我們的arm開(kāi)發(fā)板跑的是android系統(tǒng),若要編譯出能在其上運(yùn)行的可執(zhí)行C文件,普通的arm-linux-gcc編譯器并無(wú)此能力,此時(shí)則需要android的mk文件,也就是需要android系統(tǒng)的源代碼。
55、</p><p><b> 具體下載過(guò)程見(jiàn):</b></p><p> http://jingyan.baidu.com/article/c85b7a641200e0003bac95a3.html</p><p> 為了使開(kāi)發(fā)板能與pc機(jī)通信,則需要在windows下安裝SecureCRT 5.2。安裝完畢后二者通過(guò)串口進(jìn)行通信。<
56、/p><p> 2.2 安卓應(yīng)用開(kāi)發(fā)環(huán)境搭建</p><p> 2.2.1 關(guān)于Eclipse軟件</p><p> Eclipse 是一個(gè)開(kāi)放源代碼的、基于Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java開(kāi)發(fā)工具(Java Development Kit
57、,JDK)。由于android應(yīng)用程序是用java語(yǔ)言編寫的,所以我們的android應(yīng)用自然也是用Eclipse工具編寫。</p><p> 2.2.2 android SDK開(kāi)發(fā)環(huán)境搭建</p><p> 1)java JDK安裝</p><p> 進(jìn)入oracle官網(wǎng)http://www.oracle.com 下載最新jdk-6u22-windows-i
58、586.exe,雙擊開(kāi)始安裝JDK,路徑選擇c盤(也可以是其他路徑),安裝完設(shè)置java環(huán)境變量。設(shè)置方法如下:</p><p> 我的電腦點(diǎn)右鍵屬性高級(jí)進(jìn)入環(huán)境變量設(shè)置</p><p><b> 設(shè)置path變量</b></p><p> 在系統(tǒng)變量里找到path變量,選擇編輯在變量值的最后追加</p><p>
59、 ;C:\ jdk1.6.0_22\bin</p><p> 設(shè)置classpath環(huán)境變量</p><p> 在系統(tǒng)環(huán)境變量那一欄中點(diǎn)新建</p><p> 變量名:classpath,</p><p> 變量值:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;</p&g
60、t;<p> 設(shè)置JAVA_HOME</p><p> 在系統(tǒng)環(huán)境變量那一欄中點(diǎn)新建</p><p> 變量名:JAVA_HOME</p><p> 變量值:C:\ jdk1.6.0_22</p><p><b> 檢驗(yàn)JAVA環(huán)境:</b></p><p> 打開(kāi)cmd
61、命令行,輸入javac:如顯示如下界面</p><p> 圖3 檢驗(yàn)JAVA環(huán)境</p><p> 則表示安裝成功,否則則應(yīng)仔細(xì)檢查以上配置是否正確操作,至此java環(huán)境安裝完成。</p><p> 2)adt-bundle-windows安裝</p><p> 進(jìn)入android官網(wǎng):http://developer.android
62、.com/sdk/index.html</p><p> 下載adt-bundle-windows.zip,此工具集合了Eclipse軟件、android SDK、ADT等插件,下載后直接解壓打開(kāi)即可使用。</p><p> 至此,常規(guī)的android SDK開(kāi)發(fā)環(huán)境已成功搭建,也就是可以直接開(kāi)發(fā)一般的android應(yīng)用程序了。</p><p> 2.2.3
63、android NDK 開(kāi)發(fā)環(huán)境搭建</p><p> 由于我們的接收端ARM核心板上需要運(yùn)行一個(gè)android應(yīng)用程序,用來(lái)讀取UART串口的藍(lán)牙模塊發(fā)送來(lái)的信息,以及對(duì)LED燈等硬件進(jìn)行操作,但是我們用常規(guī)的SDK開(kāi)發(fā)出來(lái)的android應(yīng)用程序時(shí)用純java語(yǔ)言寫出來(lái)的。眾所周知,我們的java語(yǔ)言對(duì)uart串口、led燈等硬件的操控?zé)o能為力,此時(shí)我們自然會(huì)想到以操作硬件聞名的C語(yǔ)言了。此時(shí)也就是需要一種
64、從java語(yǔ)言里調(diào)用C語(yǔ)言的機(jī)制,那就是JNI了。因此,為了實(shí)現(xiàn)java語(yǔ)言調(diào)用C語(yǔ)言的功能,我們還得再搭建一個(gè)android NDK開(kāi)發(fā)的環(huán)境。</p><p> 進(jìn)入android官網(wǎng):</p><p> http://developer.android.com/tools/sdk/ndk/index.html#Downloads</p><p> 下載a
65、ndroid-ndk-r9d-windows-x86.zip解壓都任意目錄,然后打開(kāi)Eclipse,點(diǎn)Window->Preferences->Android->NDK,設(shè)置NDK路徑,如下圖所示:</p><p> 圖4 android NDK 開(kāi)發(fā)環(huán)境搭建</p><p> 設(shè)置完成點(diǎn)擊OK便完成android NDK開(kāi)發(fā)環(huán)境的搭建了。</p>&
66、lt;p><b> 3系統(tǒng)硬件的選取</b></p><p> 3.1關(guān)于ARM處理器</p><p> ARM處理器是由英國(guó)ARM公司設(shè)計(jì),由其眾多合作伙伴生產(chǎn)的一系列的RISC處理器的集合。它的發(fā)展由經(jīng)典的ARM7系列、ARM9系列、ARM11系列到現(xiàn)在流行的Cortex-A系列、Cortex-R系列和 Cortex-M系列。</p>
67、<p> ARM處理器的應(yīng)用領(lǐng)域十分廣闊:</p><p> 1 )工業(yè)控制領(lǐng)域:作為 32 的 RISC 架構(gòu),基于 ARM 核的微控制器芯片不但占據(jù)了高端微控制器市場(chǎng)的大部分市場(chǎng)份額,同時(shí)也逐漸向低端微控制器應(yīng)用領(lǐng)域擴(kuò)展, ARM 微控制器的低功耗、高性價(jià)比,向傳統(tǒng)的 8 位 /16 位微控制器提出了挑戰(zhàn)。 </p><p> 2 )無(wú)線通訊領(lǐng)域:目前已有超過(guò) 85%
68、的無(wú)線通訊設(shè)備采用了 ARM 技術(shù), ARM 以其高性能和低成本,在該領(lǐng)域的地位日益鞏固。 </p><p> 3 )消費(fèi)類電子產(chǎn)品: ARM 技術(shù)在目前流行的數(shù)字音頻播放器、數(shù)字機(jī)頂盒和游戲機(jī)中得到廣泛采用。 4)成像和安全產(chǎn)品:現(xiàn)在流行的數(shù)碼相機(jī)和打印機(jī)中絕大部分采用 ARM 技術(shù)。手機(jī)中的 32位 SIM 智能卡也采用了 ARM 技術(shù)。 除此以外, ARM 微處理器及技術(shù)還應(yīng)用到許多不
69、同的領(lǐng)域,并會(huì)在將來(lái)取得更加廣泛的應(yīng)用 </p><p> ARM處理器應(yīng)用如此廣泛,是因?yàn)槠鋼碛腥缦乱幌盗械奶攸c(diǎn):</p><p> 1)體積小、低功耗、低成本、高性能;</p><p> 2)支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件;</p><p> 3)大量使用寄存器,指令執(zhí)行速度更快;
70、</p><p> 4)大多數(shù)數(shù)據(jù)操作都在寄存器中完成;</p><p> 5)尋址方式靈活簡(jiǎn)單,執(zhí)行效率高;</p><p><b> 6)指令長(zhǎng)度固定;</b></p><p><b> 7)眾多合作伙伴。</b></p><p> 本次設(shè)計(jì)中,在信號(hào)接收端我們
71、使用三星公司設(shè)計(jì)的s5pv210處理器(又名“蜂鳥(niǎo)”),其采用了Cortex-A8內(nèi)核,ARM V7指令集,主頻可達(dá)1GHZ,64/32位內(nèi)部總線結(jié)構(gòu),32/32KB的數(shù)據(jù)/指令一級(jí)緩存,512KB的二級(jí)緩存,可以實(shí)現(xiàn)2000DMIPS(每秒運(yùn)算2億條指令集)的高性能運(yùn)算能力。 </p&g
72、t;<p> 圖5 S5PV210</p><p> 3.2 GEC210開(kāi)發(fā)板簡(jiǎn)介</p><p> GEC210是一款高性能的CortexA8開(kāi)發(fā)板,其采用三星S5PV210作為主處理器,運(yùn)行主頻可高 1GHz。S5PV210內(nèi)部集成了PowerVRSGX540高性能圖形引擎,支持3D圖形流暢運(yùn)行,并可流暢播放1080P大尺寸視頻。</p><
73、p> GEC210板載512MDDR2內(nèi)存,可流暢運(yùn)行Android,Linux和WinCE6等高級(jí)操作系統(tǒng)。它非常適合開(kāi)發(fā)高端物聯(lián)網(wǎng)終端,廣告多媒體終端,智能家居,高端監(jiān)控系統(tǒng),游戲機(jī)控制板等設(shè)備。本次設(shè)計(jì)其運(yùn)行的是Android2.3操作系統(tǒng)。</p><p> 圖6 GEC210開(kāi)發(fā)板</p><p><b> 硬件配置</b></p>
74、<p><b> CPU處理器</b></p><p> SamsungS5PV210,基于CortexTM-A8,運(yùn)行主頻1GHz</p><p> 內(nèi)置PowerVRSGX540高性能圖形引擎,支持流暢的2D/3D圖形加速</p><p> 最高可支持1080p@30fps硬件解碼視頻流暢播放,格式可為MPEG4,H.
75、263,H.264等</p><p> 最高可支持1080p@30fps硬件編碼(Mpeg-2/VC1)視頻輸出</p><p><b> DDR2RAM內(nèi)存</b></p><p> Size:512MB</p><p> 32bit數(shù)據(jù)總線,單通道</p><p> 運(yùn)行頻率:200
76、MHz</p><p><b> FLASH存儲(chǔ)</b></p><p> SLCNANDFlash:256MB(標(biāo)配)/1GB</p><p><b> 軟件支持</b></p><p> gecboot-210</p><p> Android2.3+Linux
77、-2.6.35</p><p> Android4.0(暫提供預(yù)覽版映像文件)</p><p> Linux-2.6.35+Qtopia-2.2.0/Qt-4.4.3/Qt-4.7</p><p> WindowsCE6</p><p><b> 主要功能特性:</b></p><p>
78、 1. 集成USB 2.0 Hub: 擴(kuò)展出2個(gè)USB Host口2. 串口: 4路,其中1路已經(jīng)轉(zhuǎn)換為RS232,并通過(guò)DB9座引出(COM0),同時(shí)通過(guò)4pin的排針將其他3路引出, 3. 中斷式按鍵: 8個(gè),分別定義不同的功能 4. RJ45網(wǎng)口: 網(wǎng)卡采用DM9000AEP,10/100M自適應(yīng) 5. 音頻輸入與輸出: 采用WM8960專業(yè)音頻芯片,在板麥克風(fēng),內(nèi)含Class D功放,并支持
79、HDMI音頻和視頻同步輸出 (1080P)</p><p> 6.VGA輸出, 1600x1200 @ 100HZ</p><p> 7. USB Slave: 1路,符合USB 2.0規(guī)范 8. 紅外接收頭:1個(gè) 9. ADC輸入:其中AIN0連接了在板可掉電阻,用于測(cè)試 10. 蜂鳴器:1路,由PWM0控制 11. EEPROM: A
80、T24C08(256 Byte),用于I2C測(cè)試 12. LCD接口:2個(gè)LCD接口,均為40 Pin 0.5mm間距貼片座, 13. SDIO接口:用于連接SD WiFi模塊等 14. CMOS Camera: 用于連接CMOS攝像頭 15. RTC時(shí)鐘:帶備份電池 16. PCB層數(shù):2 17. PCB尺寸:180 x 130mm,可方便固定各種LCD模塊,尤其
81、是7寸LCD模塊 18. 供電:DC-5V</p><p> 3.3 藍(lán)牙HC-06模塊的簡(jiǎn)介</p><p> 本次設(shè)計(jì)采用民用級(jí)藍(lán)牙模塊HC-06,它通過(guò)UART連接到GEC210底板上與S5PV210進(jìn)行通信。</p><p> 圖7 藍(lán)牙HC-06</p><p><b> 圖8 模塊原理圖</
82、b></p><p> 3.3.1 HC-06模塊特征</p><p><b> 1、無(wú)線收發(fā)</b></p><p> Ø 靈敏度(誤碼率)達(dá)到 -80dBm</p><p> Ø -4 -> 6dBm 功率可調(diào)輸出</p><p> 2、性能概要 完整
83、的藍(lán)牙解決方案</p><p> Ø 藍(lán)牙2.0 帶EDR, 2Mbps-3Mbps 調(diào)制度</p><p> Ø 內(nèi)置 2.4GHz 天線, 用戶無(wú)需調(diào)試天線</p><p> Ø 外置 8Mbit FLASH</p><p> Ø 低電壓3.3V 工作(3.1V~4.2V)配對(duì)時(shí)30~40M
84、A 波動(dòng),配對(duì)完畢通信8MA</p><p> Ø 可選PIO 控制</p><p> Ø 標(biāo)準(zhǔn)HCI 端口(UART or USB)</p><p> Ø USB 協(xié)議: Full Speed USB1.1, Compliant With 2.0</p><p> Ø 模塊可以作為SMD 貼片
85、工藝</p><p><b> Ø RoHS 制程</b></p><p><b> Ø 引腳半孔工藝</b></p><p> Ø 數(shù)字2.4GHz 無(wú)線收發(fā)射</p><p> Ø CSR BC04 藍(lán)牙芯片技術(shù)</p><p&
86、gt;<b> Ø 自適應(yīng)跳頻技術(shù)</b></p><p> Ø 體積小,(27mm×13mm×2mm)</p><p> Ø 簡(jiǎn)單的外圍設(shè)計(jì)電路</p><p> Ø 藍(lán)牙Class 2 功率級(jí)別</p><p> Ø 存儲(chǔ)溫度:-40 至
87、+85 度,工作溫度:-25 至+75 度</p><p> Ø 協(xié)波干擾:2.4MHz,發(fā)射功率 3 dBm</p><p> Ø 誤碼率:0,但會(huì)在傳輸鏈路產(chǎn)生信號(hào)衰變,才有誤碼,如RS232 和TTL 線路處理線路</p><p><b> 中</b></p><p><b>
88、 3、低功耗</b></p><p> 4、高性能無(wú)線收發(fā)系統(tǒng)</p><p><b> 5、低成本</b></p><p><b> 6、應(yīng)用領(lǐng)域</b></p><p><b> Ø 藍(lán)牙車載免提</b></p><p>
89、;<b> Ø 藍(lán)牙GPS</b></p><p> Ø 藍(lán)牙PCMCIA , USB Dongle</p><p><b> Ø 藍(lán)牙數(shù)據(jù)傳送</b></p><p><b> 7、軟件</b></p><p><b>
90、216; CSR</b></p><p> 3.3.2 AT 指令集 (對(duì)藍(lán)牙模塊進(jìn)行測(cè)試)</p><p> 進(jìn)入AT 指令的方法:給模塊上電,不配對(duì)的情況下,就是AT 模式了。指令間隔1S 左右。</p><p> 出廠參數(shù):波特率9600N81,名字linvor,密碼1234</p><p><b> 1、
91、測(cè)試通訊</b></p><p> 發(fā)送:AT(返回OK,一秒左右發(fā)一次)</p><p><b> 返回:OK</b></p><p> 2、改藍(lán)牙串口通訊波特率</p><p> 發(fā)送:AT+BAUD1</p><p><b> 返回:OK1200</b&
92、gt;</p><p> 發(fā)送:AT+BAUD2</p><p><b> 返回:OK2400</b></p><p><b> ……</b></p><p> 1---------1200</p><p> 2---------2400</p>&l
93、t;p> 3---------4800</p><p> 4---------9600(默認(rèn)就是這個(gè)設(shè)置)</p><p> 5---------19200</p><p> 6---------38400</p><p> 7---------57600</p><p> 8---------115
94、200</p><p> 9---------230400</p><p> A---------460800</p><p> B---------921600</p><p> C---------1382400</p><p> Ø 設(shè)置超過(guò)115200 后用電腦無(wú)法使用,要用單片機(jī)編程于高于
95、115200 才能使用此波特</p><p> 率和重新發(fā)AT 命令設(shè)低波特率</p><p> Ø 用AT 命令設(shè)好波特率后,下次上電使用不需再設(shè),可以掉電保存波特率。</p><p><b> 3、改藍(lán)牙名稱</b></p><p> 發(fā)送:AT+NAMEname</p><p&
96、gt;<b> 返回:OKname</b></p><p> 參數(shù)name:所要設(shè)置的當(dāng)前名稱,即藍(lán)牙被搜索到的名稱。20 個(gè)字符以內(nèi)。</p><p> 例:發(fā)送AT+NAMEbill_gates</p><p><b> 返回OKname</b></p><p> 這時(shí)藍(lán)牙名稱改為bi
97、ll_gates</p><p> 參數(shù)可以掉電保存,只需修改一次。PDA 端刷新服務(wù)可以看到更改后的藍(lán)牙名稱,名字</p><p> 不可超過(guò)20 個(gè)字符。</p><p><b> 4、改藍(lán)牙配對(duì)密碼</b></p><p> 發(fā)送:AT+PINxxxx</p><p> 返回:OK
98、setpin</p><p> 參數(shù)xxxx:所要設(shè)置的配對(duì)密碼,4 個(gè)數(shù)字,此命令可用于從機(jī)或主機(jī)。從機(jī)是適配器或手</p><p> 機(jī)彈出要求輸入配對(duì)密碼窗口時(shí),手工輸入此參數(shù)就可以連接從機(jī)。主藍(lán)牙模塊搜索從機(jī)后,</p><p> 如果密碼正確,則會(huì)自動(dòng)配對(duì),主模塊除了可以連接配對(duì)從模塊外,其他產(chǎn)品包含從模塊的</p><p>
99、 時(shí)候也可以連接配對(duì),比如含藍(lán)牙的數(shù)碼相機(jī),藍(lán)牙GPS,藍(lán)牙串口打印機(jī),等等,特別地,</p><p> 藍(lán)牙GPS 為典型例子</p><p> 例:發(fā)送:AT+PIN8888</p><p> 返回:OKsetpin</p><p> 這時(shí)藍(lán)牙配對(duì)密碼改為8888,模塊在出廠時(shí)的默認(rèn)配對(duì)密碼是1234。</p>&
100、lt;p> 參數(shù)可以掉電保存,只需修改一次。</p><p> 5、無(wú)校驗(yàn)設(shè)置指令:(V1.5 版后支持)</p><p> AT+PN(默認(rèn)就是這個(gè)設(shè)置)</p><p> 6、偶校驗(yàn)設(shè)置指令:(V1.5 版后支持)</p><p><b> AT+PE</b></p><p>
101、 7、奇校驗(yàn)設(shè)置指令:(V1.5 版后支持)</p><p><b> AT+PO</b></p><p> 8、獲取AT 指令版本命令:AT+VERSION</p><p> 返回LinvorV1.n 則為正品</p><p><b> 4 系統(tǒng)軟件的設(shè)計(jì)</b></p>
102、<p> 4.1 相關(guān)軟件編程技術(shù)</p><p> 4.1.1 嵌入式C編程</p><p> Windows平臺(tái)下的普通C語(yǔ)言編程跟Linux平臺(tái)下的嵌入式C語(yǔ)言編程幾乎沒(méi)什么不同。主要差別只是在于編譯器、API等開(kāi)發(fā)工具的不同。但是,在嵌入式C編程的世界里,如果要編寫出嵌入式驅(qū)動(dòng)程序,僅僅是熟悉C語(yǔ)言是遠(yuǎn)遠(yuǎn)不夠的,還得精通嵌入式芯片工作原理(寄存器設(shè)定等),操作系統(tǒng)
103、原理(存儲(chǔ)空間分配等),除此之外,還需要了解基本的數(shù)模電的電路知識(shí)等硬件知識(shí)。可見(jiàn),嵌入式C編程比普通的C編程難度大多了。4.1.2 安卓JAVA編程</p><p> JAVA語(yǔ)言是典型的面向?qū)ο蟮恼Z(yǔ)言。面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言必須有描述對(duì)象及其相互之間關(guān)系的語(yǔ)言成分。這些程序設(shè)計(jì)語(yǔ)言可以歸納為以下幾類:系統(tǒng)中一切皆為對(duì)象;對(duì)象是屬性及其操作的封裝體;對(duì)象可按其性質(zhì)劃分為類,對(duì)象成為類的實(shí)例;實(shí)例關(guān)系和繼承關(guān)
104、系是對(duì)象之間的靜態(tài)關(guān)系;消息傳遞是對(duì)象之間動(dòng)態(tài)聯(lián)系的唯一形式,也是計(jì)算的唯一形式;方法是消息的序列。本次設(shè)計(jì)我們的android應(yīng)用程序用的是java語(yǔ)言,因此必須得對(duì)面向?qū)ο笏枷胗袀€(gè)深刻的認(rèn)識(shí)。</p><p> 4.2 系統(tǒng)底層軟件的設(shè)計(jì)</p><p> 本系統(tǒng)的底層軟件指LED燈的驅(qū)動(dòng)程序,測(cè)試程序以及UART串口的初始化程序,這些程序的編寫都是在ubuntu環(huán)境下用vi編輯器
105、編寫的。</p><p> 4.2.1 LED燈驅(qū)動(dòng)程序設(shè)計(jì)</p><p> 我們知道,要寫出硬件的驅(qū)動(dòng)程序,除了擁有必要的軟件編程能力之外,必須得熟悉硬件的工作原理。此驅(qū)動(dòng)程序的源文件名為:led_drv.c</p><p> 我們先查看LED燈的電路原理圖,通過(guò)查看GEC210開(kāi)發(fā)板核心版的schematic,可知原理圖如下:</p>&l
106、t;p> 圖9 LED燈的電路原理圖</p><p> 由圖可知,核心版上的4個(gè)led燈是與處理器的GPJ2_X引腳連接,根據(jù)二極管的工作原理,VDD_REG1_IO端為高電平,則只要把GPJ2_X端設(shè)置為低電平,led燈就會(huì)被點(diǎn)亮。</p><p> 再查此原理圖,可知GPJ2_X引腳與處理器的連接如下:</p><p> 圖10 GPJ2_X引腳
107、與處理器的連接</p><p> 此時(shí)則可知道要控制led的亮滅先執(zhí)行兩個(gè)步驟,第一:把管理GPJ2_X的控制寄存器GPJ2_CON相應(yīng)位設(shè)置為輸出模式,第二:把數(shù)據(jù)寄存器GPJ2DAT設(shè)置為輸出低電平。</p><p> 此驅(qū)動(dòng)程序的源文件名為:led_drv.c(具體內(nèi)容請(qǐng)見(jiàn)附錄)</p><p> led_drv.c核心代碼如下:</p>
108、<p> 1、驅(qū)動(dòng)模塊加載函數(shù):</p><p> static int __init gec210_led_dev_init(void) {</p><p><b> int ret;</b></p><p><b> int i;</b></p><p> for (i =
109、0; i < LED_NUM; i++) {</p><p> ret = gpio_request(led_gpios[i], "LED");//申請(qǐng)LED燈的I/O口</p><p> s3c_gpio_cfgpin(led_gpios[i], S3C_GPIO_OUTPUT);</p><p> gpio_set_value(l
110、ed_gpios[i], 1);</p><p><b> }</b></p><p> ret = misc_register(&gec210_led_dev); //注冊(cè)雜項(xiàng)設(shè)備</p><p> printk(DEVICE_NAME"\tinitialized\n");</p><p&
111、gt; return ret;</p><p><b> }</b></p><p> 2、驅(qū)動(dòng)模塊卸載函數(shù):</p><p> static void __exit gec210_led_dev_exit(void) {</p><p><b> int i;</b></p>
112、<p> for (i = 0; i < LED_NUM; i++) {</p><p> gpio_free(led_gpios[i]); //釋放I/O口</p><p><b> }</b></p><p> misc_deregister(&gec210_led_dev);//卸載雜項(xiàng)設(shè)備</p
113、><p><b> }</b></p><p> 3、定義ioctl函數(shù)</p><p> static long gec210_leds_ioctl(struct file *filp, unsigned int cmd,</p><p> unsigned long arg)</p><p&g
114、t;<b> {</b></p><p> printk("_IOC_NR(cmd)=%d arg=%d\n",_IOC_NR(cmd),(int)arg);</p><p> if( _IOC_TYPE(cmd) != LED_MAGIC )</p><p> return -EINVAL;</p>
115、<p> if( _IOC_NR(cmd) > MAX_NR ) </p><p> return -EINVAL;</p><p> switch( cmd ) {</p><p> case LED1: //設(shè)置LED1 的開(kāi)或者關(guān)</p><p> gpio_set_value(led_gpios[_IOC_
116、NR(cmd)],arg);</p><p> printk("led 1\n");</p><p><b> break;</b></p><p> case LED2: //設(shè)置LED2 的開(kāi)或者關(guān)</p><p> gpio_set_value(led_gpios[_IOC_NR(cm
117、d)],arg);</p><p> printk("led2\n");</p><p><b> break;</b></p><p> case LED3: //設(shè)置LED3 的開(kāi)或者關(guān)</p><p> gpio_set_value(led_gpios[_IOC_NR(cmd)],ar
118、g);</p><p> printk("led3\n");</p><p><b> break;</b></p><p> case LED4: //設(shè)置LED4 的開(kāi)或者關(guān)</p><p> gpio_set_value(led_gpios[_IOC_NR(cmd)],arg);<
119、;/p><p> printk("led4\n");</p><p><b> break;</b></p><p><b> default:</b></p><p> printk("default\n");</p><p>
120、 return -EINVAL;</p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> //把自定義的ioctl函數(shù)賦值給file_operations </p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于-安卓控制的智能無(wú)線開(kāi)關(guān)
- 基于安卓手機(jī)藍(lán)牙控制的智能小車設(shè)計(jì)
- 基于安卓手機(jī)藍(lán)牙控制的智能小車設(shè)計(jì)
- 基于安卓的智能家居遠(yuǎn)程控制系統(tǒng).pdf
- 畢業(yè)設(shè)計(jì)(論文)基于安卓手機(jī)藍(lán)牙控制的智能小車設(shè)計(jì)
- 基于安卓智能手機(jī)的智能車設(shè)計(jì).pdf
- 基于安卓智能家居App控制系統(tǒng)及用戶行為研究.pdf
- 基于安卓系統(tǒng)聯(lián)網(wǎng)智能車的設(shè)計(jì)和研究.pdf
- 基于安卓平臺(tái)可靠傳輸?shù)闹悄芗揖酉到y(tǒng).pdf
- 基于智能電視的安卓分享器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于單片機(jī)的wifi智能無(wú)線開(kāi)關(guān)
- 購(gòu)買安卓智能手機(jī)的前提
- 基于安卓系統(tǒng)的漢語(yǔ)智能聊天機(jī)器人.pdf
- 基于安卓的無(wú)線傳感溫室監(jiān)控系統(tǒng)的研究與應(yīng)用.pdf
- 面向智能家統(tǒng)居的安卓控制系設(shè)計(jì)與實(shí)現(xiàn).pdf
- 電力開(kāi)關(guān)柜無(wú)線智能控制器.pdf
- 基于安卓的智能家居網(wǎng)關(guān)的設(shè)計(jì)與研究.pdf
- 基于安卓與ZigBee技術(shù)的室內(nèi)智能家居系統(tǒng)設(shè)計(jì).pdf
- 基于安卓系統(tǒng)的手機(jī)視頻智能軟件設(shè)計(jì)與實(shí)現(xiàn).pdf
- 2014年安卓外文翻譯--安卓智能手機(jī)上的whatsapp messenger程序的取證分析
評(píng)論
0/150
提交評(píng)論