測控技術(shù)與儀器畢業(yè)論文側(cè)方位自動泊車小車設(shè)計_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p>  側(cè)方位自動泊車小車設(shè)計</p><p>  所在學(xué)院 </p><p>  專業(yè)班級 測控技術(shù)與儀器

2、 </p><p>  學(xué)生姓名 學(xué)號 </p><p>  指導(dǎo)教師 職稱 </p><p>  完成日期 年 月 </p><p><b>  摘 要</b></p>

3、<p>  隨著汽車產(chǎn)業(yè)的不斷升級,各家汽車公司和科技公司的新技術(shù)層出不窮,人工智能,自動駕駛,新能源等新興技術(shù)也逐步步入人們的日常生活之中。自動泊車既是汽車自動化和智能化進程中的核心技術(shù)之一,也是給人們提供了極大便利的一項技術(shù)。其中側(cè)方位停車是一種使用頻率很高的停車方式,本文針對側(cè)方位泊車這一實用性課題進行設(shè)計研究,探索相關(guān)的硬件設(shè)備及其相應(yīng)的軟件設(shè)計,以常見的智能小車為機械平臺,結(jié)合傳感器技術(shù)、電機舵機控制技術(shù)以及相應(yīng)

4、的軟件技術(shù)為一體來實現(xiàn)小車的各種功能。</p><p>  本設(shè)計主要開發(fā)一個能自動側(cè)方位泊車,自動避障和無線遙控的智能小車控制系統(tǒng)。設(shè)計以由紅外線傳感器的自動泊車、紅外線自動避障、藍牙遙控組成的硬件模塊結(jié)合軟件設(shè)計組成多功能智能小車,共同實現(xiàn)小車的前進倒退、轉(zhuǎn)向行駛、檢測障礙物后停止、人工遙控、自動根據(jù)車位泊車等功能。</p><p>  本設(shè)計以智能小車為平臺模擬汽車相應(yīng)模塊的功能,進

5、行實物仿真測試,經(jīng)過實驗調(diào)試小車能夠?qū)崿F(xiàn)正常行駛與停止、藍牙控制、自動避障、自動泊車等功能,達到了預(yù)期的目標和要求,對于實際的汽車自動化和智能化設(shè)計有一定的實用和參考價值。</p><p>  關(guān)鍵詞: 泊車,智能小車,紅外傳感器,藍牙</p><p><b>  Abstract</b></p><p>  With the upgrade

6、 of automobile industry, the endless new technology is developed by many automobile companies and scientific and technical corporation. New technology like artificial intelligence, automatic drive, new energy technology

7、is step into our daily life. Automatic drive is not only a core technology for automate and intelligentise of automobile, but also a convenient technology for our daily life. The parallel parking is the one of most used

8、functions of parking ,this article conducts </p><p>  This design mainly develop control system of auto parking, avoiding obstacle, Bluetooth control for an intelligence vehicle .The system use infrared sens

9、or module to conduct auto parking and avoiding obstacle ,the Bluetooth module to control and driver module to power the motor and servo ,to realize the functions like moving forward and backward, turn right and left, con

10、trol the motor speed and turning angle , detect the obstacle ,remote control ,automatic parking.</p><p>  This design use intelligence vehicle to simulate the functions of automobile, whose module divide int

11、o different simulation test. After the test of various experiments shows that the intelligence vehicle can achieve the regular drive and stop ,Bluetooth control, avoid obstacle itself and auto parking which can provide s

12、ome practical and reference value for the automate and intelligentize of real automobile.</p><p>  Key words: parallel parking ,intelligence vehicle ,infrared sensor ,Bluetooth</p><p><b> 

13、 目 錄</b></p><p><b>  1 緒論5</b></p><p>  1.1 研究背景5</p><p>  1.2 國內(nèi)外研究現(xiàn)狀7</p><p>  1.3 論文的研究內(nèi)容與組織結(jié)構(gòu)7</p><p>  2 硬件系統(tǒng)綜合設(shè)計9</p>

14、<p>  2.1智能小車行駛系統(tǒng)10</p><p>  2.1.1智能小車動力系統(tǒng)10</p><p>  2.1.2 智能小車轉(zhuǎn)向系統(tǒng)12</p><p>  2.2智能小車信息采集模塊13</p><p>  2.2.1 紅外避障傳感器的原理13</p><p>  2.2.2 紅外避障

15、傳感器的結(jié)構(gòu)14</p><p>  2.3智能小車通訊系統(tǒng)15</p><p>  2.3.1 藍牙通信原理15</p><p>  2.3.1 藍牙通信過程17</p><p>  3 智能小車軟件設(shè)計與實現(xiàn)18</p><p>  3.1 Arduino軟件綜合系統(tǒng)19</p><

16、p>  3.1.1 Arduino電機馬達驅(qū)動19</p><p>  3.1.2 Arduino舵機驅(qū)動20</p><p>  3.1.3 多路紅外傳感器的數(shù)據(jù)采集及分析21</p><p>  3.1.4 藍牙通訊的接受與發(fā)送22</p><p>  3.2 Android軟件綜合系統(tǒng)22</p>&l

17、t;p>  3.2.1 基于Android的藍牙通訊23</p><p>  3.2.2 智能小車控制程序25</p><p>  4 路徑規(guī)劃設(shè)計1</p><p>  4.1 實際泊車路徑分析1</p><p>  4.2泊車路徑模型分析2</p><p>  4.3智能小車泊車路徑規(guī)劃3<

18、/p><p><b>  結(jié)論1</b></p><p><b>  參考文獻1</b></p><p><b>  致謝1</b></p><p><b>  1 緒論</b></p><p><b>  1.1 研究

19、背景</b></p><p>  隨著智能汽車概念的興起,相關(guān)的技術(shù)也在不斷地升級與融合之中,無人駕駛汽車的概念也隨之被不斷提及,相關(guān)的產(chǎn)品也不斷的推出。無人駕駛汽車是自動化載具的一種,具有傳統(tǒng)汽車的運輸能力。作為自動化載具,自動駕駛汽車不需要人為操作即能感測其環(huán)境及導(dǎo)航。完全的自動駕駛汽車仍未全面商用化,大多數(shù)均為原型機及展示系統(tǒng),部分可靠技術(shù)才下放至商用車型。</p><p&g

20、t;  而在眾多無人駕駛技術(shù)中,自動泊車是人們平時使用頻率很高的一種技術(shù),汽車用戶幾乎每天都會面對這種情況,并且大部分車輛損壞的原因,多半不是重大交通事故,而是在泊車時發(fā)生的碰撞,這給用戶帶來了很多損失與不便。因此,關(guān)于自動泊車的技術(shù),各家汽車公司和科技公司也在不斷地推陳出新,不斷地優(yōu)化和提升自動泊車的性能與使用體驗。同時,世界各國政府也相繼出臺了很多政策與目標,推動相關(guān)技術(shù)的發(fā)展,進一步推動了汽車自動化智能化的進程。</p>

21、;<p>  自動駕駛汽車的展示系統(tǒng)可追溯至1920年代及1930年代間,第一輛能真正自動駕駛的汽車則出現(xiàn)于1980年代。1984年,卡內(nèi)基美隆大學(xué)推動Navlab計劃與ALV計劃;1987年,梅賽德斯-奔馳與德國慕尼黑聯(lián)邦國防大學(xué)共同推行尤里卡普羅米修斯計劃。從此以后,許多大型公司與研究機構(gòu)開始制造可運作的自動駕駛汽車原型。21世紀以后,伴隨著資訊科技的進步,更是突飛猛進,特斯拉汽車率先推出了特定環(huán)境下的自駕車,而汽車工

22、業(yè)人士估計2030年以前就會量產(chǎn)出現(xiàn)。</p><p>  目前,美國國家公路交通安全管理局(NHTSA)已提出正式的分類系統(tǒng):</p><p>  等級0:即無自動。駕駛隨時掌握著車輛的所有機械、物理功能,僅配備警報裝置等等無關(guān)主動駕駛的功能也算在內(nèi)。</p><p>  等級1:駕駛?cè)瞬僮鬈囕v,但個別的裝置有時能發(fā)揮作用,如電子穩(wěn)定程式(ESP)或防鎖死剎車系統(tǒng)

23、(ABS)可以幫助行車安全。</p><p>  等級2:駕駛?cè)酥饕刂栖囕v,但系統(tǒng)階調(diào)地自動化,使之明顯減輕操作負擔,例如主動式巡航定速(ACC)結(jié)合自動跟車和車道偏離警示,而自動緊急煞停系統(tǒng)(AEB)透過盲點偵測和汽車防撞系統(tǒng)的部分技術(shù)結(jié)合。</p><p>  等級3:駕駛?cè)诵桦S時準備控制車輛,自動駕駛輔助控制期間,如在跟車時雖然可以暫時免于操作,但當汽車偵測到需要駕駛?cè)说那樾螘r,會

24、立即回歸讓駕駛?cè)私庸芷浜罄m(xù)控制,駕駛必須接手因應(yīng)系統(tǒng)無力處理的狀況。</p><p>  等級4:駕駛?cè)丝稍跅l件允許下讓車輛完整自駕,啟動自動駕駛后,一般不必介入控制,此車可以按照設(shè)定之道路通則(如高速公路中,平順的車流與標準化的路標、明顯的提示線),自己執(zhí)行包含轉(zhuǎn)彎、換車道與加速等工作,除了嚴苛氣候或道路模糊不清、意外,或是自動駕駛的路段已經(jīng)結(jié)束等等,系統(tǒng)并提供駕駛?cè)恕白銐驅(qū)捲VD(zhuǎn)換時間”,駕駛應(yīng)監(jiān)看車輛運作,

25、但可包括有旁觀下的無人停車功能。(有方向盤自動車)</p><p>  等級5:駕駛?cè)瞬槐卦谲噧?nèi),任何時刻都不會控制到車輛。此類車輛能自行啟動駕駛裝置,全程也不須開在設(shè)計好的路況,就可以執(zhí)行所有與安全有關(guān)之重要功能,包括沒有人在車上時的情形,完全不需受駕駛意志所控,可以自行決策。(無需方向盤自動車)</p><p>  現(xiàn)在大部分商用的汽車已經(jīng)達到了等級1的標準,部分高級一些的智能汽車達到

26、了等級2的水準,有些先進一些的智能汽車已經(jīng)能夠達到等級3的水準,但是仍然有一些安全上的隱患,一些科技公司的測試車型在測試中可以達到等級4,但是距離真正的自動駕駛?cè)匀挥胁恍〉牟罹?,要消除相?yīng)的的安全隱患,汽車產(chǎn)業(yè)還有不少的路要走。</p><p>  同樣,自動駕駛技術(shù)中的自動泊車技術(shù)也是如此,大部分的汽車還沒有裝載自動泊車裝置,部分高級汽車裝載了泊車輔助系統(tǒng),例如倒車雷達,倒車傳感器等,先進一些的智能汽車搭載了自

27、動泊車輔助系統(tǒng),但是這種系統(tǒng)并不是全自動的,用戶還是要親自控制,系統(tǒng)只是告訴用戶停車的時機而已。因此,設(shè)計開發(fā)一種響應(yīng)速度快,經(jīng)濟實用且穩(wěn)定可靠的智能汽車自動泊車系統(tǒng)也理所當然地成為自動駕駛技術(shù)研究和開發(fā)設(shè)計的焦點。</p><p>  本文就側(cè)方位自動泊車這一課題開展了相應(yīng)的研究與設(shè)計,主要以常見的智能小車平臺模擬真實的汽車平臺,通過搭建相應(yīng)的泊車模塊及其附加系統(tǒng),以模擬和測試真實環(huán)境下的自動泊車的泊車系統(tǒng)。本

28、文所搭建的智能小車平臺,是一個集光機電以及計算機一體化的系統(tǒng),通過計算機技術(shù)融合了信息通訊,傳感,自動控制,自動測量等技術(shù)來完成小車的智能駕駛與自動泊車的目標。</p><p>  1.2 國內(nèi)外研究現(xiàn)狀</p><p>  隨著專用短程通訊技術(shù)和傳感器技術(shù),車輛控制技術(shù)越來越成熟,像自動駕駛,無人駕駛技術(shù),從實驗室走向?qū)嶋H應(yīng)用的步伐正在加快。比如特斯拉、谷歌、百度等等相繼進行了無人駕駛技

29、術(shù)相關(guān)的測試。其研究過程可以劃分為三個階段:</p><p>  首先是泊車過程中駕駛員感知增強 ,這類系統(tǒng)使用各類障礙傳感器,增強用戶對于周圍環(huán)境的感知能力以及感知范圍,例如超聲波傳感雷達,運用超聲波傳感器探測即將撞到的障礙物,在要撞到之前向用戶發(fā)出提醒。這類產(chǎn)品已經(jīng)在市場上廣泛的運用。</p><p>  其次是基于超聲傳感器的簡單自動泊車系統(tǒng),利用傳感器實現(xiàn)側(cè)向停車位的檢測,并控制車

30、輛完成停車動作。系統(tǒng)通過相關(guān)的傳感器探測出車位的相關(guān)信息并告知用戶,用戶在指定位置停好后,開啟自動泊車按鈕,系統(tǒng)開始輔助泊車,在泊車過程中,用戶不需要操作方向盤,只需要根據(jù)系統(tǒng)的指示,依靠系統(tǒng)探測出的信息,控制油門與剎車來停入車位,這種系統(tǒng)還是需要人為的干涉,不能做到全自動泊車,其代表性的系統(tǒng)是來自雪鐵龍 C3 City Park 的自動泊車系統(tǒng)。</p><p>  最后是采用多傳感器融合的自動泊車系統(tǒng),這種系

31、統(tǒng)則更進一步,可以做到不需人為操作全自動泊車,用戶只需點下按鈕,汽車就會自動泊入車位,這種系統(tǒng)通常采用了多個傳感器配合使用,加以視覺檢測裝置,輔以避障裝置來進行自動泊車的全過程,一般是通過視覺檢測傳感器來檢測泊車的車位信息,加上超聲波,攝像頭組成的避障裝置來檢測障礙,防止進行碰撞,在高性能處理器的指揮下,整個系統(tǒng)完美配合,方向盤、油門、剎車、發(fā)動機、檔位、門鎖都可以自動配合控制,實現(xiàn)信息融合。其代表車型為 大眾的 PAV 系統(tǒng)(Park

32、 Assist Vision),此系統(tǒng)目前處于商業(yè)演示階段。</p><p>  1.3 論文的研究內(nèi)容與組織結(jié)構(gòu)</p><p>  本論文所述的智能小車綜合系統(tǒng)主要涉及三大平臺的工作與配合,共同完成智能小車的功能和目標。首先,是智能小車的行進與探測系統(tǒng),小車首先能夠像現(xiàn)實中的汽車一樣能夠正常的前進、后退、轉(zhuǎn)向,以及分布在車身的智能傳感系統(tǒng),能夠探測周圍的環(huán)境并作出相應(yīng)的的反饋,并接受用

33、戶的指令做出相應(yīng)動作。其次,是用戶交互系統(tǒng),負責(zé)用戶和智能小車的交互操作,能夠?qū)⒂脩舻闹噶顐鬟_給智能小車,同時也將小車的情況反饋給用戶。最后是將二者連接在一起的通訊系統(tǒng),能夠解析用戶端與智能小車互相傳輸?shù)臄?shù)據(jù),并傳送至相應(yīng)的執(zhí)行機構(gòu)。</p><p>  本文采用基于Arduino開發(fā)板的智能小車硬件驅(qū)動平臺,和基于Android手機的用戶軟件交互界面,以及介于二者的基于藍牙技術(shù)的智能通訊系統(tǒng)。</p>

34、;<p>  論文的主要組織結(jié)構(gòu)如下:</p><p>  緒論,整體性的闡述了側(cè)方位泊車系統(tǒng)的研究背景、研究目的以及意義,介紹了自動泊車系統(tǒng)在國內(nèi)外的研究現(xiàn)狀與研究過程,綜合介紹了本論文所設(shè)計與研究的主要內(nèi)容。第二章硬件系統(tǒng)綜合設(shè)計,綜合的介紹了本文所采取的硬件平臺與相關(guān)模塊,綜合的介紹了各個方案的原理與結(jié)構(gòu),分析了個模塊的優(yōu)點與缺點,總結(jié)得出最終的硬件平臺設(shè)計方案。第三章智能小車軟件系統(tǒng)的設(shè)計與

35、實現(xiàn),分別介紹了位于硬件平臺的Arduino開發(fā)板的驅(qū)動與控制軟件開發(fā),以及位于手機端基于Android應(yīng)用的藍牙通訊軟件的集成的實現(xiàn)方法以及涉及到的主要代碼的分析。第四章路徑規(guī)劃設(shè)計,首先對于實際中的泊車路徑做了相關(guān)的介紹與分析,接著根據(jù)實際中的泊車步驟抽象為二維圖形變化,進行了簡化分析以及相關(guān)規(guī)劃,最后根據(jù)二維模型,結(jié)合智能小車的傳感控制系統(tǒng),規(guī)劃出小車的行進路線以及參考點位。論文最后是總結(jié)與展望,綜合性的概括了本文所涉及的設(shè)計與研

36、究,提煉總結(jié)全文所做的工作。結(jié)合智能汽車、智能傳感器等產(chǎn)業(yè)未來的發(fā)展趨勢,進一步提出了本文繼續(xù)研究的道路。</p><p>  2 硬件系統(tǒng)綜合設(shè)計</p><p>  本論文所述的智能小車綜合系統(tǒng)主要涉及三大平臺的工作與配合,共同完成智能小車的功能和目標。首先,是智能小車的行進與探測系統(tǒng),小車首先能夠像現(xiàn)實中的汽車一樣能夠正常的前進、后退、轉(zhuǎn)向,以及分布在車身的智能傳感系統(tǒng),能夠探測周圍

37、的環(huán)境并作出相應(yīng)的的反饋,并接受用戶的指令做出相應(yīng)動作。其次,是用戶交互系統(tǒng),負責(zé)用戶和智能小車的交互操作,能夠?qū)⒂脩舻闹噶顐鬟_給智能小車,同時也將小車的情況反饋給用戶。最后是將二者連接在一起的通訊系統(tǒng),能夠解析用戶端與智能小車互相傳輸?shù)臄?shù)據(jù),并傳送至相應(yīng)的執(zhí)行機構(gòu)。</p><p>  本文采用基于Arduino開發(fā)板的智能小車硬件驅(qū)動平臺,和基于Android手機的用戶軟件交互界面,以及介于二者的基于藍牙技術(shù)

38、的智能通訊系統(tǒng)。</p><p>  硬件系統(tǒng)設(shè)計是智能小車不可或缺的一步,同時也是實現(xiàn)自動泊車的基礎(chǔ),本文的主要目標就是設(shè)計一款能夠自動泊車。本章將就智能小車上的各個模塊進行具體詳細的介紹與解析。其中,本文的智能小車經(jīng)過了兩版的設(shè)計,因此,下文將就二者進行對比介紹。第一代小車采用了8051主控制芯片、紅外遙控、L298N電機驅(qū)動模塊、尋跡模塊、雙電機、蜂鳴器、數(shù)碼管、電池盒。第二代小車基于Arduino平臺及其

39、擴展板(電機、舵機驅(qū)動模塊、傳感器采集模塊),采用了藍牙遙控、多路避障傳感器模塊、電機、舵機、 電池等模塊。更加接近真實汽車的使用條件。</p><p>  圖3.1 智能小車系統(tǒng)(左:第二代,右:第一代)</p><p>  本論文分別對基于8051單片機的硬件驅(qū)動平臺以及基于Arduino開發(fā)板的硬件平臺做了相關(guān)的研究與設(shè)計,下面分別對于二者作簡要介紹。</p><

40、p>  8051是一種8位元的單芯片微控制器,屬于MCS-51單芯片的一種,由英特爾公司于1981年制造。該芯片具備了便宜、電路簡單、體積小與耗電低等優(yōu)點,所以目前在業(yè)界使用的極為廣泛。</p><p>  Arduino是一款便捷靈活、方便上手的開源電子原型平臺。包含硬件(各種型號的Arduino板)和軟件(Arduino IDE)。由一個歐洲開發(fā)團隊于2005年冬季開發(fā)。它構(gòu)建于開放原始碼simple

41、I/O介面版,并且具有使用類似Java、C語言的Processing/Wiring開發(fā)環(huán)境。主要包含兩個主要的部分:硬件部分是可以用來做電路連接的Arduino電路板;另外一個則是Arduino IDE,計算機中的程序開發(fā)環(huán)境。只要在IDE中編寫程序代碼,將程序上傳到Arduino電路板后,程序便會告訴Arduino電路板要做些什么了。Arduino能通過各種各樣的傳感器來感知環(huán)境,通過控制燈光、馬達和其他的裝置來反饋、影響環(huán)境。板子上

42、的微控制器可以通過Arduino的編程語言來編寫程序,編譯成二進制文件,燒錄進微控制器。對Arduino的編程是利用 Arduino編程語言 (基于 Wiring)和Arduino開發(fā)環(huán)境(基于 Processing)來實現(xiàn)的。</p><p>  2.1智能小車行駛系統(tǒng)</p><p>  智能小車最主要的功能之一就是能夠正常行駛,其中在這里可以分為兩個部分,動力裝置和轉(zhuǎn)向裝置,其中動力

43、裝置就是為小車提供動力的模塊,如電機,可以使小車前進或者后退,轉(zhuǎn)向裝置就是能夠讓小車向某個方向轉(zhuǎn)一定角度的裝置,例如舵機,可以使小車向左或向右轉(zhuǎn)一定角度。二者配合起來就可以讓小車按照規(guī)定路線行進,完成相應(yīng)功能。</p><p>  2.1.1智能小車動力系統(tǒng)</p><p>  初始方案:采用兩個HC02-48直流減速電機馬達及萬向輪組成的動力系統(tǒng),使用L298N電機驅(qū)動模塊來驅(qū)動兩個馬達

44、運轉(zhuǎn),以及采用四節(jié)5號電池(AA、R6)驅(qū)動(約6V)。</p><p><b>  。</b></p><p>  圖3.2 直流減速電機馬達及L298N電機驅(qū)動板模塊</p><p>  改進方案:采用了JGA25-370 金屬減速電機配合減速齒輪,基于PM-R3拓展模塊的(L298P)的直流驅(qū)動模塊,7.4V鋰電池驅(qū)動電機。<

45、/p><p>  圖3.3 金屬減速電機馬達及L298N電機驅(qū)動板模塊(PM-R3)</p><p>  經(jīng)過改進之后,更換電機使小車能夠更加平穩(wěn)的行駛,不會因為兩側(cè)電機的步調(diào)不一而向某一方向偏轉(zhuǎn),更換更好的電池,使小車的動力增加,不會因為不夠電壓而導(dǎo)致一側(cè)電機停止工作,更換了電機驅(qū)動,使電機能夠更加智能的調(diào)整速度。</p><p>  2.1.2 智能小車轉(zhuǎn)向系

46、統(tǒng)</p><p>  初始方案:通過智能小車上的兩個動力輪的差速進行轉(zhuǎn)向:當一個輪子速度快,一個輪子速度慢時,小車會向速度慢的一邊轉(zhuǎn)向。</p><p>  圖3.3 雙電機差速轉(zhuǎn)向</p><p>  改進方案:通過使用舵機來幫助智能小車轉(zhuǎn)向,舵機也叫伺服電機,最早用于船舶上實現(xiàn)其轉(zhuǎn)向功能,可以通過程序連續(xù)控制其角度,舵機主要是由外殼、電路板、無核心馬達、齒

47、輪與位置檢測器所構(gòu)成。其工作原理是由接收機發(fā)出訊號給舵機,經(jīng)由電路板上的IC判斷轉(zhuǎn)動方向,再驅(qū)動無核心馬達開始轉(zhuǎn)動,透過減速齒輪將動力傳至擺臂,同時由位置檢測器送回訊號,判斷是否已經(jīng)到達定位。位置檢測器其實就是可變電阻,當舵機轉(zhuǎn)動時電阻值也會隨之改變,藉由檢測電阻值便可知轉(zhuǎn)動的角度。</p><p>  舵機的控制信號周期為20MS的脈寬調(diào)制(PWM)信號,其中脈沖寬度從0.5-2.5MS,相對應(yīng)的舵盤位置為0-

48、180度,呈線性變化。也就是說,給它提供一定的脈寬,它的輸出軸就會保持一定對應(yīng)角度上,無論外界轉(zhuǎn)矩怎么改變,直到給它提供一個另外寬度的脈沖信號,它才會改變輸出角度。本文的智能小車采用了MG996R型號的舵機。</p><p>  圖3.4 轉(zhuǎn)向舵機</p><p>  在經(jīng)過改進后,小車的轉(zhuǎn)向能力大幅提升,避免了差速轉(zhuǎn)向的不精確,差速轉(zhuǎn)向主要依靠兩輪之間的差速進行轉(zhuǎn)向,但由于工藝水平所

49、限,驅(qū)動模塊并不能很好的控制兩個電機的速度,并且由于電源的供電有限,導(dǎo)致智能小車的轉(zhuǎn)向十分的不精確,經(jīng)常發(fā)生偏移,因此在改進方案中,選用了更加精確的舵機進行轉(zhuǎn)向,它可以讓車輪精確地轉(zhuǎn)向某一角度,從而達到精確控制小車的目的。</p><p>  2.2智能小車信息采集模塊</p><p>  紅外探測傳感器由于發(fā)出的是紅外光,常見光對它的干擾極小,且由于價格便宜,而被廣泛應(yīng)用于智能小車的循線

50、、避障等實際應(yīng)用中。紅外避障傳感器具有一對紅外信號發(fā)射與接收二極管,發(fā)射管發(fā)射一定頻率的紅外信號,接收管接收這種頻率的紅外信號,當傳感器的檢測方向遇到障礙物(反射面)時,紅外信號反射回來被接收管接收,經(jīng)到信號處理之后,通過數(shù)字傳感器接口返回到機器人主機,機器人即可利用紅外波的返回信號來識別周圍環(huán)境的變化。</p><p>  2.2.1 紅外避障傳感器的原理</p><p>  本文采用了

51、四路紅外避障傳感器模塊,它的原理是每1路的傳感器的紅外發(fā)射管不斷發(fā)射紅外線,當發(fā)射出的紅外線沒有被反射回來或被反射回來但強度不夠大時,紅外接收管一直處于關(guān)斷狀態(tài),此時模塊的TTL輸出端為高電平,相應(yīng)指示二極管一直處于熄滅狀態(tài);當被檢測物體出現(xiàn)在檢測范圍內(nèi)時,紅外線被反射回來且強度足夠大,紅外接收管導(dǎo)通,此時模塊的TTL輸出 端為低電平,指示二極管被點亮。</p><p>  傳感器的外部檢測電路為LM339,LM

52、339為內(nèi)部集成了四路比較器的集成電路。因為內(nèi)部的四個比較電路完全相同,這里僅以一路比較電路進行舉例。比較器有兩個輸入端和一個輸出端,兩個輸入端一個稱為同輸入端,用“+”號表示,另一個稱為反相輸入端,用“-”表示。用作比較兩個電路時,任意一個輸入端加一個固定電壓作參考電壓(也叫門限電壓),另一端則直接接需要比較的信號電壓。當“+”端電壓高于“-”端電壓時,輸出正電源電壓,當“-”端電壓高于“+”端電壓時,輸出負電源電壓(注意,此處所說的

53、正電源電壓和負電源電壓是指接比較正負極的電壓),也就是輸出高低電平信號。</p><p>  2.2.2 紅外避障傳感器的結(jié)構(gòu)</p><p>  紅外循跡模塊,主要分為兩大部分,LM339比較器模塊和紅外對管模塊,由于上面已經(jīng)分析的其工作原理,下面給出兩部分的原理圖及其實物圖。</p><p>  圖3.5 紅外傳感器原理圖及LM339比較器</p>

54、;<p>  圖3.6 4路紅外避障傳感器模塊實物圖</p><p>  2.3智能小車通訊系統(tǒng)</p><p>  本論文分別對基于8051單片機的硬件驅(qū)動平臺以及基于Arduino開發(fā)板的硬件平臺采用了不同的無線通訊平臺,對于8051平臺采用了紅外遙控技術(shù),對于Arduino平臺則采用了藍牙技術(shù)。下面分別對二者進行介紹。</p><p>  首

55、先是采用紅外遙控技術(shù)的第一代方案,紅外遙控是一種無線、非接觸控制技術(shù),具有抗干擾能力強,信息傳輸可靠,功耗低,成本低,易實現(xiàn)等顯著優(yōu)點,被諸多電子設(shè)備特別是家用電器廣泛采用,并越來越多的應(yīng)用到計算機和手機系統(tǒng)中。紅外遙控分為發(fā)射端和接收端,發(fā)射電路是采用紅外發(fā)光二極管來發(fā)出經(jīng)過調(diào)制的紅外光波來傳輸信息,并由紅外接收電路(由紅外接收二極管、三極管或硅光電池組成)將紅外發(fā)射器發(fā)射的紅外光轉(zhuǎn)換為相應(yīng)的電信號,在經(jīng)過轉(zhuǎn)換電路轉(zhuǎn)化為相應(yīng)的數(shù)據(jù)。&

56、lt;/p><p>  采用藍牙技術(shù)的第二代方案,藍牙是一種支持設(shè)備短距離通信(一般10m內(nèi))的無線電技術(shù)。能在包括移動電話、PDA、無線耳機、筆記本電腦、相關(guān)外設(shè)等眾多設(shè)備之間進行無線信息交換。利用“藍牙”技術(shù),能夠有效地簡化移動通信終端設(shè)備之間的通信,也能夠成功地簡化設(shè)備與因特網(wǎng)Internet之間的通信,從而數(shù)據(jù)傳輸變得更加迅速高效,為無線通信拓寬道路。藍牙采用分散式網(wǎng)絡(luò)結(jié)構(gòu)以及快跳頻和短包技術(shù),支持點對點及點

57、對多點通信,工作在全球通用的2.4GHz ISM(即工業(yè)、科學(xué)、醫(yī)學(xué))頻段。其數(shù)據(jù)速率為1Mbps。采用時分雙工傳輸方案實現(xiàn)全雙工傳輸。</p><p>  2.3.1 藍牙通信原理</p><p>  藍牙主端設(shè)備發(fā)起呼叫,首先是查找,找出周圍處于可被查找的藍牙設(shè)備。主端設(shè)備找到從端藍牙設(shè)備后,與從端藍牙設(shè)備進行配對,此時需要輸入從端設(shè)備的PIN碼,也有設(shè)備不需要輸入PIN碼。配對完成后

58、,從端藍牙設(shè)備會記錄主端設(shè)備的信任信息,此時主端即可向從端設(shè)備發(fā)起呼叫,已配對的設(shè)備在下次呼叫時,不再需要重新配對。已配對的設(shè)備,做為從端的藍牙耳機也可以發(fā)起建鏈請求,但做數(shù)據(jù)通訊的藍牙模塊一般不發(fā)起呼叫。鏈路建立成功后,主從兩端之間即可進行雙向的數(shù)據(jù)或語音通訊。在通信狀態(tài)下,主端和從端設(shè)備都可以發(fā)起斷鏈,斷開藍牙鏈路。藍牙數(shù)據(jù)傳輸應(yīng)用中,一對一串口數(shù)據(jù)通訊是最常見的應(yīng)用之一,藍牙設(shè)備在出廠前即提前設(shè)好兩個藍牙設(shè)備之間的配對信息,主端預(yù)

59、存有從端設(shè)備的PIN碼、地址等,兩端設(shè)備加電即自動建鏈,透明串口傳輸,無需外圍電路干預(yù)。一對一應(yīng)用中從端設(shè)備可以設(shè)為兩種類型,一是靜默狀態(tài),即只能與指定的主端通信,不被別的藍牙設(shè)備查找;二是開發(fā)狀態(tài),既可被指定主端查找,也可以被別的藍牙設(shè)備查找建鏈。</p><p>  本文最終的智能小車的通信模塊采用的是DX-BT05型藍牙通訊模塊,采用CC2541主芯片,配置 256Kb 空間,遵循V4.0 BLE藍牙規(guī)范。

60、支持AT 指令,可根據(jù)需要更改串口波特率、設(shè)備名稱、配對密碼等參數(shù),使用靈活。支持UART接口,并支持SPP藍牙串口協(xié)議,具有成本低、體積小、功耗低、收發(fā)靈敏性高等優(yōu)點,只需配備少許的外圍元件就能實現(xiàn)其強大功能。主要用于短距離的數(shù)據(jù)無線傳輸領(lǐng)域,對于本設(shè)計的應(yīng)用十分適合,另外該模塊可以方便的和手機和PC的藍牙設(shè)備相連,也可以兩個模塊之間的數(shù)據(jù)互通,避免繁瑣的線纜連接。</p><p>  下面是本文所采取的模塊主

61、要的參數(shù):</p><p>  表3.1 DX-BT05型藍牙模塊</p><p><b>  圖3.6 藍牙模塊</b></p><p>  2.3.1 藍牙通信過程</p><p>  藍牙設(shè)備之間的通信的主要有四個步驟:首先是開啟藍牙設(shè)備,然后尋找局域網(wǎng)內(nèi)可能或者匹配的設(shè)備,接著連接設(shè)備,最后實現(xiàn)設(shè)備之間的數(shù)據(jù)傳輸

62、。</p><p>  接著是具體實現(xiàn),第一步是啟動藍牙功能,通過相應(yīng)指令啟用藍牙功能。第二步是查找設(shè)備,通過名字、MAC地址等信息查找相應(yīng)的藍牙設(shè)備。第三步是查詢匹配好的設(shè)備,查看以前配對過的藍牙設(shè)備集以便選取一個設(shè)備進行通信。第四步是掃描設(shè)備,查找周圍的藍牙設(shè)備(大概十米以內(nèi)),需要對方開啟藍牙,并開啟或者已經(jīng)開啟了“被發(fā)現(xiàn)使能”功能。第五步是使能被發(fā)現(xiàn),讓自己的藍牙設(shè)備能夠被其他設(shè)備發(fā)現(xiàn)。第六步是連接設(shè)備,

63、建立與目標設(shè)備的藍牙連接。第七步是服務(wù)端的連接,兩臺設(shè)備之間,服務(wù)端用于監(jiān)聽外來的連接請求。第八步是客戶端的連接,兩臺設(shè)備之間客戶端用于發(fā)出連接請求。第九步是管理連接,當設(shè)備連接上以后,實現(xiàn)設(shè)備之間數(shù)據(jù)的共享,以及其他操作。</p><p>  3 智能小車軟件設(shè)計與實現(xiàn)</p><p>  本設(shè)計主要運用藍牙技術(shù)作為通訊的橋梁,連接智能小車與用戶交互界面,借助傳感器技術(shù)及其數(shù)據(jù)采集技術(shù),

64、通過Arduino開發(fā)板及其驅(qū)動模塊驅(qū)動電機和舵機以實現(xiàn)目標功能。系統(tǒng)總體框架如圖3.1所示。</p><p>  圖3.1 智能泊車系統(tǒng)總體框架 </p><p>  智能泊車系統(tǒng)的框架分為如圖所示的三大模塊,即三層結(jié)構(gòu),首先是以Android手機為平臺的應(yīng)用層,它可以根據(jù)用戶的需求來設(shè)計不同的功能來實現(xiàn),由于現(xiàn)在手機的芯片功能已經(jīng)十分強大,許多復(fù)雜的操作例如運算處理和數(shù)據(jù)分析都可以放

65、在手機上來運作,而不用擔心底層控制器的性能不足,Android系統(tǒng)支持很多的開源軟件有很多強大的功能例如圖像識別、語音識別都可以添加在這一層中來,并且Android系統(tǒng)有很好的網(wǎng)絡(luò)服務(wù)功能,在手機上處理不了的功能甚至可以在云端來處理。其次是處于中間層的藍牙傳輸,它用于組成多維的通訊網(wǎng)絡(luò),實現(xiàn)車輛的底層系統(tǒng)與人機交互平臺的無線交流?;诂F(xiàn)在的手機幾乎都配備了藍牙的功能,并且現(xiàn)在的汽車大部分也裝有藍牙模塊,因此藍牙傳輸這個方案十分具有實用化

66、的價值。最后是屬于系統(tǒng)硬件是基于Arduino開發(fā)板及其擴展模塊的智能硬件系統(tǒng),它采用了多元傳感器技術(shù)及其信息化技術(shù),以及各類驅(qū)動技術(shù),實現(xiàn)對智能小車的控制與驅(qū)動。</p><p>  3.1 Arduino軟件綜合系統(tǒng)</p><p>  Arduino是一個開源的軟硬件一體化平臺,它提供了功能強大的Arduino開發(fā)板以及其配套的Arduino IDE集成開發(fā)環(huán)境,它不僅提供開源的硬件

67、原理圖、電路圖、IDE以及核心庫,而且開提供了各種各樣的開源硬件和軟件模塊,在開源協(xié)議范圍里可以任意修改。并且它可以在Windows、Linux、macOS三大電腦系統(tǒng)上跨平臺開發(fā),以及擁有及其清晰明了的開發(fā)流程,使用類似于C++語言但卻更加簡潔清晰的Arduino語言來開發(fā),并且對于很多應(yīng)用庫都做了相應(yīng)封裝,讓使用者更加容易上手與實用。</p><p>  在Arduino軟件系統(tǒng)中主要負責(zé)處理與驅(qū)動硬件系統(tǒng)的

68、各個子系統(tǒng),其中最主要的代碼分為以下幾個部分:電機驅(qū)動與控制;舵機驅(qū)動與控制;多路紅外傳感器的數(shù)據(jù)采集及分析;藍牙通訊的接受與發(fā)送,小車與手機之間的控制基于藍牙技術(shù),Android開發(fā)了一個簡單的控制界面,下面就逐一分別介紹。</p><p>  3.1.1 Arduino 電機馬達驅(qū)動</p><p>  在Arduino開發(fā)板上有PWM輸出口,因此可以利用該接口使用PWM技術(shù)驅(qū)動電機

69、馬達。下面是各接口連接與定義 :arduino開發(fā)板使用外接電源(7.4V),電機馬達接到主板上的控制正負接口(A+、A-),電機驅(qū)動板內(nèi)部使用開發(fā)板的5,6口PWM控制輸出。</p><p>  下面是開發(fā)板控制以及驅(qū)動的核心代碼解析,首先我們需要驅(qū)動電機運轉(zhuǎn),我們要定義兩個PWM輸出接口5口與6口:</p><p>  #define PWMA1 5 //Motor A&#

70、39;s pin</p><p>  接著我們要定義小車所需的前進、后退、停止參數(shù):</p><p>  #define MOTORFOWARD setMotor(-90) //motor back</p><p>  //后退與停止的值分別為90與0,也是一樣定義的。</p><p>  下一步Arduino開發(fā)板初始化參數(shù)設(shè)定:&l

71、t;/p><p>  void setup()</p><p><b>  {</b></p><p>  pinMode(PWMA1, OUTPUT); //系統(tǒng)定義兩個PWM接口為輸出接口</p><p><b>  }</b></p><p>  在下一步是實現(xiàn)電機P

72、WM調(diào)速的關(guān)鍵性驅(qū)動函數(shù):</p><p>  void setMotor(int m1Speed) //電機驅(qū)動函數(shù)</p><p><b>  {</b></p><p>  if (m1Speed >= 0){</p><p>  digitalWrite(PWMA2, HIGH);</p>&

73、lt;p>  analogWrite(PWMA1, 255 - m1Speed);}</p><p><b>  else{</b></p><p>  digitalWrite(PWMA1, HIGH);</p><p>  analogWrite(PWMA2, m1Speed + 255); }}</p><p&g

74、t;  最后是實際使用電機驅(qū)動的一個實例:</p><p>  void loop() //Arduino系統(tǒng)循環(huán),相當于C語言中的main()函數(shù)</p><p>  { MOTORFOWARD; //前進</p><p>  setMotor(100); //直接控制速度</p><p><b>  }<

75、/b></p><p>  3.1.2 Arduino 舵機驅(qū)動</p><p>  舵機是一種位置(角度)伺服的驅(qū)動器,適用于需要角度不斷變化并可以保持的控制系統(tǒng)。在本文前面已經(jīng)介紹了舵機的原理以及硬件參數(shù),下面就本系統(tǒng)進行詳細介紹。首先是連接設(shè)置:舵機有三條線,VCC、GND、Signal,其中VCC、GND連接到開發(fā)板的VCC、GND上,Signal線我們定義在開發(fā)板的4號

76、口。下面是相關(guān)的具體代碼的解析:</p><p>  首先系統(tǒng)需要引入Arduino開發(fā)板官方的舵機驅(qū)動庫:</p><p>  #include <Servo.h></p><p>  接著我們定義開發(fā)板上的4號口為舵機信號線并定義小車轉(zhuǎn)向角度:</p><p>  #define SERVOPIN 4 //servo&

77、#39;s pin</p><p>  #define SERVOMIN 40 //the angle of servo</p><p>  下一步是創(chuàng)建舵機對象并在系統(tǒng)初始化函數(shù)中初始化舵機:</p><p>  Servo myservo; //創(chuàng)建一個舵機控制對象</p><p>  void setup() { <

78、/p><p>  myservo.attach(4); //連接4號口為舵機</p><p><b>  }</b></p><p>  在下一步是實現(xiàn)電機驅(qū)動的相關(guān)代碼:</p><p>  #define TURNRIGHT myservo.write(SERVOMIN) //左轉(zhuǎn)</p><

79、;p>  //其他方向也是同樣定義</p><p>  void loop() { </p><p>  TURNRIGHT ;//右轉(zhuǎn)</p><p>  myservo.write(100); // 指定舵機轉(zhuǎn)向的角度</p><p><b>  }</b></p><

80、p>  3.1.3 多路紅外傳感器的數(shù)據(jù)采集及分析</p><p>  本文采用了四路紅外避障傳感器模塊,上文已經(jīng)介紹了其原理與結(jié)構(gòu),下面就傳感器的數(shù)據(jù)采集以及數(shù)據(jù)分析以相關(guān)操作做進一步的介紹。首先是傳感器和Arduino開發(fā)板的連接設(shè)置:4個傳感器分別用線接入傳感器模塊PCB板(傳感器有VCC、GND、Signal線,分別對應(yīng)接入),經(jīng)過模塊的轉(zhuǎn)換(LM339),變?yōu)?條線(VCC、GND、IN1-4),

81、通過連接線接入Arduino開發(fā)板的接口,VCC、GND對應(yīng)接入,IN1對應(yīng)2口,IN2對應(yīng)3口,IN3對應(yīng)7口,IN4對應(yīng)8口。</p><p>  下面是核心代碼解析,首先我們要定義4路傳感器的接口,方便在后面的程序里調(diào)用:</p><p>  #define RED1 2 //其他傳感器也同樣定義</p><p>  接著在初始化參數(shù)中設(shè)定傳感器的端口為

82、接受端(INPUT):</p><p>  void setup() {</p><p>  pinMode(RED1, INPUT);</p><p>  ......//其他傳感器也同樣定義</p><p><b>  }</b></p><p>  最后是一個使用傳感器進行探測的實例,讀取的

83、是2號3號傳感器的信息,當傳來的是高電平以及低電平相應(yīng)的操作:</p><p>  void loop() </p><p><b>  { </b></p><p>  if(digitalRead(RED2)==HIGH) </p><p>  ...... //對2號傳感器進行檢測,并在下面的代碼進行相應(yīng)操

84、作</p><p><b>  }</b></p><p>  3.1.4 藍牙通訊的接受與發(fā)送</p><p>  本文采用了DX-BT05型模塊,上文已經(jīng)介紹了其原理與結(jié)構(gòu),下面該模塊的數(shù)據(jù)傳輸?shù)慕邮芘c發(fā)送以及相關(guān)操作做進一步的介紹。連接設(shè)置:藍牙模塊一共有6的接口,見圖3.3.1,其中我們需要接VCC、GND、TXD、RXD</p&

85、gt;<p>  接下來是核心代碼解析:Arduino開發(fā)板中的藍牙與其串口是連接在一起的,因此可以很方便的運用藍牙,首先是初始化設(shè)置,設(shè)定串口的通信波特率:</p><p>  void setup() {</p><p>  Serial.begin(9600); //藍牙與串口是在一起的,因此操作串口即為操作藍牙</p><p><

86、;b>  }</b></p><p>  接著是一個運用藍牙通訊的例子,它首先檢測藍牙是否在線,接著讀取接收來的數(shù)據(jù),并對數(shù)據(jù)進行判斷,如果是字符‘a(chǎn)’的話,就像藍牙輸出字符串“hello world”:</p><p>  void loop() {</p><p>  While(Serial.available()){ //檢測藍牙是否可

87、用</p><p>  Char c=Serial.read();//讀取接收來的數(shù)據(jù)</p><p>  If(c==’a’){//對讀取來的數(shù)據(jù)進行判斷</p><p>  Serial.println(“hello world”);//使用藍牙發(fā)送“hello world”字符串</p><p><b>  

88、}} }</b></p><p>  3.2 Android軟件綜合系統(tǒng)</p><p>  Android是一個移動設(shè)備系統(tǒng),是基于Linux平臺,由操作系統(tǒng),中間件、用戶界面和應(yīng)用軟件組成。Android是基于Linux開放性內(nèi)核的操作系統(tǒng),是Google公司在2007年11月5日公布的手機操作系統(tǒng)。Android早期由原名為"Android"的公司開發(fā)

89、,它采用了軟件堆層(software stack,又名軟件疊層)的架構(gòu),主要分為三部分。底層Linux內(nèi)核只提供基本功能,其他的應(yīng)用軟件則由各公司自行開發(fā),部分程序以Java編寫。</p><p>  本節(jié)將就Android手機系統(tǒng)下的應(yīng)用搭建與設(shè)計進行相關(guān)研究與分析,該應(yīng)用實現(xiàn)了與智能小車的配合使用實現(xiàn)了目標的功能,是與用戶直接交互的界面,也是本設(shè)計的基礎(chǔ)。</p><p>  開發(fā)An

90、droid應(yīng)用程序主要使用Java程序語言,利用Android Studio集成開發(fā)環(huán)境進行開發(fā)與調(diào)試,本文的Android應(yīng)用程序主要包括藍牙通訊、智能小車控制程序、以及用戶操作界面三部分組成,下面依次說明。</p><p>  3.2.1 基于Android的藍牙通訊</p><p>  首先我們進行程序流程簡要規(guī)劃:首先開啟藍牙設(shè)備,接著尋找局域網(wǎng)內(nèi)可能或者匹配的設(shè)備,最后連接設(shè)備,

91、實現(xiàn)設(shè)備之間的數(shù)據(jù)傳輸。</p><p>  在有了初步規(guī)劃之后我們將進入細節(jié)代碼分析:</p><p>  要操作藍牙設(shè)備,我們首先要獲取操作藍牙設(shè)備的對象BluetoothAdapter,</p><p>  BluetoothAdapter BTAdapter = BluetoothAdapter.getDefaultAdapter();</p>

92、<p>  同時,還需要使用到三項系統(tǒng)權(quán)限:</p><p>  <uses-permission android:name="android.permission.BLUETOOTH" /></p><p>  <uses-permission android:name="android.permission.BLUETOOTH

93、_ADMIN" /></p><p>  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /></p><p>  將這三項系統(tǒng)權(quán)限添加在AndroidManifest.xml文件中,之后我們就可以通過BluetoothAdapter對真實的藍

94、牙設(shè)備以及軟件功能進行操作使用了。</p><p>  開啟藍牙,在應(yīng)用中使用Intent啟動確認窗口,讓用戶選擇是否允許打開:</p><p>  BluetoothAdapter BTAdapter = BluetoothAdapter.getDefaultAdapter();</p><p>  //判斷藍牙功能是否打開</p><p>

95、;  if (!BTAdapter.isEnabled()) {</p><p>  //沒有打開,就啟動確認窗口詢問用戶是否打開</p><p>  Intent i = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);</p><p>  startActivity(i);</p><p&

96、gt;<b>  }</b></p><p>  允許被發(fā)現(xiàn),我們需要設(shè)置設(shè)備可以被別的藍牙設(shè)備發(fā)現(xiàn):</p><p>  BluetoothAdapter BTAdapter = BluetoothAdapter.getDefaultAdapter();</p><p>  //判斷是非可以被發(fā)現(xiàn)</p><p>  

97、if(BTAdapter.getScanMode()!=BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {</p><p>  //啟動窗口,詢問用戶是否可以設(shè)置成允許被發(fā)現(xiàn)</p><p>  Intent i=new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);&

98、lt;/p><p>  //可以一直被別的藍牙設(shè)備發(fā)現(xiàn)</p><p>  i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);</p><p>  startActivity(i);</p><p><b>  }</b></p><p

99、>  搜索可連接設(shè)備,使用BluetoothAdapter的startDiscovery()方法開始搜素設(shè)備,并使用BroadcastReceiver類來接受系統(tǒng)發(fā)出的廣播:</p><p>  BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();</p><p>  //如果正在搜索藍牙

100、設(shè)備,則停止搜索</p><p>  if (mBluetoothAdapter.isDiscovering()) {</p><p>  mBluetoothAdapter.cancelDiscovery();</p><p><b>  }</b></p><p>  //開始搜索藍牙設(shè)備</p>&l

101、t;p>  mBluetoothAdapter.startDiscovery();</p><p><b>  //廣播接收</b></p><p>  private final BroadcastReceiver mReceiver = new BroadcastReceiver() {</p><p><b>  @Ove

102、rride</b></p><p>  public void onReceive(Context context, Intent intent) {</p><p>  String action = intent.getAction();</p><p>  if (BluetoothDevice.ACTION_FOUND.equals(action

103、)) {</p><p>  //從Intent中獲取可連接的設(shè)備</p><p>  BluetoothDevicedevice=</p><p>  intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);</p><p><b>  }</b></p&g

104、t;<p>  else if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {</p><p>  //開始搜索了,增加相應(yīng)操作。 </p><p><b>  } </b></p><p>  else if (BluetoothAdapter.AC

105、TION_DISCOVERY_FINISHED.equals(action)) {</p><p>  //結(jié)束搜索了,增加相應(yīng)操作。</p><p><b>  } }};</b></p><p>  連接建立以后,雙方開始交換數(shù)據(jù)。無論是主動連接還是被動連接,數(shù)據(jù)的交換都是通過之前得到的Socket進行的:</p><p

106、>  InputStream mInStream = mSocket.getInputStream();</p><p>  OutputStream mOutStream = mSocket.getOutputStream();</p><p>  //InputStream負責(zé)讀取從Socket傳入的數(shù)據(jù);</p><p>  //OutputStream

107、負責(zé)將數(shù)據(jù)從Socket發(fā)送出去;</p><p>  //存放傳入數(shù)據(jù)的數(shù)據(jù)區(qū)</p><p>  byte[] buffer = new byte[MAX_BUFFER_SIZE];</p><p>  //存放讀取數(shù)據(jù)的字節(jié)長度</p><p>  int bytes;</p><p>  while (true

108、) {</p><p>  try {//等待讀取數(shù)據(jù)</p><p>  bytes = mInStream.read(buffer);} catch (IOException e) {</p><p>  //異常情況,例如Socket被關(guān)閉,對方斷開連接</p><p><b>  break;}}</b>&l

109、t;/p><p>  //采用OutputStream的write()方法發(fā)送數(shù)據(jù)</p><p>  mOutStream.write(data);</p><p>  以上就是藍牙傳輸數(shù)據(jù)的關(guān)鍵性部分,在程序中將相應(yīng)的按鍵或者著操作轉(zhuǎn)為相應(yīng)的字符以簡化傳輸?shù)臄?shù)據(jù),將此字符通過藍牙從手機端發(fā)送到Arduino開發(fā)板上,開發(fā)板在通過檢測字符指令轉(zhuǎn)化為相應(yīng)的操作指令,并傳

110、達給相應(yīng)的操作機構(gòu)進行執(zhí)行操作。</p><p>  3.2.2 智能小車控制程序</p><p>  在介紹完Android應(yīng)用程序的藍牙通訊傳輸之后,我們需要編寫Android應(yīng)用程序端對于智能小車的控制程序,在Arduino系統(tǒng)的藍牙通訊的發(fā)送與接受一節(jié)里,已經(jīng)大致介紹了Arduino端的程序設(shè)計,在上文也講述了在手機的藍牙通訊的基本函數(shù)接口,因此在下面就兩端的配合做相關(guān)的介紹。&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論