版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 目 錄 TOC o 1-3 h z u HYPERLINK l _Toc169578546 1前言 PAGEREF _Toc169578546 h 1 HYPERLINK l _Toc169578547 2總體方案設(shè)計(jì)3 HYPERLINK l _Toc169578550 3安卓操作系統(tǒng)簡(jiǎn)介5 HYPERLINK l _Toc169578551 3.1安卓操作系統(tǒng)發(fā)展5 HYPERLINK l _Toc169578551 3.2安卓開(kāi)發(fā)與建立5 HYPERLINK l _Toc169578551 3.3安卓的應(yīng)用程序分析6 HYPERLINK l _Toc169578551 HYPERLIN
2、K l _Toc169578551 3.4安卓的藍(lán)牙開(kāi)發(fā)技術(shù)7 HYPERLINK l _Toc169578551 3.5安卓平臺(tái)的藍(lán)牙編程7 HYPERLINK l _Toc169578567 4系統(tǒng)軟件程序設(shè)計(jì)12 HYPERLINK l _Toc169578568 4.1C語(yǔ)言編程環(huán)境介紹:12 HYPERLINK l _Toc169578569 4.2各模塊的編程13 HYPERLINK l _Toc169578573 5系統(tǒng)調(diào)試20 HYPERLINK l _Toc169578574 5.1C語(yǔ)言的調(diào)試20 HYPERLINK l _Toc169578574 5.2JAVA語(yǔ)言的調(diào)試
3、23 HYPERLINK l _Toc169578575 6總結(jié)與體會(huì)25 HYPERLINK l _Toc169578576 7謝辭26 HYPERLINK l _Toc169578577 8參考文獻(xiàn)27 HYPERLINK l _Toc169578579 附錄:程序:27 第 頁(yè) 第1章 前言(緒論)1.1智能小車(chē)的意義和作用 隨著科學(xué)技術(shù)的發(fā)展,機(jī)器人開(kāi)始出現(xiàn)在人們的視野中,機(jī)器人的研究一直是科學(xué)家們熱衷的事,并努力把機(jī)器人運(yùn)用到生活的方方面面。目前機(jī)器人的發(fā)展已經(jīng)遍及機(jī)械、電子、冶金、交通、宇航、國(guó)防等領(lǐng)域。近年來(lái)機(jī)器人的智能水平不斷提高,并且迅速地改變著人們的生活方式。人們?cè)诓粩嗵接?/p>
4、、改造、認(rèn)識(shí)自然的過(guò)程中,制造能替代人勞動(dòng)的機(jī)器一直是人類的夢(mèng)想。隨著科學(xué)技術(shù)的發(fā)展,機(jī)器人的感覺(jué)傳感器種類越來(lái)越多,其中視覺(jué)傳感器成為自動(dòng)行走和駕駛的重要部件。視覺(jué)的典型應(yīng)用領(lǐng)域?yàn)樽灾魇街悄軐?dǎo)航系統(tǒng),對(duì)于視覺(jué)的各種技術(shù)而言圖像處理技術(shù)已相當(dāng)發(fā)達(dá),而基于圖像的理解技術(shù)還很落后,機(jī)器視覺(jué)需要通過(guò)大量的運(yùn)算也只能識(shí)別一些結(jié)構(gòu)化環(huán)境簡(jiǎn)單的目標(biāo)。視覺(jué)傳感器的核心器件是攝像管或CCD,目前的CCD已能做到自動(dòng)聚焦。但CCD傳感器的價(jià)格、體積和使用方式上并不占優(yōu)勢(shì),因此在不要求清晰圖像只需要粗略感覺(jué)的系統(tǒng)中考慮使用接近覺(jué)傳感器是一種實(shí)用有效的方法。機(jī)器人要實(shí)現(xiàn)自動(dòng)導(dǎo)引功能和避障功能就必須要感知導(dǎo)引線和障礙
5、物,感知導(dǎo)引線相當(dāng)給機(jī)器人一個(gè)視覺(jué)功能。避障控制系統(tǒng)是基于自動(dòng)導(dǎo)引小車(chē)(AVGauto-guide vehicle)系統(tǒng),基于它的智能小車(chē)實(shí)現(xiàn)自動(dòng)識(shí)別路線,判斷并自動(dòng)避開(kāi)障礙,選擇正確的行進(jìn)路線。使用傳感器感知路線和障礙并作出判斷和相應(yīng)的執(zhí)行動(dòng)作。該智能小車(chē)可以作為機(jī)器人的典型代表。它可以分為三大組成部分:傳感器檢測(cè)部分、執(zhí)行部分、CPU。機(jī)器人要實(shí)現(xiàn)自動(dòng)避障功能,還可以擴(kuò)展循跡等功能,感知導(dǎo)引線和障礙物??梢詫?shí)現(xiàn)小車(chē)自動(dòng)識(shí)別路線,選擇正確的行進(jìn)路線,并檢測(cè)到障礙物自動(dòng)躲避?;谏鲜鲆?,傳感檢測(cè)部分考慮到小車(chē)一般不需要感知清晰的圖像,只要求粗略感知即可,所以可以舍棄昂貴的CCD傳感器而考慮使
6、用價(jià)廉物美的紅外反射式傳感器來(lái)充當(dāng)。智能小車(chē)的執(zhí)行部分,是由直流電機(jī)來(lái)充當(dāng)?shù)?,主要控制小?chē)的行進(jìn)方向和速度。單片機(jī)驅(qū)動(dòng)直流電機(jī)一般不占用單片機(jī)資源,直接選擇有PWM功能的單片機(jī),這可以由軟件模擬PWM輸出調(diào)制,需要占用單片機(jī)資源,難以精確調(diào)速,但單片機(jī)型號(hào)的選擇余地較大??紤]到實(shí)際情況,CPU使用STC89C52單片機(jī),配合軟件編程實(shí)現(xiàn)。1.2智能小車(chē)的現(xiàn)狀隨著計(jì)算機(jī)和控制技術(shù)的發(fā)展,智能移動(dòng)小車(chē)在很多行業(yè)都有實(shí)質(zhì)成果。工作的環(huán)境也從很單純的室內(nèi)環(huán)境發(fā)展成了各種復(fù)雜環(huán)境,如地面,水下,太空等等。在小車(chē)的功能發(fā)面,越來(lái)越多的新功能被小車(chē)所運(yùn)用,如實(shí)現(xiàn)循跡、避障、檢測(cè)貼片、尋光入庫(kù)、避崖,拍攝,遠(yuǎn)
7、程傳輸信號(hào)等等。國(guó)內(nèi)智能車(chē)輛研究現(xiàn)狀 相比于國(guó)外,我國(guó)開(kāi)展智能車(chē)輛技術(shù)方面的研究起步較晚,開(kāi)始于20世紀(jì)80年代。而且大多數(shù)研究處在于針對(duì)某個(gè)單項(xiàng)技術(shù)研究的階段。雖然我國(guó)在智能車(chē)輛技術(shù)方面的研究總體上落后于發(fā)達(dá)國(guó)家,并且存在一定得技術(shù)差距,但是我們也取得了一系列的成果,主要有: (1)中國(guó)第一汽車(chē)集團(tuán)公司和國(guó)防科技大學(xué)機(jī)電工程與自動(dòng)化學(xué)院與2003年研制成功我國(guó)第一輛自主駕駛轎車(chē)。該自主駕駛轎車(chē)在正常交通情況下的高速公路上,行駛的最高穩(wěn)定速度為13km/h,最高峰值速度達(dá)170km/h,并且具有超車(chē)功能,其總體技術(shù)性能和指標(biāo)已經(jīng)達(dá)到世界先進(jìn)水平。 (2)南京理工大學(xué)、北京理工大學(xué)、浙江大學(xué)、國(guó)
8、防科技大學(xué)、清華大學(xué)等多所院校聯(lián)合研制了7B.8軍用室外自主車(chē),該車(chē)裝有彩色攝像機(jī)、激光雷達(dá)、陀螺慣導(dǎo)定位等傳感器。計(jì)算機(jī)系統(tǒng)采用兩臺(tái)Sun10完成信息融合、路徑規(guī)劃,兩臺(tái)PC486完成路邊抽取識(shí)別和激光信息處理,8098單片機(jī)完成定位計(jì)算和車(chē)輛自動(dòng)駕駛。其體系結(jié)構(gòu)以水平式結(jié)構(gòu)為主,采用傳統(tǒng)的“感知-建模-規(guī)劃-執(zhí)行”算法,其直線跟蹤速度達(dá)到20km/h,避障速度達(dá)到5-10km/h。 智能車(chē)輛研究也是智能交通系統(tǒng)ITS的關(guān)鍵技術(shù)。目前,國(guó)內(nèi)的許多高校和科研院所都在進(jìn)行ITS關(guān)鍵技術(shù)、設(shè)備的研究。隨著ITS研究的興起,我國(guó)已形成一支ITS技術(shù)研究開(kāi)發(fā)的技術(shù)專業(yè)隊(duì)伍。并且各交通、汽車(chē)企業(yè)越來(lái)越加
9、大了對(duì)ITS及智能車(chē)輛技術(shù)研發(fā)的投入,整個(gè)社會(huì)的關(guān)注程度在不斷提高。交通部已將ITS研究列入“十五”科技發(fā)展計(jì)劃和2010年長(zhǎng)期規(guī)劃。相信經(jīng)過(guò)相關(guān)領(lǐng)域的共同努力,我國(guó)ITS及智能車(chē)輛的技術(shù)水平一定會(huì)得到很大提高。 可以預(yù)計(jì),我國(guó)飛速發(fā)展的經(jīng)濟(jì)實(shí)力將為智能車(chē)輛的研究提供一個(gè)更加廣闊的前景。我們要結(jié)合我國(guó)國(guó)情,在某一方面或某些方面,對(duì)智能車(chē)進(jìn)行深入細(xì)致的研究,為它今后的發(fā)展及實(shí)際應(yīng)用打下堅(jiān)實(shí)的基礎(chǔ)。 第2章 總體方案設(shè)計(jì) 根據(jù)要求,確定如下方案:在現(xiàn)有玩具電動(dòng)車(chē)的基礎(chǔ)上,加裝紅外對(duì)光管,超聲波收發(fā)傳感器,實(shí)現(xiàn)對(duì)電動(dòng)車(chē)的速度、位置、運(yùn)行狀況的實(shí)時(shí)測(cè)量,并將測(cè)量數(shù)據(jù)傳送至單片機(jī)進(jìn)行處理,然后由單片機(jī)根
10、據(jù)所檢測(cè)的各種數(shù)據(jù)實(shí)現(xiàn)對(duì)電動(dòng)車(chē)的智能控制。同時(shí)。加裝的藍(lán)牙模塊,可以輔助控制小車(chē),當(dāng)小車(chē)的循跡出現(xiàn)故障,或者需要手動(dòng)控制小車(chē)實(shí)現(xiàn)某種功能時(shí),可以使用手機(jī)上的安卓軟件,發(fā)出控制信號(hào)給藍(lán)牙,藍(lán)牙接收后傳給小車(chē),實(shí)現(xiàn)對(duì)小車(chē)的控制。這種方案能實(shí)現(xiàn)對(duì)電動(dòng)車(chē)的運(yùn)動(dòng)狀態(tài)進(jìn)行實(shí)時(shí)控制,控制靈活、可靠,精度高,可滿足對(duì)系統(tǒng)的各項(xiàng)要求 總體方案框圖Stc89c52循跡紅外對(duì)管時(shí)鐘電路復(fù)位電路藍(lán)牙模塊電機(jī)驅(qū)動(dòng)超聲波紅外避障循跡模塊;用兩只紅外對(duì)管,分別置于小車(chē)車(chē)身前軌道的兩側(cè),根據(jù)兩只光電開(kāi)關(guān)接受到白線與黑線的情況來(lái)控制小車(chē)轉(zhuǎn)向來(lái)調(diào)整車(chē)向,測(cè)試表明,只要合理安裝好兩只光電開(kāi)關(guān)的位置就可以很好的實(shí)現(xiàn)循跡的功能避障模塊
11、;用超聲波避障,聲波測(cè)距是通過(guò)不斷檢測(cè)超聲波發(fā)射后遇到障礙物所反射的回波,從而測(cè)出發(fā)射和接收回波的時(shí)間差T,然后求出距離L=CT。超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻的同時(shí)開(kāi)始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物就立即返回來(lái),超聲波接收器收到反射波就立即停止計(jì)時(shí)。然后通過(guò)一定的電路把數(shù)據(jù)傳給單片機(jī),單片機(jī)通過(guò)和障礙物間的距離來(lái)決定小車(chē)是否需要調(diào)整前進(jìn)方向。電源模塊;采用2支18650鋰電池電源供電,電源電壓足夠小車(chē)和單片機(jī)的運(yùn)行,可以很好的實(shí)現(xiàn)功能,鋰電池還可以充電,可以多次使用。無(wú)線模塊;用的無(wú)線模塊是當(dāng)今社會(huì)上便攜式設(shè)備中普遍具有的藍(lán)牙無(wú)線模塊,該模塊性能穩(wěn)定,傳輸速率快,穩(wěn)定
12、可靠,傳輸距離可觀。該芯片使用簡(jiǎn)單,具有通用的串行通信端口,在市場(chǎng)中具有較高的知名度,且藍(lán)牙技術(shù)發(fā)展前景良好,廣受客戶的好評(píng)。該設(shè)備最大的優(yōu)點(diǎn)是無(wú)需制作專門(mén)的遙控器,可直接通過(guò)手機(jī)上的藍(lán)牙設(shè)備發(fā)送相關(guān)的指令,操作方便快捷,界面人性化設(shè)計(jì),具有良好的人機(jī)對(duì)話界面 第3章 安卓操作系統(tǒng)的簡(jiǎn)介3.1安卓操作系統(tǒng)的發(fā)展在20007年11月12日,開(kāi)放手機(jī)聯(lián)盟發(fā)布 google android sdk,android作為一個(gè)系統(tǒng),是一個(gè)運(yùn)行在LINUX2.6核心上的Java基礎(chǔ)的操作系統(tǒng)。系統(tǒng)是非常輕量。Android應(yīng)用程序用Java開(kāi)發(fā)而且很容易被放置到新的平臺(tái)上。在此同時(shí),谷歌也宣布建立一個(gè)全球性
13、質(zhì)的聯(lián)盟,這個(gè)組織由許多家手機(jī)的制造,軟件的開(kāi)發(fā)商,芯片制造商,運(yùn)營(yíng)這些產(chǎn)品的銷售商組成。這一聯(lián)盟將致力于谷歌發(fā)布手機(jī)操作系統(tǒng)的開(kāi)發(fā)以及它所涉及的應(yīng)用軟件的開(kāi)發(fā), 3.2 安卓開(kāi)發(fā)建立一、 Android平臺(tái)所具有的特點(diǎn)1 開(kāi)放性,Android從底層被構(gòu)建,使開(kāi)發(fā)者可以創(chuàng)造隱忍注意的手機(jī)應(yīng)用程序并且能夠充分利用所有的付費(fèi)的手機(jī),它是真正的被構(gòu)建成開(kāi)放的。例如,一個(gè)應(yīng)用程序可以調(diào)用任一手機(jī)的核心功能,打短信,打電話等等。它允許開(kāi)發(fā)者為使用者創(chuàng)造平臺(tái)使其有身臨其境的體驗(yàn)。2所有的平臺(tái)都是平等建立的,打破了應(yīng)用程序局限,Android打破創(chuàng)建新的,創(chuàng)新的應(yīng)用程序的局限,例如,開(kāi)發(fā)者可以讓個(gè)人手機(jī)上
14、的數(shù)據(jù)和網(wǎng)站上的數(shù)據(jù)連接在一起,如用戶的聯(lián)系人,日歷,位置提供了一個(gè)很有意義的用戶體驗(yàn),開(kāi)發(fā)者可以創(chuàng)建一個(gè)應(yīng)用程序,這個(gè)程序可以使用戶看到他們朋友的位置和改變后的位置,如果發(fā)現(xiàn)他們就在附近,就可以馬上和他們聯(lián)系了。3,快速并且簡(jiǎn)單的應(yīng)用程序的開(kāi)發(fā)。Android提供了寬范圍的有用類庫(kù)和工具,用這些可以創(chuàng)建豐富的應(yīng)用程序,例如Android使開(kāi)發(fā)者可以獲得設(shè)備的地理位置,并允許設(shè)備通過(guò)同類對(duì)同類的方式和其他設(shè)備通信,另外Android包括一套完整的工具,這些工具提供開(kāi)發(fā)者高度的生產(chǎn)力和深度探究他們的應(yīng)用程序4。Google應(yīng)用;互聯(lián)網(wǎng)上的谷歌已經(jīng)有多年的歷史了,從開(kāi)始的只是搜索島現(xiàn)在各個(gè)方面的滲
15、透,如谷歌地圖,郵件等等,谷歌的這些服務(wù)已經(jīng)成為聯(lián)系用戶和互聯(lián)網(wǎng)的重要關(guān)系紐帶,安卓平臺(tái)的手機(jī)都可以完美的結(jié)合這些優(yōu)秀的服務(wù)。3.3Android應(yīng)用程序的分析對(duì)于一個(gè)Android應(yīng)用程序有四種部分構(gòu)成;1 activity2intent receiver3service4content provider不是每一個(gè)的應(yīng)用程序都需要這四個(gè)部分,但是應(yīng)用程序?qū)?huì)用這些來(lái)組合編寫(xiě)。一但決定了應(yīng)用程序所需要的組件,就需要在一個(gè)叫Android manifest.xml文件中列出他們,這是一個(gè)XML文件,在里面需要聲明應(yīng)用程序的組件和他們的功能需求。Activity是Android最普通的構(gòu)建模塊,它
16、通常在應(yīng)用程序中是一個(gè)單獨(dú)的屏幕。每一個(gè)activity是被實(shí)現(xiàn)作為一個(gè)繼承于activity基類的單獨(dú)的類。例如;一個(gè)文本消息發(fā)送程序可能有一個(gè)顯示要發(fā)送信息的屏幕,有一個(gè)顯示給選中要發(fā)送的聯(lián)系人的屏幕。每一個(gè)這些屏幕都會(huì)被一個(gè)activity實(shí)現(xiàn)。Android使用一個(gè)叫做intent的特殊類來(lái)讓?xiě)?yīng)用程序從一個(gè)屏動(dòng)到另外一個(gè)屏幕。Intent描述了一個(gè)應(yīng)用程序想要干什么。Intent數(shù)據(jù)結(jié)構(gòu)的兩個(gè)最重要的部分是;要響應(yīng)的action和data。典型的action值是MAIN,VIEW,PICK,EDIT,等等,data表示成一個(gè)統(tǒng)一資源定界符。Intent receiver 當(dāng)你想要在你的
17、應(yīng)用程序中編碼來(lái)執(zhí)行對(duì)外部事件的響應(yīng),你可以使用一個(gè)intent receiver.例如當(dāng)電話響鈴,或當(dāng)數(shù)據(jù)網(wǎng)絡(luò)可用時(shí),或當(dāng)午夜時(shí),雖然intent receiver 不顯示一個(gè)UI,但它們也許會(huì)顯示一個(gè)來(lái)通知和提醒用戶是否有令人感興趣的事件發(fā)生。intent receiver 也是在 Android manifest.XML 中被注冊(cè),但你也可以在代碼中使用 context.register receiver()來(lái)注冊(cè)它們,它的intent receiver被調(diào)用時(shí),你的程序不是非得運(yùn)行;假如必要時(shí),當(dāng)一個(gè)intent receiver被觸發(fā)時(shí),系統(tǒng)將會(huì)調(diào)用你的應(yīng)用程序。Service;一個(gè)
18、service是長(zhǎng)期存活并且運(yùn)行時(shí)不帶UI的編碼,例如,當(dāng)在音樂(lè)播放器中播放歌曲時(shí),可能在這個(gè)播放器中能有一個(gè)或者更多的activity,這些activity允許用戶選擇歌曲和開(kāi)始播放歌曲。然而,音樂(lè)回放本身不應(yīng)該被一個(gè)activity處理,因?yàn)橛脩魧⑵谕趯?dǎo)航到一個(gè)新的屏幕后音樂(lè)保持播放。Content provider 應(yīng)用程序可以把他們的數(shù)據(jù)存儲(chǔ)到文件中,一個(gè)SQLite數(shù)據(jù)庫(kù)中,設(shè)置中,或者是任何其他的有意義結(jié)構(gòu)中。如果你想要你的應(yīng)用程序的數(shù)據(jù)和其他應(yīng)用程序共享,一個(gè)content provider是有用的。一個(gè)content provider是一個(gè)類,它實(shí)現(xiàn)了方法的一個(gè)標(biāo)準(zhǔn)設(shè)置來(lái)讓其
19、他應(yīng)用程序存儲(chǔ)和恢復(fù)被content provider處理的數(shù)據(jù)類型。3.4Android 藍(lán)牙開(kāi)發(fā)技術(shù)在兩個(gè)不同設(shè)備上的應(yīng)用之間建立一條完整的通信道路,并在他們之 間保持一通信段,RFCOMM 是一個(gè)簡(jiǎn)單傳輸協(xié)議,它的目的是針對(duì)如何在兩個(gè)不同設(shè)備上的應(yīng)用上保證一 條完整的通信道路,并保持一通信段。RFCOMM 是為了兼容傳統(tǒng)的串口應(yīng)用,同時(shí)取代有線的通信方式,藍(lán)牙協(xié)議棧需要提供 與有線串口一致的通信接口而開(kāi)發(fā)出的協(xié)議。MAC 地址是燒錄在網(wǎng)卡里的.MAC 地址,也叫硬件地址,是由 48 比特長(zhǎng)(6 字節(jié)),16 進(jìn)制的數(shù)字組成.0-23 位叫做組織唯一標(biāo)志符(organizationally
20、 unique,是識(shí)別 LAN(局域 網(wǎng))節(jié)點(diǎn)的標(biāo)識(shí).24-47 位是由廠家自己分配。在網(wǎng)絡(luò)底層的物理傳輸過(guò)程中,是通過(guò)物理地址來(lái)識(shí)別主機(jī)的,它一般也是 全球唯一的。MAC 地址就如同我們身份證上的身份證號(hào)碼。步驟一:Setting Up Bluetooth 通過(guò) BluetoothAdapter 得到藍(lán)牙的 Activity 發(fā)送藍(lán)牙連接意圖 通過(guò) e onActivityResult()得到藍(lán)牙連接意圖 。步驟二: Finding Devices 通過(guò)得到開(kāi)啟藍(lán)牙用戶名和 MAC 地址 配對(duì)藍(lán)牙 。步驟三:連接藍(lán)牙 就像 java 的聊天系統(tǒng)一樣用一個(gè)藍(lán)牙手機(jī)當(dāng)服務(wù)器,一個(gè)當(dāng)客戶端,在用一
21、個(gè)類當(dāng)做 連接的管理類就行了。 3.5 android 平臺(tái)藍(lán)牙編程 Android 平臺(tái)支持藍(lán)牙網(wǎng)絡(luò)協(xié)議棧,實(shí)現(xiàn)藍(lán)牙設(shè)備之間數(shù)據(jù)的無(wú)線傳輸。藍(lán)牙設(shè)備 之間的通信主要包括了四個(gè)步驟:設(shè)置藍(lán)牙設(shè)備、尋找局域網(wǎng)內(nèi)可能或者匹配的設(shè)備、連接 設(shè)備和設(shè)備之間的數(shù)據(jù)傳輸。以下是建立藍(lán)牙連接的所需要的一些基本類:BluetoothDevice 類代表了一個(gè)遠(yuǎn)端的藍(lán)牙設(shè)備,使用它請(qǐng)求遠(yuǎn)端藍(lán)牙設(shè)備連接或者獲取 遠(yuǎn)端藍(lán)牙設(shè)備的名稱、地址、種類和綁定狀態(tài)。Bluetoothsocket 類代表了一個(gè)藍(lán)牙套接字的接口(類似于 tcp 中的套接字),他是應(yīng)用程 序通過(guò)輸入、輸出流與其他藍(lán)牙設(shè)備通信的連接點(diǎn)。Bluebo
22、othserversocket 類代表打開(kāi)服務(wù)連接來(lái)監(jiān)聽(tīng)可能到來(lái)的連接請(qǐng)求(屬于 server 端), 為了連接兩個(gè)藍(lán)牙設(shè)備必須有一個(gè)設(shè)備作為服務(wù)器打開(kāi)一個(gè)服務(wù)套接字。當(dāng)遠(yuǎn)端設(shè)備發(fā)起連 接連接請(qǐng)求的時(shí)候,并且已經(jīng)連接到了的時(shí)候,Blueboothserversocket 類將會(huì)返回一個(gè) bluetoothsocket。 Bluetoothclass 類描述了一個(gè)藍(lán)牙設(shè)備的一般特點(diǎn)和能力。他的只讀屬性集定義了設(shè)備 的主、次設(shè)備類和一些相關(guān)服務(wù)。然而,他并沒(méi)有準(zhǔn)確的描述所有該設(shè)備所支持的藍(lán)牙文件 和服務(wù),而是作為對(duì)設(shè)備種類來(lái)說(shuō)的一個(gè)小小暗示。BluetoothAdapter 類代表了一個(gè)本地的藍(lán)牙
23、適配器。他是所有藍(lán)牙交互的的入口點(diǎn)。利 用它你可以發(fā)現(xiàn)其他藍(lán)牙設(shè)備,查詢綁定了的設(shè)備,使用已知的 MAC 地址實(shí)例化一個(gè)藍(lán)牙 設(shè)備和建立一個(gè) BluetoothServerSocket(作為服務(wù)器端)來(lái)監(jiān)聽(tīng)來(lái)自其他設(shè)備的連接。應(yīng)用程序里啟動(dòng)藍(lán)牙功能,首先通過(guò)調(diào)用靜態(tài)方法 getDefaultAdapter()獲取藍(lán)牙適配器 bluetoothadapter,以后你就可以 使用該對(duì)象了。如果返回為空,the story is over。其次,調(diào)用 isEnabled()來(lái)查詢當(dāng)前藍(lán)牙設(shè)備的狀態(tài),如果返回為 false,則表示藍(lán)牙設(shè)備沒(méi)有 開(kāi)啟,接下來(lái)你需要封裝一個(gè) ACTION_REQUEST_
24、ENABLE 請(qǐng)求到 intent 里面,調(diào)用 startActivityForResult()方法使能藍(lán)牙設(shè)備。查找設(shè)備:使用 bluetoothadapter 類里的方法,你可以查找遠(yuǎn)端設(shè)備,在這次的設(shè)計(jì)中,藍(lán)牙MAC 地址確定,利用個(gè)信息,就可以選擇初始化一個(gè)連接,當(dāng)設(shè)備配對(duì)好 之后,MAC會(huì)被保存下來(lái)并可以使用藍(lán)牙的 API 來(lái)讀取,使用已知的 MAC 地址就可以對(duì)遠(yuǎn)端的藍(lán)牙設(shè)備發(fā)起連接請(qǐng)求。客戶端的連接: 為了初始化一個(gè)與遠(yuǎn)端設(shè)備的連接,需要先獲取代表該設(shè)備的一個(gè) bluetoothdevice 對(duì)象。 通過(guò) bluetoothdevice 對(duì)象來(lái)獲取 bluetoothsocket
25、 并初始化連接:具體步驟: 使用 bluetoothdevice 對(duì)象里的方法 createRfcommSocketToServiceRecord(UUID)來(lái)獲取 bluetoothsocket。UUID 就是匹配碼。然后,調(diào)用 connect()方法來(lái)。如果遠(yuǎn)端設(shè)備接收了 該連接,他們將在通信過(guò)程中共享 RFFCOMM 信道,并且 connect()方法返回。安卓的系統(tǒng)構(gòu)架Androi d總共分為了四個(gè)層,這四個(gè)層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層和Linux內(nèi)核層9Android的開(kāi)發(fā)包及相應(yīng)軟件的建立 Android的開(kāi)發(fā)是可以在windows XP及其以版本、MACOS、
26、Linux等系統(tǒng)上進(jìn)行開(kāi)發(fā)的;首先呢,我們要進(jìn)入Google的官方網(wǎng)站下載windows XP版本的java開(kāi)發(fā)包JDK,我們選擇的版本是JDK1.6.0以上的版本。在應(yīng)用開(kāi)發(fā)平臺(tái)方面,我們采用的是eclipse,因?yàn)間oogle提供了基于eclipse的android開(kāi)發(fā)插件ADT,在隨時(shí)更新的插件幫助下,可以很快幫助我們完成android手機(jī)終端的相關(guān)應(yīng)用開(kāi)發(fā)。 1、安裝JDK和配置java開(kāi)發(fā)環(huán)境 首先,安裝JDK時(shí),安裝包中有JDK和JRE兩部分,點(diǎn)擊安裝程序,指定安裝目錄,然后點(diǎn)擊下一步,等待安裝完成即可。安裝完成之后,點(diǎn)擊“我的電腦”,選擇“屬性”里面的“高級(jí)”選項(xiàng),選擇環(huán)境變量,
27、找到path變量,如果沒(méi)有,就自己添加一個(gè),按后命名path就行,完成之后,點(diǎn)擊編輯,添加JDK安裝目錄的“l(fā)ib”文件路徑;之后點(diǎn)擊確定,然后再找到CLASSPATH變量,在路徑輸入“.”,然后點(diǎn)擊確定。 2、檢測(cè)安裝 安裝配置完成之后,需要測(cè)試是否安裝成功。點(diǎn)擊開(kāi)始運(yùn)行輸入“cmd”,打開(kāi)命令模式。輸入“javaversion”,檢測(cè)JDK安裝是否成功,如果現(xiàn)實(shí)結(jié)果,則安裝成功。 3、安裝eclipse 打開(kāi)安裝包,點(diǎn)擊安裝,彈出workspace對(duì)話框,確定創(chuàng)建項(xiàng)目的保存路徑。 4、SDK和ADT的安裝和配置 首先,解壓安裝包,運(yùn)行“SDK Setup.exe”。其次,在“Android
28、 SDK and Avd manager”的窗口左側(cè)選擇“setting”,選中“Force https:/”然后返回“Installed packges”,點(diǎn)擊“Update all”。點(diǎn)擊“Available Packges”,選擇要安裝的API版本以及USB驅(qū)動(dòng)和SDK文檔,我們都選擇了。 這個(gè)過(guò)程很漫長(zhǎng),一定要保證網(wǎng)速快的情況下來(lái)安裝,要不會(huì)出現(xiàn)安裝不了的情況,最少安裝這個(gè)也要一天的時(shí)間,所以要耐心等待。下載完成之后,選擇所有選項(xiàng),然后全部安裝,安裝完成之后,配置SDK,SDK的配置更JDK是一樣的。 5、ADT的安裝和配置 啟動(dòng)eclipse,點(diǎn)擊“Help”菜單,選擇“Instal
29、l New Software”之后,點(diǎn)擊“Add”按鈕,點(diǎn)擊Archive指向下載的ADT壓縮包,然后點(diǎn)擊“ok”,選中所需要安裝的插件即可。 6、Android虛擬機(jī)的搭建 打開(kāi)菜單“windows”,一次選擇“Android SDK and AVD Manager”,打開(kāi)界面;然后點(diǎn)擊NEW新建模擬機(jī),彈出選項(xiàng)卡,根據(jù)選項(xiàng)卡填寫(xiě)自己所需要的內(nèi)容,即可創(chuàng)建。 7、建立好項(xiàng)目名后,即可啟動(dòng)虛擬機(jī)。 第4章 系統(tǒng)軟件程序設(shè)計(jì) 4.1 c語(yǔ)言編程環(huán)境介紹 由于本次設(shè)計(jì)中程序系統(tǒng)用C語(yǔ)言編寫(xiě)程序。此次設(shè)計(jì)所選用的單片機(jī)是AT89C52單片機(jī),其C語(yǔ)言語(yǔ)法和結(jié)構(gòu)和標(biāo)準(zhǔn)C語(yǔ)言基本相同,只是有了相應(yīng)的擴(kuò)充
30、,用到的編譯軟件是Keil C。下面結(jié)合我的程序編譯簡(jiǎn)要介紹以下Keil C的編譯環(huán)境的特點(diǎn)。 Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案
31、,通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境(uVision)將這些部分組合在一起。 Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。 C51工具包的整體結(jié)構(gòu),uVision與Ishell分別是C51 for Windows和for Dos的集成開(kāi)發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開(kāi)發(fā)流程。開(kāi)發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯
32、器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫(xiě)入程序存貯器如EPROM中。4.2 各部分模塊編程 1 循跡部分 循跡部分使用紅外線 檢測(cè)黑線,將信號(hào)傳給單片機(jī),通過(guò)單片機(jī)來(lái)控制小車(chē)實(shí)現(xiàn)循跡功能,流程圖如下。開(kāi)始前進(jìn)掃描I/O口,是否檢測(cè)到黑線Y左邊 右邊左轉(zhuǎn)右轉(zhuǎn)N2 避障部分主程序完成初始化工作、各路超聲波發(fā)射和接收順序的控制。定時(shí)中斷服務(wù)子程序完成
33、三個(gè)方向超聲波的輪流發(fā)射,外部中斷服務(wù)子程序主要完成時(shí)間值的讀取、距離計(jì)算、結(jié)果的輸出等工作。3 藍(lán)牙部分藍(lán)牙模塊輸入的信息進(jìn)行存儲(chǔ)分析,來(lái)控制電機(jī)驅(qū)動(dòng),以達(dá)到控制小車(chē)的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)。在這個(gè)過(guò)程中,單片機(jī)首先進(jìn)行初始化,包括設(shè)置單片機(jī)各個(gè)端口的方向,各個(gè)變量的初始化,以及單片機(jī)振蕩頻率的校準(zhǔn)等。單片機(jī)定時(shí)對(duì)藍(lán)牙模塊串口讀數(shù)據(jù),如果串口的數(shù)據(jù)讀出,則對(duì)讀出的數(shù)據(jù)進(jìn)行分析,讀出的數(shù)據(jù)如果為A、B、C、D則分別對(duì)應(yīng)小車(chē)的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)。小車(chē)硬件系統(tǒng)軟件設(shè)計(jì)的流程圖 開(kāi)始 初始化30秒內(nèi)連接串口是否連接串口數(shù)據(jù)是否發(fā)送是等待30秒內(nèi)發(fā)送判斷數(shù)據(jù)驅(qū)動(dòng)電機(jī)控制小車(chē)前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn)。
34、 手機(jī)端程序的設(shè)計(jì) 本程序是基于Android 21系統(tǒng),所用開(kāi)發(fā)工具為Eclipse集成開(kāi)發(fā)環(huán)境,Eclipse是著名的跨平臺(tái)的自由集成開(kāi)發(fā)環(huán)境(IDE)。最初主要用來(lái)Java語(yǔ)言開(kāi)發(fā),但是目前亦有人通過(guò)插件使其作為其他計(jì)算機(jī)語(yǔ)言比如C+、Python和Android的開(kāi)發(fā)工具,在此開(kāi)發(fā)環(huán)境下開(kāi)發(fā)軟件非常的方便。首先設(shè)計(jì)本系統(tǒng)手機(jī)端軟件的程序界面,為了盡快實(shí)現(xiàn)程序的功能,本程序沒(méi)有對(duì)軟件界面設(shè)計(jì)做特別美化的設(shè)計(jì),僅包含我們所用到的幾個(gè)按鈕和圖形顯示,以實(shí)現(xiàn)我們的功能為最大目標(biāo)。 下面介紹Android相關(guān)資源文件的作用16、17: 1、assets 文件夾:此文件夾也可以存放資源文件,而且/
35、assets目錄下的資源文件不會(huì)在R.java自動(dòng)生成ID,所以讀取/assets目錄下的文件必須指定文件的路徑(url的路徑為:)。除此之外,我們還可以通過(guò)AssetManager類來(lái)訪問(wèn)這些文件。打開(kāi)文件時(shí),會(huì)把a(bǔ)pk文件當(dāng)做zip文件進(jìn)行解壓讀取。但是有文件大小有限制:不能超過(guò)1M(android2.2好像放寬(或者取消)了這個(gè)限制(至少可以存放10M,具體沒(méi)有測(cè)試。)。 2、res 文件夾:主要用來(lái)存放資源。此文件夾下可以創(chuàng)建子文件,常見(jiàn)的有:動(dòng)畫(huà)anim,圖片drawable,顏色color,菜單menu, 布局layout,常量值values,詳細(xì)如下: (1)anim文件夾:后綴
36、名為.xml。動(dòng)畫(huà)文件都放在這里。 (2)drawable文件夾: 用于存放圖片資源,圖片或者xml。圖片格式,有png,9.png,jpg,gif都行。xml文件通常為自定義的形狀shape或圖片選擇器類selector似的東西,就是不同狀態(tài)下不同的圖片,用于設(shè)置background的。 對(duì)分辨率籠統(tǒng)的分,可以分為高中低三種分辨率。 (3)color文件夾:用于存放color列表,和drawable的xml一樣,表示不同狀態(tài)下的不同顏色 (4)menu文件夾:菜單資源文件夾layout文件夾:布局文件夾。此文件夾的名字也是可以起到屏幕適配的功能的。橫豎屏:layout-land|port;分
37、辨率:layout-1280 x720 (6) values文件夾:存放常量值的文件夾。里面常見(jiàn)的xml文件為arrays.xml : 資源數(shù)組;colors.xml : 顏色值;dimens.xml : 像素值; strings.xml :字符串值;tyles.xml : 樣式值。此文件夾,也有屏幕適配作用。比如:dimens在不同分辨率下的值。同樣的是加-1280 x720這樣的后綴。對(duì)于strings,有各種語(yǔ)言的版本對(duì)應(yīng)。默認(rèn)為英文。中文的文件夾名字應(yīng)該是:values-zh-rCN,values-zh-rTW。 (7) raw文件夾:存放不需要系統(tǒng)編譯成二進(jìn)制的文件,例如字體文件等同
38、assets文件夾類似。 (8) xml文件夾存放xml文件。 開(kāi)始 初始化藍(lán)牙是否打開(kāi) 30秒等待否是藍(lán)牙是否配對(duì) 搜索藍(lán)牙地址否是等待藍(lán)牙連接藍(lán)牙是否連接否是等待監(jiān)聽(tīng)器按下監(jiān)聽(tīng)器是否按下是 發(fā)送藍(lán)牙API 藍(lán)牙通信流程圖以下是手機(jī)端實(shí)現(xiàn)功能的程序流程圖如圖5.2所示手機(jī)界面程序設(shè)計(jì) 在設(shè)置手機(jī)界面的時(shí)候,在Eclipse集成開(kāi)發(fā)環(huán)境下,首先新建一個(gè)android項(xiàng)目工程,興建路徑是FileNewandroid projectproject name 選擇android 1.6版本,工程名命名為Bluetooth-car,選擇Create Activity,則自動(dòng)創(chuàng)建了一個(gè)Activity.
39、在創(chuàng)建Activity時(shí),需要注意一下四個(gè)要點(diǎn): 1、一個(gè)Activity就是一個(gè)類,并且這個(gè)類要繼承Activity。 2、需要復(fù)寫(xiě)Oncreate方法(當(dāng)一個(gè)Activity第一次運(yùn)行顯示在手機(jī)上或者虛擬機(jī)上的時(shí)就會(huì)調(diào)用Oncreate方法)。 3、每一個(gè)Activity都需要在Androidmanifast.xml文件當(dāng)中配置。 4、為Activity添加必要的控件。如圖5.3所示,在制作藍(lán)牙小車(chē)手機(jī)界面的時(shí)候,我用到了Textview 文本控件和 Butten按鈕控件,并且在添加控件時(shí)采用相對(duì)布局形式18、19。兩個(gè)Textview文本控件分別命名為:后備軍官學(xué)院和藍(lán)牙控制系統(tǒng),在la
40、yout布局文件下可以任意改變控件的位置、字體的大小、背景圖片。改變背景圖片的方法為:首先將需要用到的背景圖片,分別拖入到drawable下,高中低分辨率都拖入一張,以便不同分辨率的手機(jī)識(shí)別,然后在layout布局文兩個(gè)Textview文本控件分別命名為:后備軍官學(xué)院學(xué)院和藍(lán)牙控制系統(tǒng),在layout布局文件下可以任意改變控件的位置、字體的大小、背景圖片。改變背景圖片的方法為:首先將需要用到的背景圖片,分別拖入到drawable下,高中低分辨率都拖入一張,以便不同分辨率的手機(jī)識(shí)別,然后在layout布局。二、手機(jī)監(jiān)聽(tīng)程序設(shè)計(jì) 在Eclipes開(kāi)發(fā)平臺(tái)上,首先在Layout文件中采用相對(duì)布局的形
41、式設(shè)計(jì)完成手機(jī)界面以后,就要考慮為我們的每個(gè)Butten按鍵綁定監(jiān)聽(tīng)程序,以實(shí)現(xiàn)在每個(gè)按鍵按下時(shí),就能通過(guò)手機(jī)藍(lán)牙發(fā)送相應(yīng)的數(shù)據(jù)到小車(chē)藍(lán)牙接收模塊。首先在Layout文件中,每添加一個(gè)控件,都會(huì)為這個(gè)控件設(shè)置一個(gè)ID,(如android:id=+id/button1),然后在R.JAVA文件就會(huì)自動(dòng)生成一個(gè)ID地址。然后在主程序里面編寫(xiě)監(jiān)聽(tīng)程序,當(dāng)按鍵按下的時(shí)候,通過(guò)監(jiān)聽(tīng)按鍵的ID地址的不同,采用switch結(jié)構(gòu),跳轉(zhuǎn)到不同的case里,向小車(chē)藍(lán)牙模塊發(fā)送不同的數(shù)據(jù)。在程序里直接寫(xiě)進(jìn)小車(chē)藍(lán)牙模塊的藍(lán)牙地址(00:12:10:31:01:70),當(dāng)程序開(kāi)始運(yùn)行時(shí),將會(huì)自動(dòng)搜索該地址的藍(lán)牙芯片,當(dāng)
42、進(jìn)行過(guò)一次配對(duì)連接以后,將會(huì)記憶該地址,以后每次只要打開(kāi)手機(jī)界面,開(kāi)始運(yùn)行時(shí)就會(huì)自動(dòng)進(jìn)行搜索配對(duì)連接好20、21。 * 按鈕點(diǎn)擊事件. * param v */ public void onClick(View v) switch (v.getId() /轉(zhuǎn)寫(xiě)按鈕 case R.id.button1: message0 = (byte) 0 x41; vibrator(); Toast.makeText(this, 前進(jìn), Toast.LENGTH_LONG).show(); bluesend(message); break; /設(shè)置按鈕 case R.id.button2: message0
43、 = (byte) 0 x44vibrator();Toast.makeText(this, 后退, Toast.LENGTH_LONG).show(); bluesend(message); break; case R.id.button3: message0 = (byte) 0 x43; vibrator(); Toast.makeText(this, 左轉(zhuǎn), Toast.LENGTH_LONG).show(); bluesend(message); break; case R.id.button4: message0 = (byte) 0 x42; vibrator(); Toast.
44、makeText(this, 右轉(zhuǎn), Toast.LENGTH_LONG).show(); bluesend(message); break; case R.id.button5: message0 = (byte) 0 x61; vibrator(); Toast.makeText(this, 停止, Toast.LENGTH_LONG).show(); bluesend(message); break; default: break; 第5章 系統(tǒng)調(diào)試5.1C語(yǔ)言的調(diào)試 軟件的調(diào)試包括程序本身語(yǔ)法的調(diào)試和在電路板上功能的調(diào)試兩種。在編程過(guò)程中,為了得到滿足要求的用戶程序,一般都需要有一個(gè)對(duì)
45、程序的調(diào)試過(guò)程,甚至需要經(jīng)過(guò)多次反復(fù)的調(diào)試才能完成。在調(diào)試程序前為了調(diào)試方便,避免程序出錯(cuò)時(shí)將單片機(jī)拆來(lái)拆去的麻煩,在電路板上做了一個(gè)下載口,可以將下載線直接插到電路板上進(jìn)行調(diào)試,這樣就可以一邊進(jìn)行調(diào)試,一邊修改程序。程序用Keil C軟件寫(xiě)好后,先用該軟件的編譯功能編譯一下所寫(xiě)的程序,檢查程序是有語(yǔ)法錯(cuò)誤或其他的錯(cuò)誤。如果有錯(cuò)誤則根據(jù)提示進(jìn)行分析將錯(cuò)誤改過(guò)來(lái)直至編譯成功為止。當(dāng)完成了語(yǔ)法調(diào)試后,再根據(jù)定時(shí)開(kāi)關(guān)插座設(shè)計(jì)的功能要求修改程序完成系統(tǒng)的各個(gè)功能。在編寫(xiě)程序的時(shí)候一定要根據(jù)系統(tǒng)實(shí)現(xiàn)的功能和連接方式,認(rèn)真分析,畫(huà)出系統(tǒng)主程序、時(shí)鐘程序、設(shè)置程序的流程圖,并根據(jù)畫(huà)出的流程圖一步一步的去寫(xiě)出
46、程序。 根據(jù)系統(tǒng)的特點(diǎn),軟件系統(tǒng)應(yīng)該按模塊進(jìn)行調(diào)試,當(dāng)各個(gè)模塊調(diào)試通過(guò)后再將各個(gè)模塊整合起來(lái),進(jìn)行綜合調(diào)試,直到得到預(yù)期結(jié)果。 與純粹的C語(yǔ)言編程不同的是,單片機(jī)編程要考慮到硬件的設(shè)計(jì),所有程序的編寫(xiě)都是根據(jù)硬件資源進(jìn)行。本次設(shè)計(jì)的智能小車(chē),有三個(gè)主要的模塊,由于三個(gè)程序一起調(diào)試有苦難,所以我分別調(diào)試每一個(gè)模塊的,然后在將它們綜合。1;循跡部分的調(diào)試進(jìn)入程序后,根據(jù)紅外傳感器檢測(cè)的值,讓程序做出判斷,然后判斷轉(zhuǎn)向,完成沿著黑線行走,直到走完整個(gè)賽道,根據(jù)檢測(cè)情況調(diào)用相應(yīng)的函數(shù),控制小車(chē)的行進(jìn)、停止、左轉(zhuǎn)及右轉(zhuǎn)。它的調(diào)試成功圖如下。2;避障部分這個(gè)部分的主程序完成初始化工作和超聲波發(fā)射和接收順序
47、的控制以及根據(jù)數(shù)據(jù)控制小車(chē)運(yùn)動(dòng),其中定時(shí)中斷服務(wù)子程序完成超聲波的輪流發(fā)射,外部中斷服務(wù)子程序主要完成時(shí)間值的讀取、距離計(jì)算、結(jié)果的輸出等工作。它的調(diào)試成功圖如下。3,藍(lán)牙部分;藍(lán)牙部分分為兩部分的調(diào)試,一部分手機(jī)上的安卓程序和小車(chē)連接收發(fā)信號(hào)的調(diào)試,另一部分為藍(lán)牙接收到信號(hào)和單片機(jī)之間的傳輸?shù)恼{(diào)試,藍(lán)牙主要根據(jù)手機(jī)上發(fā)送的命令傳給單片機(jī),單片機(jī)在根據(jù)這些命令控制小車(chē)的運(yùn)動(dòng)。藍(lán)牙和單片機(jī)調(diào)試成功圖如下。5.2JAVA語(yǔ)言的調(diào)試 將做好的工程添加進(jìn)入Eclipes開(kāi)發(fā)環(huán)境中,檢查各個(gè)文件夾下面的程序有沒(méi)有出現(xiàn)打紅色X的問(wèn)題以及警告,點(diǎn)開(kāi)下方的problem的文件,檢查該工程有沒(méi)有出現(xiàn)問(wèn)題,當(dāng)排除
48、了所有的問(wèn)題以后。配置一個(gè)2.2版本的模擬器,然后啟動(dòng)模擬器,在模擬器上運(yùn)行該工程,在模擬器上將會(huì)出現(xiàn)已經(jīng)做好的手機(jī)界面,運(yùn)行完成,調(diào)試成功。然后將手機(jī)連接到電腦上,打開(kāi)安卓手機(jī)的USB接口。接下來(lái)點(diǎn)擊運(yùn)行整個(gè)工程項(xiàng)目,在手機(jī)上出現(xiàn)前面那個(gè)做好的藍(lán)牙小車(chē)控制界面。點(diǎn)擊各個(gè)按鈕,都無(wú)問(wèn)題,證明該JAVA程序沒(méi)有問(wèn)題。 系統(tǒng)整體的調(diào)試,藍(lán)牙控制小車(chē)的硬件模塊和軟件模塊分別調(diào)試通過(guò)后,接下來(lái)就可以進(jìn)行系統(tǒng)的整體測(cè)試。首先檢查各個(gè)模塊之間,以及電機(jī)驅(qū)動(dòng)與電機(jī)的連接都沒(méi)有出錯(cuò)的情況下,打開(kāi)給各個(gè)模塊提供的5V電源以及打開(kāi)給電機(jī)提供的另一個(gè)6V電源。此時(shí)最小系統(tǒng)模塊指示燈點(diǎn)亮,表示單片機(jī)供電正常,藍(lán)牙模塊
49、指示燈開(kāi)始閃爍,表示藍(lán)牙模塊也供電正常。此時(shí)打開(kāi)安卓手機(jī)的藍(lán)牙,搜索該藍(lán)牙芯片,進(jìn)行配對(duì)。然后打開(kāi)我們做好的手機(jī)界面,當(dāng)界面打開(kāi)之后,開(kāi)始自動(dòng)搜索藍(lán)牙芯片的地址進(jìn)行連接,當(dāng)藍(lán)牙芯片的指示燈有閃爍轉(zhuǎn)變?yōu)槌A烈院?,表示藍(lán)牙配對(duì)連接成功。在剛開(kāi)始的時(shí)候調(diào)試的時(shí)候遇到了一些問(wèn)題,在電機(jī)驅(qū)動(dòng)方面,當(dāng)在手機(jī)端的界面上點(diǎn)擊前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)按鈕的時(shí)候,藍(lán)牙模塊能接受手機(jī)端發(fā)送的字符A、B、C、D的ASCII碼值,并且能夠通過(guò)串口相應(yīng)的傳遞給單片機(jī),單片機(jī)通過(guò)分析串口傳過(guò)來(lái)的數(shù)據(jù),改變P2口的值分別為65、66、67、68,來(lái)控制電機(jī)驅(qū)動(dòng)的輸入端IN1、IN2、IN3、IN4。相應(yīng)的電機(jī)驅(qū)動(dòng)端的四個(gè)指示L
50、ED燈都能根據(jù)數(shù)據(jù)的變化采取不同的量滅組合情況,來(lái)相應(yīng)控制小車(chē)的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)。以下是在手機(jī)上設(shè)置的安卓程序啟動(dòng)和小車(chē)的藍(lán)牙成功配對(duì)圖。 在調(diào)試的過(guò)程中也遇到一些問(wèn)題,就是最開(kāi)始電機(jī)驅(qū)動(dòng)輸出端控制的電機(jī)卻不會(huì)轉(zhuǎn)動(dòng)。通過(guò)分析,可能有兩個(gè)原因?qū)е码姍C(jī)不會(huì)轉(zhuǎn)動(dòng),其一,電機(jī)驅(qū)動(dòng)的輸出端的接線出現(xiàn)了錯(cuò)誤,導(dǎo)致電機(jī)轉(zhuǎn)動(dòng)出現(xiàn)問(wèn)題;其二,電機(jī)驅(qū)動(dòng)端接的給電機(jī)供電的電壓達(dá)不到驅(qū)動(dòng)電機(jī)的最低電壓,最后通過(guò)查詢資料和用萬(wàn)用表測(cè)驅(qū)動(dòng)模塊的輸出端的各個(gè)引腳的高低電平,發(fā)現(xiàn)輸出端的電平也能隨輸入端的改變而變化,當(dāng)最后測(cè)試VCC和GND兩端,發(fā)現(xiàn)無(wú)明顯的壓降,再用萬(wàn)用表的測(cè)電阻值測(cè)兩端的阻值,發(fā)現(xiàn)問(wèn)題是電機(jī)驅(qū)動(dòng)模塊
51、輸出端的供電端VCC與GND端短路,導(dǎo)致外接電源不能給電機(jī)供電。最后我通過(guò)直接從芯片的引腳接線到電源端,則電機(jī)能夠正常轉(zhuǎn)動(dòng)。 第6章 總結(jié)與體會(huì) 本次畢業(yè)設(shè)計(jì)是一個(gè)基于單片機(jī)AT89C52的智能小車(chē)控制,包括方案選擇、軟硬件設(shè)計(jì)、單片機(jī)最小系統(tǒng)、電機(jī)驅(qū)動(dòng)電路和藍(lán)牙電路、硬件測(cè)試結(jié)果及解決在電路調(diào)試時(shí)遇到的問(wèn)題。在此期間主要完成的工作包括以下幾個(gè)方面: (1)設(shè)計(jì)初期收集電機(jī)驅(qū)動(dòng)、單片機(jī)等相關(guān)資料,對(duì)智能小車(chē)的實(shí)現(xiàn)原理有比較清晰的了解。 (2)確定系統(tǒng)框圖,對(duì)電源模塊、單片機(jī)最小系統(tǒng)模塊、藍(lán)牙電路模塊和電機(jī)及其驅(qū)動(dòng)電路模塊等的實(shí)施方案進(jìn)行比較,確定最終的智能小車(chē)控制的設(shè)計(jì)方案。 (3)根據(jù)智能小
52、車(chē)控制的原理圖制作出電路連接圖。 (4)根據(jù)系統(tǒng)要實(shí)現(xiàn)前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等功能編寫(xiě)出小車(chē)端的軟件程序。 (5)在eclipes開(kāi)發(fā)環(huán)境下,應(yīng)用JAVA程序編寫(xiě)手機(jī)界面程序,并且通過(guò)模擬器來(lái)檢測(cè)手機(jī)界面程序。 (6)軟硬件調(diào)試通過(guò)后進(jìn)行整體調(diào)試,并查找該系統(tǒng)存在的缺陷,進(jìn)行完善。 (7)最終小車(chē)能夠?qū)崿F(xiàn)前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等功能,達(dá)到老師給出的基本要求。 本次設(shè)計(jì)完成了基于安卓手機(jī)的智能小車(chē)控制系統(tǒng)。該系統(tǒng)采用51單片機(jī)AT89C52編程控制電機(jī)的正反轉(zhuǎn)來(lái)實(shí)現(xiàn)小車(chē)前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn),而電機(jī)的正反轉(zhuǎn)則由電機(jī)驅(qū)動(dòng)L298N輸出端的邏輯電平來(lái)控制。 從整個(gè)設(shè)計(jì)的過(guò)程來(lái)看前期的充分的準(zhǔn)備顯得非
53、常的重要,經(jīng)過(guò)前期充分的準(zhǔn)備,和對(duì)嵌入式系統(tǒng)開(kāi)發(fā)的學(xué)習(xí),避免了很多在后續(xù)的設(shè)計(jì)中可能出現(xiàn)的問(wèn)題。 MCU端的軟硬件設(shè)計(jì)因?yàn)榕c所學(xué)知識(shí)相關(guān)性較大,所以出現(xiàn)的問(wèn)題較少,MCU底板設(shè)計(jì)時(shí)鑒于電路簡(jiǎn)單,且易于焊接,故未采用PCB制版也相應(yīng)的節(jié)約了成本。特別值得一提的是為了提高系統(tǒng)在硬件上的安全性和穩(wěn)定性,我特別添加了硬件保護(hù)裝置,以提高系統(tǒng)的硬件防碰撞的能力。主要的問(wèn)題出現(xiàn)在android端的軟件設(shè)計(jì)上,由于對(duì)android開(kāi)發(fā)環(huán)境的不熟悉,缺乏一些在編寫(xiě)JAVA程序時(shí)的一些技巧性問(wèn)題,所以剛剛開(kāi)始時(shí)總是出現(xiàn)很多問(wèn)題,并且出現(xiàn)的問(wèn)題都需要查找相關(guān)資料才能解決。通過(guò)學(xué)習(xí)一些android相關(guān)的學(xué)習(xí)視頻,
54、最后對(duì)android環(huán)境有了一個(gè)系統(tǒng)的了解在開(kāi)發(fā)的過(guò)程中也得心應(yīng)手些。 Android端圖形界面的設(shè)計(jì)也是一大難點(diǎn),基于Java的圖形界面設(shè)計(jì)不論是從設(shè)計(jì)平臺(tái)還是Java語(yǔ)言的掌握都是一想挑戰(zhàn),但幸于Java軟件的開(kāi)發(fā)技術(shù)已經(jīng)成熟,且可查閱的資料多且詳盡,所以圖形界面的設(shè)計(jì)達(dá)到設(shè)計(jì)時(shí)的五項(xiàng)按鍵要求,功能實(shí)現(xiàn)良好,除界面的友好程度可以更加優(yōu)化外,其余完成任務(wù)。 總體來(lái)看,我進(jìn)行了比較充分的準(zhǔn)備,在實(shí)踐過(guò)程中通過(guò)查閱相關(guān)資料和咨詢有關(guān)人員,克服了系統(tǒng)設(shè)計(jì)過(guò)程中的絕大多數(shù)困難,基本都以達(dá)到設(shè)計(jì)要求,并通過(guò)了軟件測(cè)試。 第7章 謝辭(致謝)畢業(yè)設(shè)計(jì)完成了,在這個(gè)過(guò)程中我學(xué)到了很多東西。首先我要感謝我的
55、導(dǎo)師張岷濤老師,他在我完成論文的過(guò)程中,給予了我很大的幫助。在論文開(kāi)始的初期,我對(duì)于論文的結(jié)構(gòu)以及文獻(xiàn)選取等方面都有很多問(wèn)題,是在老師的幫助下進(jìn)行修改和完善的。本畢業(yè)設(shè)計(jì)是在張岷濤老師悉心的關(guān)懷與指導(dǎo)下完成,在此對(duì)老師獻(xiàn)上最衷心地感謝。張岷濤老師從畢業(yè)設(shè)計(jì)一開(kāi)始就對(duì)我們嚴(yán)格要求,每周的周一都會(huì)和我們開(kāi)見(jiàn)面會(huì),詢問(wèn)我們的畢設(shè)進(jìn)度并了解我們遇到的困難,積極協(xié)助我們解決設(shè)計(jì)過(guò)程中的各種難題,并要求我們每天記錄在畢業(yè)設(shè)計(jì)中所作的工作進(jìn)度及遇到的問(wèn)題,讓我們?nèi)グl(fā)現(xiàn)問(wèn)題,解決問(wèn)題。在我遇到難已解決的問(wèn)題心中急躁時(shí),張岷濤老師總是及時(shí)的給予鼓勵(lì),使我能夠有勇敢的克服困難,把畢設(shè)繼續(xù)進(jìn)行下去。張岷濤老師對(duì)學(xué)生
56、的高度關(guān)注和對(duì)工作高度負(fù)責(zé)的精神值得我們尊敬,也是我今后走向工作崗位的榜樣。通過(guò)本次畢業(yè)設(shè)計(jì),我不僅是對(duì)我們所學(xué)知識(shí)的一個(gè)匯總,同時(shí)也是考驗(yàn)我們學(xué)習(xí)能力和動(dòng)手能力的一個(gè)平臺(tái);讓我們能學(xué)到更多的相關(guān)知識(shí),更重要的是學(xué)到了面對(duì)困難的不放棄、不氣餒的態(tài)度,不驕不躁的辦事風(fēng)格,奮發(fā)向上的精神,這些在我今后的生活和學(xué)習(xí)中都是一筆寶貴的財(cái)富。 第8章 參考文獻(xiàn)1郭惠,吳迅.單片機(jī)C語(yǔ)言程序設(shè)計(jì)完全自學(xué)手冊(cè)M.電子工業(yè)出版社,2008.10:1-200.2王東鋒,王會(huì)良,董冠強(qiáng). 單片機(jī)C語(yǔ)言應(yīng)用100例M. 電子工業(yè)出版社,2009.3:145-300.3韓毅,楊天. 基于HCS12單片機(jī)的智能尋跡模型車(chē)
57、的設(shè)計(jì)與實(shí)現(xiàn)J.學(xué)術(shù)期刊,2008,29(18):1535-1955.4 王曉明. 電動(dòng)機(jī)的單片機(jī)控制J. 學(xué)術(shù)期刊,2002,13(15):1322-1755.5 胡萍.超聲波測(cè)距儀的研制.計(jì)算機(jī)與現(xiàn)代化,2003.10 6 華兵.MCS-51單片機(jī)原理應(yīng)用.武漢:武漢華中科技大學(xué)出版社,2002 .5 7 李華.MCU-51系列單片機(jī)實(shí)用接口技術(shù).北京:北京航空航天大學(xué)出版社, 1993. 6 8 STC12C5A系列單片機(jī)中文資料 STC宏晶單片機(jī)官方網(wǎng)站附錄:(換頁(yè)。之前空一行,空行為小四) 安卓手機(jī)上藍(lán)牙程序設(shè)計(jì)主界面布局在reslayout下新建fragment_main.xml。
58、其中添加4個(gè)Button,分別控制小車(chē)的前后左右;1個(gè)ToggleButton來(lái)控制重力感應(yīng)的開(kāi)啟。兩個(gè)TextView做裝飾。源碼如下:html view plaincopy 2.在reslayout下新建search_bt.xml。用來(lái)設(shè)置搜索藍(lán)牙的界面。html view plaincopy 3.在reslayout下新建device_name.xml。用來(lái)設(shè)置搜索到的藍(lán)牙設(shè)備的字體大小。html view plaincopy 4.resvalue下string.xml。html view plaincopy 藍(lán)牙小車(chē) 2014屆理工畢業(yè)設(shè)計(jì) 重力感應(yīng)開(kāi)啟 重力感應(yīng)關(guān)閉 向左 向右 向前
59、 向后 藍(lán)牙小車(chē)測(cè)試版 連接藍(lán)牙設(shè)備 退出 無(wú)配對(duì)設(shè)備 選擇以連接 無(wú)其他可用設(shè)備 搜索其他設(shè)備 已配對(duì)的設(shè)備 可用設(shè)備 正在連接. 界面設(shè)計(jì)完了,下面開(kāi)始著重于藍(lán)牙搜索與連接功能。本文主要參考了SDK中的sample。源碼可在查看,附上鏈接:/code/explore/android-2.2-froyo/com/example/android/BluetoothChat下面介紹一下有關(guān)藍(lán)牙的使用。1. 獲取藍(lán)牙權(quán)限 要使用藍(lán)牙先得獲取藍(lán)牙權(quán)限,在AndroidManifest.xml中添加BLUETOOTH和BLUETOOTH_ADMINjava view plaincopy 2. 獲取 B
60、luetoothAdapter類 可以通過(guò)getBluetoothAdapter() 的方法來(lái)獲取BluetoothAdapterjava view plaincopyprivate BluetoothAdapter mBluetoothAdapter = null; mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter = null) Toast.makeText(this, 藍(lán)牙不可用, Toast.LENGTH_LONG).show(); finish(); return; 3. 打
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 施工方案排版海報(bào)(3篇)
- 幼師六一策劃活動(dòng)方案(3篇)
- 線上投籃活動(dòng)方案策劃(3篇)
- 非稅社保培訓(xùn)課件
- 2026年物流無(wú)人配送系統(tǒng)創(chuàng)新報(bào)告
- 高中化學(xué)教育數(shù)字資源社區(qū)驅(qū)動(dòng)模式下的化學(xué)實(shí)驗(yàn)探究能力培養(yǎng)教學(xué)研究課題報(bào)告
- 2026年兒童教育機(jī)器人交互報(bào)告及未來(lái)五至十年智能教育報(bào)告
- 護(hù)理心理學(xué)的教育與方法論
- 餐飲廚房操作與食品安全管理手冊(cè)
- 護(hù)理器械的虛擬現(xiàn)實(shí)培訓(xùn)
- 賈俊平《統(tǒng)計(jì)學(xué)》第7版復(fù)習(xí)筆記和課后習(xí)題答案+習(xí)題及詳解
- 教學(xué)第九章-人體寄生蟲(chóng)概述課件
- 2020年華為采購(gòu)物料環(huán)保規(guī)范?V4
- 綠化養(yǎng)護(hù)、保潔服務(wù)重點(diǎn)難點(diǎn)分析及解決措施
- 企業(yè)管理GoldenSample管理辦法
- 湖北大學(xué)教職工登記表
- 2020年注冊(cè)會(huì)計(jì)師(CPA)16第十六章收入、費(fèi)用和利潤(rùn)(2020新教材版)課件
- 隧道穿越大型活動(dòng)斷裂帶的技術(shù)對(duì)策
- 匯川伺服追剪控制指導(dǎo)說(shuō)明完整版
- GB∕T 5273-2016 高壓電器端子尺寸標(biāo)準(zhǔn)化(高清版)
- GB 190-2009 危險(xiǎn)貨物包裝標(biāo)志(高清版)
評(píng)論
0/150
提交評(píng)論