版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
摘要隨著科學(xué)技術(shù)的開(kāi)展和人們生活水平的提高,人們?cè)絹?lái)越注重自己生活環(huán)境的舒適、平安與便利。近年來(lái)興起的智能家居系統(tǒng)滿足了人們的這種需求,它有效地在家居環(huán)境中組建家庭信息網(wǎng)絡(luò),將各種家電產(chǎn)品結(jié)合成一個(gè)有機(jī)整體,對(duì)家電設(shè)備進(jìn)行集中或異地的智能化控制與管理,并且能夠與外界進(jìn)行信息交流。藍(lán)牙技術(shù)作為一種無(wú)線數(shù)據(jù)與語(yǔ)音通信的開(kāi)放性全球標(biāo)準(zhǔn),可提供低功耗、短距離的無(wú)線空中接口,在各種固定與移動(dòng)設(shè)備之間實(shí)現(xiàn)無(wú)線通信。在移動(dòng)通信、無(wú)線數(shù)據(jù)采集、無(wú)線遙控與遙測(cè)、計(jì)算機(jī)網(wǎng)絡(luò)及自動(dòng)控制等多種領(lǐng)域,藍(lán)牙技術(shù)都有著廣泛的應(yīng)用。應(yīng)用設(shè)計(jì)的藍(lán)牙軟硬件接口,本文開(kāi)發(fā)了一個(gè)基于藍(lán)牙模塊的智能家居控制系統(tǒng),在該系統(tǒng)中,上位機(jī)端通過(guò)USB控制藍(lán)牙適配器,其發(fā)送的控制指令由下位機(jī)端藍(lán)牙模塊接收后傳給單片機(jī),并在單片機(jī)端編寫了一個(gè)根本的藍(lán)牙及模擬家電控制程序,從而實(shí)現(xiàn)了PC與模擬家電的無(wú)線控制功能。本文提供的藍(lán)牙軟硬件接口方案及數(shù)據(jù)傳輸模塊,不僅可以用來(lái)進(jìn)一步開(kāi)發(fā)藍(lán)牙高層協(xié)議,而且還可作為通用的接口函數(shù)和模塊應(yīng)用到多種無(wú)線場(chǎng)合。關(guān)鍵字:藍(lán)牙技術(shù);智能家居;藍(lán)牙模塊ABSTRACTWiththedevelopmentofscienceandtechnology,andtheimprovementofpeople’slivingstandards,peoplearepayingmoreandmoreattentiontothecomfortablity,safetyandconvenienceoftheirlivingenvironment.Theemergenceofsmarthomesysteminrecentyears,justmeetstheneedsofpeople.Iteffectivelyconstitutesappliancesintoahomeinformationnetworkandmakesallkindsofappliancescombinedintoanorganicwhole.Itcanintelligentlycontrolapplianceslocallyorremotely,andexchangeinformationwiththeoutsideworld.AsagloballyopenwirelessdataandspeechcommunicationspecificationBluetoo—thtechnologycanprovidelow-power、shortdistancewirelessairinterfaceandimplementwirelesscommunicationbetweenvariousfixedandmobileequipments.Bluetoothtechnologyhasawiderangeofapplicationsinmobilecommunications,wirelessdatacollections,wirelessremotecontrolandsensingComputernetworkandautomaticcontrolandotherareas.Usingthebluetoothhardwareandsoftwareinterfacedesigned,ThispaperdevelopedansmarthomefurnishingcontrolsystembasedonBluetoothmodule.Inthesystem,ThePCsideiscontrolledbyUSBbluetoothadapter.It’scontrolinstructionisreceivedbythelowerendofBluetoothmodulewhichsentittothemicrocontroller.AbasicbluetoothandhomeappliancecontrolsimulationprogramwaspreparedintheMCU.So,thesystemcanrealizewirelesscontrolfunctionofPCandsimulationofelectricalappliances.Andthen,datacanbetransmittedbetweenthetwoparts.Afterthat,afurtherdevelopmentwhichisfiletransmissionisimplemented.Keywords:Bluetoothtechnology;smarthome;Bluetoothmoudule目錄前言1第一章緒論21.1課題研究背景21.2智能家居的開(kāi)展?fàn)顩r21.3未來(lái)智能家居的開(kāi)展趨勢(shì)31.4研究的目的和意義31.5課題研究的內(nèi)容4第二章藍(lán)牙技術(shù)介紹52.1藍(lán)牙系統(tǒng)組成52.2藍(lán)牙協(xié)議棧62.3藍(lán)牙控制器接口(HCI)分析62.3.1HCI概述62.3.2HCI傳輸層72.3.3HCI分組格式8第三章設(shè)計(jì)方案及模塊介紹103.1藍(lán)牙家居控制系統(tǒng)組成結(jié)構(gòu)103.2主要硬件模塊介紹10第四章系統(tǒng)硬件設(shè)計(jì)144.1下位機(jī)模塊設(shè)計(jì)14PC機(jī)與藍(lán)牙模塊的連接164.3單片機(jī)與家用電器的連接17系統(tǒng)電源模塊原理圖17第五章系統(tǒng)軟件設(shè)計(jì)195.1單片機(jī)端軟件設(shè)計(jì)195.2PC端軟件設(shè)計(jì)24第六章系統(tǒng)測(cè)試與分析29結(jié)論31致謝32參考文獻(xiàn)33附錄34前言隨著科學(xué)技術(shù)的開(kāi)展和人們生活水平的提高,人們?cè)絹?lái)越注重自己生活環(huán)境的舒適、平安與便利。近年來(lái)興起的智能家居系統(tǒng)滿足了人們的這種需求,它有效地在家居環(huán)境中組建家庭信息網(wǎng)絡(luò),將各種家電產(chǎn)品結(jié)合成一個(gè)有機(jī)整體,對(duì)家電設(shè)備進(jìn)行集中或異地的智能化控制與管理,并且能夠與外界進(jìn)行信息交流。首先,在研究藍(lán)牙SPP應(yīng)用模型和我國(guó)《家庭控制子網(wǎng)通信協(xié)議標(biāo)準(zhǔn)》的根底上,經(jīng)過(guò)比擬當(dāng)前各種家庭內(nèi)部組網(wǎng)技術(shù)的優(yōu)劣,選擇了基于藍(lán)牙協(xié)議的家庭控制子網(wǎng)的實(shí)現(xiàn)方案。該方案使用藍(lán)牙SPP模型來(lái)承載通用設(shè)備控制協(xié)議,降低了家庭控制子網(wǎng)組網(wǎng)過(guò)程中的難度,符合實(shí)際應(yīng)用場(chǎng)景。其次,研究并提出了智能家居系統(tǒng)實(shí)現(xiàn)過(guò)程中處于核心地位的智能家居控制器的軟硬件設(shè)計(jì)方案。在硬件方面,選用Samsung公司具有較高性價(jià)比的ARM9芯片S3C2410作為其CPU,完成了智能家居控制器的電源、顯示、輸入、存儲(chǔ)以及無(wú)線藍(lán)牙和GPRS的模塊的電路設(shè)計(jì);在軟件方面,成功地將U-boot、嵌入式Linux內(nèi)核和藍(lán)牙協(xié)議棧BlueZ移植到了智能家居控制器目標(biāo)板上,并在Linux內(nèi)核中為系統(tǒng)各個(gè)硬件模塊添加了相應(yīng)的驅(qū)動(dòng)程序。最后,對(duì)藍(lán)牙模塊進(jìn)行了測(cè)試,實(shí)現(xiàn)了藍(lán)牙的點(diǎn)對(duì)點(diǎn)通信,并且為系統(tǒng)開(kāi)發(fā)了局部常用的界面。對(duì)研究工作做了總結(jié),列出了所實(shí)現(xiàn)的研究成果以及有待實(shí)現(xiàn)的智能家居控制系統(tǒng)的功能。第一章緒論1.1課題研究背景智能家居,或稱智能住宅,在英文中常用SmartHome、Intelligenthome,與此含義相近的還有家庭自動(dòng)化(HomeAutomation)、電子家庭(ElectronicHome、E-home)、數(shù)字家園(Digitalfamily)、網(wǎng)絡(luò)家居(NetworkHome),智能建筑(IntelligentBuilding)。智能家居是以住宅為平臺(tái),兼?zhèn)浣ㄖ⒕W(wǎng)絡(luò)通訊、信息家電、設(shè)備自動(dòng)化,集系統(tǒng)、結(jié)構(gòu)、效勞、管理為一體的高效、舒適、平安、便利、環(huán)保的居住環(huán)境。智能家居是在家庭產(chǎn)品自動(dòng)化、智能化的根底上,通過(guò)網(wǎng)絡(luò)按擬人化的要求而實(shí)現(xiàn)的。智能家居可以定義為一個(gè)過(guò)程或者一個(gè)系統(tǒng),利用先進(jìn)的計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)通訊技術(shù)、綜合布線技術(shù)、無(wú)線技術(shù)、將與家居生活有關(guān)的各種子系統(tǒng),有機(jī)地結(jié)合在一起。與普通家居相比,由原來(lái)的被動(dòng)靜止結(jié)構(gòu)轉(zhuǎn)變?yōu)榫哂心軇?dòng)智能的工具,提供全方位的信息交換功能,幫助家庭與外部保持信息交流暢通。智能家居強(qiáng)調(diào)人的主觀能動(dòng)性,要求重視人與居住環(huán)境的協(xié)調(diào),能夠隨心所欲地控制室內(nèi)居住環(huán)境。1.2智能家居的開(kāi)展?fàn)顩r智能家居從上世紀(jì)八十年代興起于日本和歐美,九十年代末引入中國(guó),目前美國(guó)有7000萬(wàn)家庭依靠智能家庭網(wǎng)絡(luò)設(shè)備生活。近年來(lái),以美國(guó)微軟公司及摩托羅拉公司等為首的一批國(guó)際知名企業(yè)先后進(jìn)入智能家庭網(wǎng)絡(luò)的研究及開(kāi)發(fā)領(lǐng)域,分辨開(kāi)發(fā)了“夢(mèng)幻之家〞、“家庭主任〞、“居所之門〞等家庭智能設(shè)備,3COM公司研發(fā)出家用無(wú)線網(wǎng)關(guān)等網(wǎng)絡(luò)產(chǎn)品,并與Microsoft聯(lián)手開(kāi)發(fā)通用式即插即用的家庭網(wǎng)絡(luò)系統(tǒng)。該系統(tǒng)方便地連接家電與網(wǎng)絡(luò),可以高速傳輸文字、語(yǔ)音、視聽(tīng)等咨詢。這套產(chǎn)品也適用于小型辦公室。國(guó)內(nèi)廠商也在進(jìn)行智能化家庭網(wǎng)絡(luò)產(chǎn)品的研發(fā)和生產(chǎn),一大批大型IT企業(yè)利用自身在資金與技術(shù)等方面的優(yōu)勢(shì),在低端市場(chǎng)上已占據(jù)了相當(dāng)重要的地位。清華同方在智能化家庭網(wǎng)絡(luò)領(lǐng)域與建設(shè)部智能化專家委員會(huì)共同設(shè)立了智能住宅開(kāi)放實(shí)驗(yàn)室,還取得了著名綜合布線廠商西蒙、百通全線產(chǎn)品在中國(guó)的總代理資格。北京德達(dá)創(chuàng)先科技集團(tuán)先后開(kāi)發(fā)了LDM-2000,智能家居控制器、HomeNet網(wǎng)絡(luò)化綜合管理系統(tǒng),并開(kāi)通了中國(guó)智能建筑效勞網(wǎng)絡(luò)提供智能化建筑的在線咨詢與在線技術(shù)支持該網(wǎng)站已成為國(guó)內(nèi)建筑化領(lǐng)域的權(quán)威網(wǎng)站。1.3未來(lái)智能家居的開(kāi)展趨勢(shì)如何使家居環(huán)境變得便利、舒適、人性化、智能化,真正提高人們的生活品質(zhì),才是智能家居系統(tǒng)的開(kāi)展方向,其開(kāi)展趨勢(shì)主要有以下幾個(gè)方面:(1)向個(gè)性化方向開(kāi)展人們可以根據(jù)自己的需要和喜好,選擇不同的功能,智能家居開(kāi)展將不斷滿足人們要求個(gè)性化的需求。(2)向系統(tǒng)高度集成化方向開(kāi)展信息家電控制功能、呼叫對(duì)講功能、自動(dòng)化管理功能、安防監(jiān)控功能、設(shè)備自檢功能等多種功能將被集成在一起,統(tǒng)一調(diào)度,從而降低本錢。隨著科學(xué)技術(shù)的不斷開(kāi)展,系統(tǒng)的集成度將越來(lái)越高。(3)向網(wǎng)絡(luò)化方向開(kāi)展網(wǎng)絡(luò)化是計(jì)算機(jī)、通訊、電子和物聯(lián)網(wǎng)等多種技術(shù)開(kāi)展的必然趨勢(shì),也是智能家居智能化的一個(gè)重要表達(dá)。(4)向綠色環(huán)保方向開(kāi)展環(huán)保是全球的要求,智能家居如何利用現(xiàn)有技術(shù)減少功耗、降低對(duì)社區(qū)和家庭的環(huán)境污染,提高生活環(huán)境的質(zhì)量,是智能化的一個(gè)重要目標(biāo)。研究的目的和意義隨著經(jīng)濟(jì)的開(kāi)展和后PC、物聯(lián)網(wǎng)時(shí)代的到來(lái),人們對(duì)自身居住環(huán)境的要求在不斷地提高,智能化家居將逐漸成為中國(guó)家居市場(chǎng)的主流。目前,在上海、北京、廣州、深圳等經(jīng)濟(jì)比擬興旺的地區(qū)都已經(jīng)建立了一批智能型住宅小區(qū),并且正飛速地向其他地區(qū)輻射。智能家居將大大改變?nèi)藗兊娜粘I詈凸ぷ鞣绞?,帶?dòng)傳統(tǒng)家電制造業(yè)、房屋智能化裝修、社區(qū)信息效勞、以及房地產(chǎn)業(yè)等相關(guān)產(chǎn)業(yè)的蓬勃開(kāi)展。家居智能化、建筑信息化以及相關(guān)技術(shù)產(chǎn)品正在得到飛速地開(kāi)展,智能化家居將很快將會(huì)走入人們的生活。建設(shè)部已將智能化住宅小區(qū)列為國(guó)家重點(diǎn)開(kāi)展方向,智能化小區(qū)包括了智能家居的設(shè)計(jì),智能家居建設(shè)是智能小區(qū)建設(shè)的一局部。目前,國(guó)家已經(jīng)投入了大量的財(cái)力和人力在設(shè)計(jì)和開(kāi)發(fā)符合中國(guó)國(guó)情的智能家居,因此嵌入式智能家居工程的應(yīng)用前景非常廣闊的。但是,由于智能家居市場(chǎng)的開(kāi)展還處于初級(jí)階段,智能家居的中的信息設(shè)備之間的通信還不是很標(biāo)準(zhǔn)。為此早在2005年,國(guó)家已經(jīng)制定出了《家庭網(wǎng)絡(luò)系統(tǒng)體系結(jié)構(gòu)及參考模型家庭控制子網(wǎng)通信協(xié)議標(biāo)準(zhǔn)》、《家庭控制子網(wǎng)通信協(xié)議標(biāo)準(zhǔn)》等標(biāo)準(zhǔn)來(lái)推動(dòng)和管理中國(guó)智能家居市場(chǎng)的健康地開(kāi)展。智能家居控制器是智能家居的核心器件,人們只需一個(gè)控制器就可以控制家中的所有電器設(shè)備。本文主要研究了智能家居網(wǎng)絡(luò)的組建,智能家居控制器的設(shè)計(jì),這是智能家居實(shí)現(xiàn)過(guò)程中的重要內(nèi)容,具有廣泛的現(xiàn)實(shí)意義,為將來(lái)的智能家居提供了一種可行的設(shè)計(jì)方案。1.5課題研究的內(nèi)容主要通過(guò)使各種各樣的智能家電都遵守藍(lán)牙協(xié)議構(gòu)建家庭控制子網(wǎng),在完成智能家居控制器硬件與軟件設(shè)計(jì)的根底上,將控制器應(yīng)用到了網(wǎng)絡(luò)化的智能家居系統(tǒng)中。課題研究主要內(nèi)容具體如下:(1)通信協(xié)議的選擇分析家庭內(nèi)部網(wǎng)絡(luò)的體系結(jié)構(gòu),對(duì)當(dāng)前智能家居組網(wǎng)協(xié)議進(jìn)行研究和比擬,選定了一個(gè)符合家庭內(nèi)部組網(wǎng)具體要求的通信協(xié)議。(2)智能家居控制器硬件的設(shè)計(jì)首先,根據(jù)對(duì)智能家居控制器的具體要求例如功耗、本錢、體積等,為其選擇一個(gè)性價(jià)比比擬高的CPU;然后,分別對(duì)其余各個(gè)功能模塊進(jìn)行硬件電路的設(shè)計(jì)與調(diào)試。(3)智能家居控制器軟件的設(shè)計(jì)。給出軟件流程框圖,包括運(yùn)行在單片機(jī)和PC機(jī)上程序,本論文中均采用C語(yǔ)言進(jìn)行編寫第二章藍(lán)牙技術(shù)介紹2.1藍(lán)牙系統(tǒng)組成典型的藍(lán)牙系統(tǒng)可分為5個(gè)單元,即無(wú)線射頻單元、鏈路控制單元、鏈路管理單元、藍(lán)牙協(xié)議軟件單元和主機(jī)應(yīng)用軟件單元。(1)無(wú)線射頻單元藍(lán)牙是以無(wú)線LAN的IEEE802.11標(biāo)準(zhǔn)技術(shù)為根底的,使用2.4GHzISM全球通自由波段。藍(lán)牙天線屬于微帶天線,空中接口建立在天線電平為0dBm根底上,遵從FCC(FederalCommunicationsCommission,美國(guó)聯(lián)邦通信委員會(huì).)有關(guān)OdBm電平的ISM頻段的標(biāo)準(zhǔn)。由于采用擴(kuò)頻技術(shù),發(fā)射功率可以到達(dá)100mW。系統(tǒng)最大跳頻速率為1600跳/秒,在2.402GHz和2.480GHz之間,采用79個(gè)間隔為1MHz的頻點(diǎn)來(lái)實(shí)現(xiàn)【31。系統(tǒng)設(shè)計(jì)通信距離為10cm~10m,如增大發(fā)射功率,其距離可長(zhǎng)達(dá)100m。(2)鏈路控制單元藍(lán)牙的鏈路控制單元,又稱基帶單元,包括3個(gè)集成芯片:連接控制器、基帶處理器以及射頻傳輸/接收器,此外還使用了3—5個(gè)單獨(dú)調(diào)諧元件。綜述鏈路控制單元描述了基帶鏈路控制器的數(shù)字信號(hào)處理標(biāo)準(zhǔn)?;鶐ф溌房刂破髫?fù)責(zé)處理基帶協(xié)議和其它一些低層常規(guī)協(xié)議。鏈路控制單元的主要功能包括:建立物理鏈路及網(wǎng)絡(luò)連接,包括面向連接的同步鏈路SCO(SynchronousConnectionOriented)鏈路、異步鏈路ACL(AsynchronousConnectionless)鏈路及匹克網(wǎng);過(guò)失控制;在物理層提供驗(yàn)證和加密,其中驗(yàn)證基于“請(qǐng)求.響應(yīng)〞運(yùn)算法那么實(shí)現(xiàn),為用戶建立一個(gè)個(gè)人的信任域,而加密那么用來(lái)保護(hù)連接中的個(gè)人信息。(3)鏈路管理單元鏈路管理器LM(LinkManager)軟件模塊設(shè)計(jì)了鏈路的數(shù)據(jù)設(shè)置、鑒權(quán)、鏈路硬件配置和其它一些協(xié)議。鏈路管理器能夠發(fā)現(xiàn)其它藍(lán)牙設(shè)備的鏈路管理器,并通過(guò)鏈路管理協(xié)議LMP(LinkMallagerProtoc01)建立通信聯(lián)系。鏈路管理器提供諸如發(fā)送和接收數(shù)據(jù)、設(shè)備號(hào)請(qǐng)求、鏈路地址查詢、建立連接、鑒權(quán)、鏈路模式協(xié)商和建立、設(shè)備模式的切換等功能。2.2藍(lán)牙協(xié)議棧藍(lán)牙協(xié)議棧體系結(jié)構(gòu)為分層結(jié)構(gòu),具體如圖2.1所示。圖2.1藍(lán)牙協(xié)議棧體系結(jié)構(gòu)藍(lán)牙技術(shù)標(biāo)準(zhǔn)的目的是使符合該標(biāo)準(zhǔn)的各種應(yīng)用之間能夠?qū)崿F(xiàn)互操作15J?;ゲ僮鞯倪h(yuǎn)端設(shè)備需要使用相同的協(xié)議棧,不同的應(yīng)用需要不同的協(xié)議棧。并不是任何應(yīng)用都必須使用全部協(xié)議,而是可以只使用其中的一層或多層。但是,所有的應(yīng)用都要使用藍(lán)牙技術(shù)標(biāo)準(zhǔn)中的數(shù)據(jù)鏈路層和物理層。藍(lán)牙控制器接口(HCI)分析HCI概述主機(jī)控制器接口(HCI)處于藍(lán)牙協(xié)議棧的中間層,它提供了藍(lán)牙主機(jī)訪問(wèn)藍(lán)牙主機(jī)控制器的基帶與鏈路控制器、鏈路管理器、狀態(tài)存放器等硬件的統(tǒng)一接口。藍(lán)牙主機(jī)控制器(BluctoothHostController)是藍(lán)牙芯片的主要組成局部,其內(nèi)部硬件結(jié)構(gòu)如圖2.2所示。鏈路控制器提供了藍(lán)牙基帶功能以及物理層協(xié)議的硬件和軟件實(shí)現(xiàn);CPU核提供了鏈路管理器和鏈路控制器的固件局部的運(yùn)行環(huán)境,使得主機(jī)控制器可獨(dú)立于主機(jī)進(jìn)行查詢和過(guò)濾呼叫請(qǐng)求。圖2.2藍(lán)牙主機(jī)控制器內(nèi)部硬件結(jié)構(gòu)圖硬件方面,主機(jī)控制器集成了無(wú)線電收發(fā)器、基帶控制器、Flash存儲(chǔ)器等局部,其中基帶控制器大多是以ARM為根底的芯片,通過(guò)接口控制無(wú)線電收發(fā)器,提供物理接H(USB/UART/PCM等)。藍(lán)牙模塊通過(guò)這些接口與主機(jī)上對(duì)應(yīng)的接口相連接,構(gòu)成藍(lán)牙系統(tǒng)的硬件連接。HCI就是基于這些物理接口定義相應(yīng)的傳輸層實(shí)現(xiàn)主機(jī)與主機(jī)控制器間的數(shù)據(jù)交換。兩個(gè)藍(lán)牙設(shè)備通過(guò)HCI層進(jìn)行數(shù)據(jù)傳輸?shù)倪^(guò)程如圖2.3所示。圖2.3藍(lán)牙設(shè)備通過(guò)HCI層數(shù)據(jù)傳輸過(guò)程HCI傳輸層HCI傳輸層是指在藍(lán)牙主機(jī)與主機(jī)控制器間相連的物理接口,它介于主機(jī)控制器驅(qū)動(dòng)程序和主機(jī)控制器之間,主要目的是實(shí)現(xiàn)傳輸?shù)耐该餍裕磸乃{(lán)牙模塊外看HCI看到的是HCI傳輸層,物理總線是屏蔽的,從而使得HCI固件能在不影響傳輸層的情況下升級(jí)。.3HCI分組格式HCI提供了藍(lán)牙主機(jī)與藍(lán)牙主機(jī)控制器交換信息的接口,這些信息以分組的形式進(jìn)行交互。主機(jī)可以向主機(jī)控制器發(fā)送HCI指令分組、ACL數(shù)據(jù)分組和SCO數(shù)據(jù)分組;主機(jī)控制器可以向主機(jī)返回HCI事件分組、ACL數(shù)據(jù)分組和SCO數(shù)據(jù)分組。如下圖即為各HCl分組的流向示意圖。圖HCl分組流向示意(1)HCI指令分組HCI指令分組用于從主機(jī)向主機(jī)控制器發(fā)送指令。HCI指令分組的格式如表所示。表2.1HCI指令分組格式HCI指令分組由操作碼,參數(shù)長(zhǎng)度和指令參數(shù)列表組成。(2)HCI事件分組主機(jī)向主機(jī)控制器發(fā)送指令分組以后,主機(jī)控制器就會(huì)返回相應(yīng)的事件分組,其中攜帶有指令的執(zhí)行情況以及相關(guān)聯(lián)的信息。主機(jī)必須具有接收255字節(jié)的HCI事件分組的能力,其中還不包括HCI事件分組頭。HCI事件分組的格式如表2.4所示。表HCI事件分組格式HCI事件分組由事件碼、參數(shù)長(zhǎng)度和事件參數(shù)列表組成事件碼(EventCode)大小為1字節(jié),用于唯一地標(biāo)識(shí)事件的類型,取值范圍為0x00-0xff。參數(shù)長(zhǎng)度以字節(jié)度量。事件參數(shù)列表存放了與相對(duì)應(yīng)的指令關(guān)聯(lián)的返回事件參數(shù),大小一般為8的倍數(shù)。(3)HCI數(shù)據(jù)分組HCI數(shù)據(jù)分組用于在主機(jī)和主機(jī)控制器之間交換數(shù)據(jù)。HCI數(shù)據(jù)分組分為ACL數(shù)據(jù)分組和SCO數(shù)據(jù)分組兩類,各自有不同的格式,在此只討論ACL數(shù)據(jù)分組格式。HCIACL數(shù)據(jù)分組用于在主機(jī)與主機(jī)控制器間進(jìn)行異步鏈路的數(shù)據(jù)交換,它的分組格式如表2.5所示。表HCIACL數(shù)據(jù)分組格式第三章設(shè)計(jì)方案及模塊介紹3.1藍(lán)牙家居控制系統(tǒng)組成結(jié)構(gòu)基于藍(lán)牙技術(shù)的智能家居系統(tǒng),其硬件組成主要包括藍(lán)牙模塊、MCU、PC及受控設(shè)備等組成??傮w構(gòu)成如圖3.1所示。結(jié)構(gòu)框圖中前半局部為中心控制局部,主要由PC機(jī)、藍(lán)牙無(wú)線收發(fā)模塊組成;后半局部為多個(gè)受控單元,主要由受控電器、單片機(jī)、藍(lán)牙模塊組成。
在受控單元中,藍(lán)牙模塊和單片機(jī)之間通過(guò)串口輸入HCI指令實(shí)行數(shù)據(jù)通信。其工作過(guò)程是:PC機(jī)發(fā)送一條控制命令,通過(guò)串口發(fā)送給藍(lán)牙模塊,并由藍(lán)牙模塊發(fā)送出去,這條指令被多個(gè)藍(lán)牙模塊接收后由單片機(jī)進(jìn)行識(shí)別,并作出相應(yīng)的動(dòng)作,最終完成對(duì)家電的控制。在本設(shè)計(jì)中作為通信局部的藍(lán)牙模塊均采用的是ROK101008,單片機(jī)選用性價(jià)比擬高的C8051F120.主要硬件模塊介紹3.愛(ài)立信藍(lán)牙模塊ROK101008簡(jiǎn)介愛(ài)立信ROK101008是愛(ài)立信(Ericsson)公司出品的適用于短距離通信的無(wú)線/基帶模塊,它集成度高、功耗小、完全兼容藍(lán)牙1.0B協(xié)議標(biāo)準(zhǔn),可嵌入到任何需要藍(lán)牙功能的設(shè)備中。它同時(shí)支持?jǐn)?shù)據(jù)和語(yǔ)音的傳輸,輸出功率滿足Class2的要求。它提供有UART、PCM接口,可方便地實(shí)現(xiàn)與主機(jī)之間的通信。它在UART接口上的最高傳輸速率為460Kb/s,缺省波特率是57.6Kb/s,可支持的波特率為300、600,900,1200、2400,4800,9600、19200,38400157600,115200、230400,60800bit/s,并有一個(gè)128字節(jié)的FIFO隊(duì)列111】。它采用壓縮結(jié)構(gòu)(3.3×1.7X0.365cm),金表層覆蓋,外觀圖如圖3.2所示。圖3.2愛(ài)立信ROK101008藍(lán)牙模塊外觀圖ROK101008的系統(tǒng)結(jié)構(gòu)圖如圖3.3所示。處于模塊底層的是無(wú)線層(Radio)和基帶)縣(Baseband),以硬件的形式存在;處于模塊中上層的,是鏈路管理器(LM)和HCI,以固件的形式存在。圖3.3愛(ài)立信ROK101008藍(lán)牙模塊系統(tǒng)結(jié)構(gòu)圖ROK101008由基帶控制器(Baseband)、快閃式存儲(chǔ)器(FlashMemory)、無(wú)線電收發(fā)器(PBA31301/2)、電壓調(diào)節(jié)器(VoltageRegulation)、13MHz晶振(13MHzCrystal)共5局部組成,其內(nèi)部結(jié)構(gòu)框圖如圖3.4所示。圖3.4愛(ài)立信ROK101008藍(lán)牙模塊內(nèi)部結(jié)構(gòu)框圖①基帶控$1J-器(Baseband):是一個(gè)以ARM7一Thumb為根底的的芯片,通過(guò)接口控制無(wú)線電收發(fā)器的運(yùn)行。ROK101008的基帶控制器提供UART和PCM兩種接口。②快閃式存儲(chǔ)器r(FlashMemory):閃存和基帶控制器同時(shí)使用。③無(wú)線電收發(fā)器(PBA31301/2):PBA31301/2是短距離微波無(wú)線電收發(fā)器,其天線濾波器、RX和TX不平衡變壓器都集成在電路中,可作為嵌入式結(jié)構(gòu)應(yīng)用。④電壓調(diào)節(jié)器:(VoltageRegulation):Vcc典型值是3.3V,產(chǎn)生兩個(gè)可調(diào)電壓。⑤13MHz晶振(13MHzCrystal):晶振提供頻率為13MHz的內(nèi)置時(shí)鐘。愛(ài)立信ROK101008藍(lán)牙模塊芯片詳細(xì)的引腳封裝如圖3.5所示。圖3.5愛(ài)立信監(jiān)牙模塊ROK101008芯片引腳封裝圖引腳號(hào)排列按照從左向右依次為A、B、C、R、T,其中每個(gè)字母代表一列,每列又按從下到上依次為1、2、3、4、5、6。常用的局部引腳的說(shuō)明如表3.1所示:表3.1愛(ài)立信ROK101008藍(lán)牙模塊芯片局部引腳說(shuō)明藍(lán)牙適配器模塊
藍(lán)牙適配器圖片藍(lán)牙〔Bluetooth〕是無(wú)線網(wǎng)絡(luò)傳輸技術(shù)的一種,原本是用來(lái)取代紅外的。與紅外技術(shù)相比,藍(lán)牙無(wú)需對(duì)準(zhǔn)就能傳輸數(shù)據(jù),傳輸距離小于10米〔紅外的傳輸距離在幾米以內(nèi)〕。而在信號(hào)放大器的幫助下,通訊距離甚至可達(dá)100米左右。藍(lán)牙技術(shù)非常適合耗電量低的數(shù)碼設(shè)備相互分享數(shù)據(jù),如、掌上電腦等。藍(lán)牙標(biāo)準(zhǔn)中廣為應(yīng)用的成熟版本為1.1、2.0、3.0、4.0,帶寬約1M-24Mbps〔USB1.1接口的帶寬為12Mbps,USB2.0接口的帶寬為480Mbps,局域網(wǎng)帶寬為10Mbps/100Mbps/1000Mbps,火線IEEE1394帶寬為400Mbps。所以說(shuō),藍(lán)牙非常適合于傳送小的文件〔10MB以下的圖片、鈴聲、電子書、文稿等等〕,方便與速度兼得。目前最新版本是2.1+EDR版本。第四章系統(tǒng)硬件設(shè)計(jì)4.1下位機(jī)模塊設(shè)計(jì)單片機(jī)C8051F120簡(jiǎn)介微控制器(MCu)是藍(lán)牙應(yīng)用系統(tǒng)的核心,它的選擇將直接影響到系統(tǒng)的性能。C8051F120是Cygnal公司的一種與8051兼容的高速SOC單片機(jī),它具有高速CIP.51內(nèi)核、靈活的I/O交叉開(kāi)關(guān)、先進(jìn)的時(shí)鐘系統(tǒng)、JTAG系統(tǒng)調(diào)試接口以及多源復(fù)位系統(tǒng)。它性能卓越,內(nèi)核采用流水線結(jié)構(gòu),速度可達(dá)100MIPS,比普通的51快40倍,而且在資源豐富、體積小、功耗低、集成度高且調(diào)試方便。下面列出了它的一些主要特性:●高速、流水線結(jié)構(gòu)的8051兼容的CIP.51內(nèi)核;●真正8位500ksps的ADC,帶PGA和8通道模擬多路開(kāi)關(guān);●2周期的16×16的乘法和累加引擎;●8448(8K+256)字節(jié)的片內(nèi)RAM;●可尋址64K字節(jié)地址空間的外部數(shù)據(jù)存儲(chǔ)器接口;●硬件實(shí)現(xiàn)的SPI、SMBus/12C和兩個(gè)UART串行接El[10l;●5個(gè)通用的16位定時(shí)器;●具有6個(gè)捕捉/比擬模塊的可編程計(jì)數(shù)器/定時(shí)器陣列;●FLASH存儲(chǔ)器具有在系統(tǒng)中重新編程能力,可用于非易失性數(shù)據(jù)存儲(chǔ),并允許現(xiàn)場(chǎng)更新固件;●片內(nèi)JTAG調(diào)試電路允許非侵入式(不占用片內(nèi)資源)、全速、在系統(tǒng)測(cè)試;●可在工業(yè)溫度范NI(.45"C一+85。c)N用2.7V~3.6V的電壓工作?!馛8051F120為100腳TQFP封裝。單片機(jī)與藍(lán)牙模塊的連接單片機(jī)與藍(lán)牙模塊的硬件連接比擬簡(jiǎn)單,其原理如圖4.1所示:圖單片機(jī)C8051F120通過(guò)UART連接藍(lán)牙模塊示意圖圖中的①、②、③分別標(biāo)出了連接中需要注意的3個(gè)地方。①數(shù)據(jù)線和信號(hào)線單片機(jī)C8051F120具有兩個(gè)UART,在此選用UART0。在編程時(shí)候可通過(guò)交叉開(kāi)關(guān)設(shè)置,將UART0分配到兩個(gè)管腳上,例如P0.0(TXD)和P0.I(RXD),分別與藍(lán)牙模塊的RXD(AS)和TXD(B5)相連,用于傳輸控制信號(hào)。另外,單片機(jī)端需另外分配兩個(gè)管腳,例如P1.6和P1.7,分別作為流量控制信號(hào)CTS和RTS,分別與藍(lán)牙模塊的RTS(A6)和CTS(B6)相連。假設(shè)CTS為1那么允許對(duì)方發(fā)送,假設(shè)CTS為0那么禁止對(duì)方發(fā)送。②藍(lán)牙模塊電源線藍(lán)牙模塊的電壓管理器共有3個(gè)輸入,分別是Vcc(C6)、Vcc_io(C4)和ON(C2)。Vcc提供電源電壓,典型值是3.3V:Vetio為UART提供一個(gè)獨(dú)立的電源回路,可以與單片機(jī)邏輯接口相同,可以連接到Vcc;ON信號(hào)控制內(nèi)部電壓穩(wěn)壓器導(dǎo)通或關(guān)斷。將Vcc、Vccio和ON連接在一起使用時(shí),不需要考慮藍(lán)牙模塊的加電順序;否那么,那么要嚴(yán)格按照“GND.Vet—ON.Vccio〞的順序加電,斷電時(shí)候順序相反。在此處采用前者,將Vet、Vccio和ON一起連接到3.3V的外部電源上。③藍(lán)牙模塊天線藍(lán)牙模塊ANT管腳連接到50歐的天線,天線的電壓駐波比小于2:1。在本課題的實(shí)驗(yàn)板的設(shè)計(jì)中,單片機(jī)和藍(lán)牙模塊是焊接在一個(gè)PCB板上的。由于藍(lán)牙模塊采用平面封裝,而且引腳很密集,要想直接焊接到PCB板上很困難,而且天線也很難焊接上去。因而自行設(shè)計(jì)了一個(gè)輔助電路板,先將藍(lán)牙模塊焊接到此輔助電路板上,然后將要用到的藍(lán)牙模塊的局部引腳引出來(lái),通過(guò)插座將藍(lán)牙模塊連接到PCB板上,這樣就使得藍(lán)牙模塊的裝卸變得很方便。輔助電路板引出的管腳有GND.地線、VCC.3.3V、數(shù)據(jù)收發(fā)線RXD和TXD、流控線RTS和CTS、使能信號(hào)線.EN、復(fù)位信號(hào)線.RESET,其中BTEN即圖4.6中的ON信號(hào),實(shí)際應(yīng)用中將它與VCC接在一起,其他的與單片機(jī)相連。圖4.2所示。圖藍(lán)牙模塊ROKl01008輔助電路板引出管腳圖PC機(jī)與藍(lán)牙模塊的連接PC端硬件連接比擬簡(jiǎn)單,將藍(lán)牙USB適配器直接通過(guò)USB連接到PC上即可。圖4.3PC端硬件結(jié)構(gòu)圖需要注意的是,插上適配器后,如果是在XP系統(tǒng)下,系統(tǒng)會(huì)自動(dòng)裝載藍(lán)牙適配器驅(qū)動(dòng)程序,因?yàn)樵诖耸且_(kāi)發(fā)自己的基于HCI層的應(yīng)用程序,而自動(dòng)安裝的驅(qū)動(dòng)程序是針對(duì)高級(jí)應(yīng)用開(kāi)發(fā)的,覆蓋了HCI層,因此需要將其卸載,安裝針對(duì)特定適配器的硬件驅(qū)動(dòng)程序。此處使用的藍(lán)牙USB適配器是CSRBlueCore04,安裝CSRUSBDriver1.18,安裝成功后可在“設(shè)備管理器’’.“通用串行總線控制器"中查找到“CSRBlueCoreBluetooth",如下圖。圖CSRBlueCoreBluetooth安裝成功示意圖4.3單片機(jī)與家用電器的連接家用電器控制模塊其主要功能是根據(jù)接收系統(tǒng)中心控制模塊的命令,以控制電視機(jī)開(kāi)關(guān)為例,將控制電視機(jī)開(kāi)關(guān)的單片機(jī)引腳設(shè)定為p1^3,當(dāng)該引腳為高電平時(shí)繼電器吸合,電視開(kāi),當(dāng)為低電平時(shí)繼電器斷開(kāi),電視機(jī)關(guān)。4.5家電控制電路原理圖C8051F120收到中心控制器發(fā)送的控制信號(hào)后P1.3引腳變?yōu)楦唠娖?,?dāng)光耦合器導(dǎo)通,呆滯繼電器吸合,給信息插座通電,從而接通家用電器。當(dāng)有警情是P1.4和P1.5變?yōu)楦唠娖剑瑔纹瑱C(jī)那么通過(guò)TXD和RXD發(fā)送報(bào)警信號(hào),當(dāng)藍(lán)牙模塊輸出到中心控制器。在上述電路中電阻R1的選擇至關(guān)重要,他影響著2N45開(kāi)通與關(guān)閉的性能。R1較小時(shí),可減小開(kāi)關(guān)時(shí)間與開(kāi)關(guān)損耗,R1較大時(shí)那么相反。一般根據(jù)產(chǎn)品手冊(cè)上提供的數(shù)據(jù)作為參考,在參考值〔48歐姆〕的1倍到10倍見(jiàn)選取,在這里選取5倍的參考值,即240歐姆。系統(tǒng)電源模塊原理圖C8051F120微控制器的內(nèi)核和I/O使用同一電源電壓,只需。圖4.4所示,輸入9V直流電源,電感L1用于限制瞬態(tài)電流,經(jīng)過(guò)C1、C2濾波,然后通過(guò)SPX1117M-3.3將電源穩(wěn)壓至3.3V,其輸出用了一個(gè)4.7uf的電容來(lái)改善瞬態(tài)響應(yīng)和穩(wěn)定性。當(dāng)正確連接電源后,LED發(fā)光作為電源工作指示燈.為了降低噪聲和出錯(cuò)幾率,我們用電感L2、L3將數(shù)字電源和模擬電源隔離。圖系統(tǒng)中有些外圍器件的工作電壓為5V,比方控制家電的局部,所以我們還需要5V穩(wěn)壓電路,如圖4.5所示,其工作原理是輸入9V的直流電源,經(jīng)C8、C9濾波,然后通過(guò)LM78L05將電源穩(wěn)壓至5V.圖5V供電原理圖SPX1117M是Sipex公司生產(chǎn)的LDO芯片,其特點(diǎn)是輸出電流最大,輸出電壓高,穩(wěn)定性好。其輸出蒂娜劉可到達(dá)800MA,輸出電壓的精度在+-1%以內(nèi)還具有電流限制和熱保護(hù)功能,被廣泛用于手持設(shè)備、數(shù)字家電和工控領(lǐng)域第五章系統(tǒng)軟件設(shè)計(jì)系統(tǒng)的軟件設(shè)計(jì)分為單片機(jī)端軟件設(shè)計(jì)和PC端軟件設(shè)計(jì)兩大塊。5.1單片機(jī)端軟件設(shè)計(jì)單片機(jī)端軟件采用嵌入式C語(yǔ)言的編程,開(kāi)發(fā)環(huán)境為Keil,在本設(shè)計(jì)中只需完成藍(lán)牙根本數(shù)據(jù)傳輸即可。此局部軟件包括初始化、藍(lán)牙交互、處理數(shù)據(jù)三個(gè)局部。初始化包括系統(tǒng)初始化和藍(lán)牙初始化。系統(tǒng)初始化包括系統(tǒng)時(shí)鐘初始化、管腳分配、串口初始化、定時(shí)器初始化等,藍(lán)牙初始化是通過(guò)UART給藍(lán)牙模塊發(fā)送一系列初始化指令,藍(lán)牙模塊返回事件,交互完成一系列的復(fù)位、鑒權(quán)、讀地址等初始化操作。藍(lán)牙交互就是初始化完成后,假設(shè)本地藍(lán)牙作從設(shè)備,那么等待遠(yuǎn)端藍(lán)牙設(shè)備的建鏈請(qǐng)求,如果接受請(qǐng)求,那么繼續(xù)等待建鏈成功,獲得一個(gè)連接句柄,從而即可進(jìn)行數(shù)據(jù)交換;假設(shè)本地藍(lán)牙作主設(shè)備,那么進(jìn)行一系列主動(dòng)查詢、建鏈、發(fā)送數(shù)據(jù)、斷鏈等操作。處理數(shù)據(jù)就是將有效數(shù)據(jù)轉(zhuǎn)存到相應(yīng)位置等一系列后續(xù)操作。需要注意的是,在程序的主循環(huán)中,需要實(shí)時(shí)判斷串口接收緩沖區(qū)是否有數(shù)據(jù),有數(shù)據(jù)那么調(diào)用HCI狀態(tài)機(jī)進(jìn)行處理。程序流程如圖5.1所示。系統(tǒng)時(shí)鐘初始化用來(lái)設(shè)置和啟動(dòng)系統(tǒng)時(shí)鐘。在這里采用外部24M外部振蕩器提供系統(tǒng)時(shí)鐘。首先使能24M外部晶振并等待外部晶振就緒,然后利用PLL將其倍頻為96M作為系統(tǒng)時(shí)鐘。管腳分配用來(lái)將UART0的TX和RX分配到管腳p0.O和p0.1,并將pO.0設(shè)為輸出模式、p0.1設(shè)為輸入模式。串口初始化調(diào)用單片機(jī)UART接12函數(shù)uart_rest0、uart_init0實(shí)現(xiàn),其中uart_initoqb涉及具體單片機(jī)存放器的操作包括設(shè)置UART0工作模式、設(shè)置定時(shí)器、設(shè)置波特率等。定時(shí)器初始化局部實(shí)現(xiàn)對(duì)定時(shí)器1初始化和啟動(dòng),定時(shí)間隔為lOms。在系統(tǒng)初始化完成之后,就需要開(kāi)始對(duì)藍(lán)牙設(shè)備進(jìn)行操作。對(duì)藍(lán)牙設(shè)備的操作需要構(gòu)造一個(gè)藍(lán)牙HCI設(shè)備控制結(jié)構(gòu)體hcidev。藍(lán)牙設(shè)備操作的復(fù)雜性造成此結(jié)構(gòu)體也相對(duì)復(fù)雜,具體如下圖:①UART控制結(jié)構(gòu)體uartdev變量ud,唯一的標(biāo)識(shí)一個(gè)串口連接。②藍(lán)牙HCI設(shè)備信息結(jié)構(gòu)體hcidevinfo變量hd—info,保存藍(lán)牙地址、設(shè)備類型、緩沖區(qū)大小等。③藍(lán)牙HCI設(shè)備連接控制結(jié)構(gòu)體hcidevcon變量hdcon,保存連接狀態(tài)、連接句柄、遠(yuǎn)端地址、時(shí)隙等。④藍(lán)牙HCI設(shè)備設(shè)置結(jié)構(gòu)體hcidevset變量hdset,保存用戶設(shè)置信息,包括掃描允許、連接超時(shí)、鑒權(quán)允許、查詢參數(shù)等。⑤藍(lán)牙HCI設(shè)備標(biāo)志位結(jié)構(gòu)體hci—dev_flags變量hd_flags,標(biāo)識(shí)查詢和連接狀態(tài)。圖5.2藍(lán)牙HCl控制結(jié)構(gòu)體hci—dev數(shù)據(jù)結(jié)構(gòu)圖因?yàn)榇讼到y(tǒng)中只有一個(gè)單片機(jī)只與一個(gè)UART0相連的藍(lán)牙模塊,即藍(lán)牙HCI設(shè)備是唯一的,因此此結(jié)構(gòu)體應(yīng)該定義為全局變量并且整個(gè)程序運(yùn)行空間內(nèi)只允許定義一個(gè),為便于討論,假設(shè)定義此變量為hd,即:藍(lán)牙初始化包括藍(lán)牙HCI復(fù)位、藍(lán)牙參數(shù)設(shè)定和藍(lán)牙一系列初始化指令的發(fā)送。藍(lán)牙HCI復(fù)位主要完成對(duì)hd各項(xiàng)默認(rèn)值的設(shè)置,包括將hd.hd—info中的acl_num和acl一1en全置0,cmd—num置1,以防止藍(lán)牙讀緩沖區(qū)大小指令Read—Buffer—Size執(zhí)行失敗后得到未定義的值;將hd.hd—con中的con—status的值賦為NOTCONNECTED,將conhandle的值設(shè)為.1等等;藍(lán)牙參數(shù)設(shè)定通過(guò)對(duì)hd.hdset相應(yīng)參數(shù)直接賦值實(shí)現(xiàn),可根據(jù)具體需要進(jìn)行不同的設(shè)置;藍(lán)牙初始化指令的發(fā)送是藍(lán)牙設(shè)備初始化的關(guān)鍵。在此可調(diào)用藍(lán)牙HCI指令接口完成。至于具體需要哪些指令來(lái)進(jìn)行初始化,可根據(jù)需要增減,但有一些指令是必備的。在此提供兩個(gè)初始化指令集合initl和init2,其中btinitnecessary為強(qiáng)制性、必備的指令集,bt_init_optional是非強(qiáng)制性、可選的指令集,見(jiàn)表5.1。調(diào)用HCI指令接口函數(shù)時(shí)需要傳入相應(yīng)參數(shù)列表結(jié)構(gòu)體,結(jié)構(gòu)體各項(xiàng)的參數(shù)值從已設(shè)定的hd.hdset中提取。各指令之間最好是加2.5ms的延時(shí),在保證前一條指令執(zhí)行成功后才發(fā)送下一條指令。指令包的流控由hd.hdinfo.cmdnum控制。初始化指令集在進(jìn)入藍(lán)牙根本數(shù)據(jù)傳輸實(shí)驗(yàn)工程之前,設(shè)置了一個(gè)標(biāo)志位btrole,用戶可選擇本地藍(lán)牙的角色即是作為主設(shè)備還是從設(shè)備進(jìn)入實(shí)驗(yàn)。不管是作為主設(shè)備還是從設(shè)備,藍(lán)牙初始化局部是相同的。初始化完成以后,本地藍(lán)牙作主設(shè)備時(shí),首先要主動(dòng)發(fā)起查詢,查詢到遠(yuǎn)端藍(lán)牙設(shè)備之后,要主動(dòng)發(fā)起連接,連接建立以后,數(shù)據(jù)可以在本地藍(lán)牙和遠(yuǎn)端藍(lán)牙之間進(jìn)行傳輸,既可由本地藍(lán)牙發(fā)往遠(yuǎn)端藍(lán)牙,也可由遠(yuǎn)端藍(lán)牙發(fā)往本地藍(lán)牙。本地藍(lán)牙作從設(shè)備時(shí),循環(huán)等待遠(yuǎn)端藍(lán)牙的連接請(qǐng)求,收到連接請(qǐng)求事件以后,通知用戶決定是否接受此次連接請(qǐng)求。假設(shè)接受,那么發(fā)送HCIAccept_Connection,假設(shè)拒絕,那么發(fā)送HCI_reject_connection_request。單片機(jī)端和PC端之間的藍(lán)牙連接建立完成后,就可以在兩者之間進(jìn)行數(shù)據(jù)的傳輸了。由于單片機(jī)端不支持?jǐn)?shù)據(jù)輸入,因而本系統(tǒng)采用PC端錄入數(shù)據(jù),向單片機(jī)端發(fā)送,單片機(jī)端接收到數(shù)據(jù)后。這就涉及到數(shù)據(jù)的檢測(cè)和處理。HCI狀態(tài)機(jī)在檢測(cè)到ACL數(shù)據(jù)分組到來(lái)后經(jīng)過(guò)一系列的處理,將實(shí)際所傳數(shù)據(jù)存儲(chǔ)在一個(gè)數(shù)據(jù)接收緩沖區(qū)里,主機(jī)對(duì)標(biāo)志位data_ready_flag的檢測(cè)放在主循環(huán).ready程序中,從而保證數(shù)據(jù)能及時(shí)得到處理。單片機(jī)端作從設(shè)備時(shí),假設(shè)設(shè)置為自動(dòng)回傳翻開(kāi),還可將已接收數(shù)據(jù)回傳給PC。單片機(jī)程序:以控制電視機(jī)開(kāi)關(guān)為例:設(shè)定0X00表示關(guān),0x01表示開(kāi)Voidbt_basic〔〕{display_interface();\\顯示界面Uart_init();\\串口初始化HCI_init();\\Hci設(shè)備初始化Clear_data_rev_buf();\\清空接收數(shù)據(jù)緩沖區(qū)Hci_param_set(hd);\\設(shè)置HCI設(shè)備參數(shù)TV_0n_off=P1^3;\\p1^3在電路連接時(shí)控制電視}While〔1〕{\\如果UART接收緩沖區(qū)非空,那么調(diào)用狀態(tài)機(jī)處理。if(hci_buf_status!=HCI_BUFEMPTY){HCI_state();}If(local_bt_role)\\假設(shè)由PC機(jī)發(fā)送數(shù)據(jù),單片機(jī)接收數(shù)據(jù){if(event_evcode==CONNECTlONREQUEST.)\\藍(lán)牙連接請(qǐng)求HCIAccept_Connection;hci_event_connection_request(event.param);if(event_evcode==CONNECTIONCOMPIETE)\\表示藍(lán)牙設(shè)備已連接{oder=Hci_rev_acl_data(…));\\接收控制信息Switch(oder){case0x00TV_on_off=0;\\電視關(guān)Case0x01TV_on_off=1;\\電視開(kāi)}}If(event_evcode==DISCONNECTION_COMP)hci_event_disconnection_complete(event.param);\\斷開(kāi)連接}}5.2PC端軟件設(shè)計(jì)PC端采用面向?qū)ο蟮腃++編程,在VC++6.0開(kāi)發(fā)平臺(tái)下實(shí)現(xiàn)了基于藍(lán)牙HCI層通信的根本數(shù)據(jù)傳輸控制程序。PC端操作系統(tǒng)為XP,采用的藍(lán)牙設(shè)備為藍(lán)牙USB適配器,適配器內(nèi)嵌藍(lán)牙芯片為CSR(CambridgeSiliconRadio)公司的BlueCore04。藍(lán)牙USB適配器和PC之間通過(guò)USB接口進(jìn)行連接和通信,因而數(shù)據(jù)的傳輸利用的是藍(lán)牙HCIUSB傳輸層。USB是由“通用串行總線實(shí)施論壇〞組織公開(kāi)發(fā)布推廣的一種串行接口標(biāo)準(zhǔn)。藍(lán)牙沒(méi)有為USB接口開(kāi)發(fā)新的協(xié)議,而是使用已有的USB協(xié)議。在驅(qū)動(dòng)程序方面,一方面,xP系統(tǒng)自身會(huì)提供底層的硬件驅(qū)動(dòng)程序和簡(jiǎn)單的上層應(yīng)用程序,在藍(lán)牙USB適配器連接到PC之后,會(huì)自動(dòng)裝載;另一方面,不同的藍(lán)牙芯片廠家會(huì)提供不同的藍(lán)牙USB適配器的硬件驅(qū)動(dòng)程序,便于技術(shù)人員進(jìn)行針對(duì)特定應(yīng)用的開(kāi)發(fā)。由于XP系統(tǒng)自帶的驅(qū)動(dòng)直接面向應(yīng)用,屏蔽了HCI層,所以在此處采用CSR公司提供的藍(lán)牙USB驅(qū)動(dòng)csrbc01.inf',對(duì)應(yīng)于此驅(qū)動(dòng)附有一系列的控制字。安裝好藍(lán)牙USB適配器之后,在VC++6.0編程平臺(tái)中,采用WindowsAPI函數(shù),結(jié)合驅(qū)動(dòng)程序提供的一系列控制字,就可以實(shí)現(xiàn)對(duì)藍(lán)牙USB適配器的訪問(wèn)。PC端基于HCIUSB傳輸層開(kāi)發(fā)藍(lán)牙通信的步驟和流程類似于上文中單片機(jī)基于藍(lán)牙HCIUART層的開(kāi)發(fā),它們都遵循藍(lán)牙HCI層的一般通信流程,區(qū)別就在于利用的HCI傳輸層不同。利用HCIUSB傳輸層傳輸時(shí),數(shù)據(jù)是通過(guò)USB端點(diǎn)來(lái)收發(fā)的,USB端點(diǎn)分為4大類,分別是控制端點(diǎn)、塊端點(diǎn)、中斷端點(diǎn)和同步端點(diǎn)。不同的端點(diǎn)實(shí)現(xiàn)不同的功能??刂贫它c(diǎn)用來(lái)配置和控制USB設(shè)備,在此處可用于主機(jī)(PC)向主機(jī)控制器(藍(lán)牙USB適配器)發(fā)送HCI指令分組。塊端點(diǎn)用來(lái)傳送ACL數(shù)據(jù)分組。中斷端點(diǎn)用來(lái)保證HCI事件分組的及時(shí)接收。同步端點(diǎn)用來(lái)傳輸SCO數(shù)據(jù)分組。由此可見(jiàn),在采用USB傳輸層時(shí),不同的HCl分組可由不同的端點(diǎn)類別來(lái)區(qū)分,因而不需要再像HCIUART傳輸層那樣在分組前面加分組指示器。圖5.3PC端藍(lán)牙根本數(shù)據(jù)傳輸模塊流程圖程序的實(shí)現(xiàn)采用基于對(duì)話框的MFC編程。在程序中構(gòu)造了一個(gè)USBStack類負(fù)責(zé)對(duì)藍(lán)牙USB適配器的控制,包括翻開(kāi)設(shè)備、發(fā)送HCI指令分組、收發(fā)ACL數(shù)據(jù)分組、接收HCI事件分組等。類內(nèi)部對(duì)藍(lán)牙USB適配器的訪問(wèn)通過(guò)WindowsAPI函數(shù)配合CSRBlueCore控制字實(shí)現(xiàn),具體的類的細(xì)節(jié)參照CSR公司提供的CSRUSBDongle開(kāi)發(fā)文檔((CSRUSB圖5.4USBStack類定義PC端的主要函數(shù)列表當(dāng)只有一個(gè)藍(lán)牙USB適配器連接到PC上時(shí),適配器的訪問(wèn)路徑默認(rèn)為“\\\\\.\\CSRO〞,當(dāng)插上第二個(gè)藍(lán)牙USB適配器時(shí),第二個(gè)適配器的訪問(wèn)路徑默認(rèn)為“\\\\.\\CSRl’’,以此類推。此處默認(rèn)只連有一個(gè)適配器,那么翻開(kāi)藍(lán)牙設(shè)備時(shí),調(diào)用m_bt.open_connection(“\\\.\\CSR0〞)完成藍(lán)牙適配器的翻開(kāi)和兩個(gè)后臺(tái)線checkhcievent0和check—acl—data(),此處采用多線程編程線程checkhcievent0和check—acl—data()分別用于實(shí)時(shí)接收主控制器返回的HCI事件分組和ACL事件分組藍(lán)牙設(shè)備翻開(kāi)以后,要對(duì)藍(lán)牙進(jìn)行初始化。類似于單片機(jī)端對(duì)藍(lán)牙模塊的初始化操作,在此也可靈活選擇初始化指令集和各初始化指令的參數(shù),由于在此處只是實(shí)現(xiàn)一個(gè)根本的測(cè)試程序,所以對(duì)這些指令的參數(shù)的選擇只是按一般的需要進(jìn)行設(shè)置和取值,比方HCI_Write_Scan_Enable指令的掃描允許參數(shù)直接設(shè)為0x03表示查詢掃描和呼叫掃描同時(shí)允許,以下的指令參數(shù)的設(shè)定類似,不再贅述。指令分組也直接采用了十六進(jìn)制數(shù)串集中發(fā)送出去,指令與指令之間采用了一定的延時(shí)以保證主機(jī)控制器指令緩沖區(qū)不會(huì)溢出,下面給出了藍(lán)牙初始化指令集的代碼例如(限于篇幅,下文中的查詢、建立連接等操作不再給出代碼,只作文字說(shuō)明)。初始化完成之后,PC會(huì)收到藍(lán)牙返回的多個(gè)HCI事件,從中捕獲讀緩沖區(qū)大小事件和讀本地藍(lán)牙地址事件,解析出主機(jī)控制器指令緩沖區(qū)和數(shù)據(jù)緩沖區(qū)大小將其保存,解析出本地藍(lán)牙地址將其保存并顯示,然后就可以進(jìn)行對(duì)周圍藍(lán)牙設(shè)備的查詢。查詢完成后,PC捕獲藍(lán)牙返回的查詢結(jié)果事件,從中解析出查詢到的遠(yuǎn)端藍(lán)牙的地址,將其保存在m_bt.remotebdaddr[6],根據(jù)獲得的遠(yuǎn)端藍(lán)牙地址,可發(fā)起建立連接請(qǐng)求,其中分組類型參數(shù)選用Ox0008,表示建立的連接為DMl類型。與遠(yuǎn)端藍(lán)牙連接建立完成后,會(huì)返回建立連接完成事件,需要注意的是,假設(shè)建立連接時(shí)當(dāng)前在兩端藍(lán)牙設(shè)備之間已經(jīng)存在連接,那么只會(huì)返回最大時(shí)隙改變事件。因而發(fā)送建立連接請(qǐng)求指令之后,要捕獲返回的事件,假設(shè)是連接建立完成事件或最大時(shí)隙改變事件且status參數(shù)為O,那么表示建立連接成功,否那么失敗,要重新發(fā)起連接請(qǐng)求。連接建立成功之后,就可以進(jìn)行數(shù)據(jù)的收發(fā)了。數(shù)據(jù)的傳送是以ACL數(shù)據(jù)分組的格式進(jìn)行的。首先要根據(jù)已建立連接的連接句柄和PB、BC標(biāo)志組合ACL分組頭,然后根據(jù)要發(fā)送數(shù)據(jù)的總長(zhǎng)度獲知ACL數(shù)據(jù)分組的長(zhǎng)度和L2CAP分組的長(zhǎng)度,再設(shè)定L2CAPCID,最后才是真正要發(fā)送的數(shù)據(jù)的寫入,具體的格式在上文中已給出。在此處,構(gòu)造一個(gè)ACL
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024約定子女探望權(quán)及離婚后財(cái)產(chǎn)分割與子女教育協(xié)議3篇
- 2025年農(nóng)業(yè)科技產(chǎn)品研發(fā)與推廣合同3篇
- 二零二五年度民宿餐飲服務(wù)員勞動(dòng)協(xié)議范本3篇
- 2024年04月新疆興業(yè)銀行烏魯木齊分行春季校園招考筆試歷年參考題庫(kù)附帶答案詳解
- 專業(yè)司機(jī)招聘協(xié)議2024版示例一
- 2025年度廠房租賃合同標(biāo)準(zhǔn)版(含租賃保證金)3篇
- 臨時(shí)崗位:2024政府工作人員協(xié)議版
- 二零二四全新鋼材供應(yīng)鏈居間管理服務(wù)協(xié)議3篇
- 2025年度產(chǎn)業(yè)園區(qū)場(chǎng)商位租賃合作合同4篇
- 2025年農(nóng)膜生產(chǎn)設(shè)備租賃與維修服務(wù)合同3篇
- 申根簽證申請(qǐng)表模板
- 企業(yè)會(huì)計(jì)準(zhǔn)則、應(yīng)用指南及附錄2023年8月
- 諒解書(標(biāo)準(zhǔn)樣本)
- 2022年浙江省事業(yè)編制招聘考試《計(jì)算機(jī)專業(yè)基礎(chǔ)知識(shí)》真題試卷【1000題】
- 認(rèn)養(yǎng)一頭牛IPO上市招股書
- GB/T 3767-2016聲學(xué)聲壓法測(cè)定噪聲源聲功率級(jí)和聲能量級(jí)反射面上方近似自由場(chǎng)的工程法
- GB/T 23574-2009金屬切削機(jī)床油霧濃度的測(cè)量方法
- 西班牙語(yǔ)構(gòu)詞.前后綴
- 動(dòng)物生理學(xué)-全套課件(上)
- 河北省衡水市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- DB32-T 2665-2014機(jī)動(dòng)車維修費(fèi)用結(jié)算規(guī)范-(高清現(xiàn)行)
評(píng)論
0/150
提交評(píng)論