




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上摘 要 隨著科學(xué)技術(shù)的發(fā)展和人們生活水平的提高,人們?cè)絹碓阶⒅刈约荷瞽h(huán)境的舒適、安全與便利。近年來興起的智能家居系統(tǒng)滿足了人們的這種需求,它有效地在家居環(huán)境中組建家庭信息網(wǎng)絡(luò),將各種家電產(chǎn)品結(jié)合成一個(gè)有機(jī)整體,對(duì)家電設(shè)備進(jìn)行集中或異地的智能化控制與管理,并且能夠與外界進(jìn)行信息交流。藍(lán)牙技術(shù)作為一種無線數(shù)據(jù)與語音通信的開放性全球規(guī)范,可提供低功耗、短距離的無線空中接口,在各種固定與移動(dòng)設(shè)備之間實(shí)現(xiàn)無線通信。在移動(dòng)通信、無線數(shù)據(jù)采集、無線遙控與遙測(cè)、計(jì)算機(jī)網(wǎng)絡(luò)及自動(dòng)控制等多種領(lǐng)域,藍(lán)牙技術(shù)都有著廣泛的應(yīng)用。應(yīng)用設(shè)計(jì)的藍(lán)牙軟硬件接口,本文開發(fā)了一個(gè)基于藍(lán)牙模塊的智能家居控
2、制系統(tǒng),在該系統(tǒng)中,上位機(jī)端通過USB控制藍(lán)牙適配器,其發(fā)送的控制指令由下位機(jī)端藍(lán)牙模塊接收后傳給單片機(jī),并在單片機(jī)端編寫了一個(gè)基本的藍(lán)牙及模擬家電控制程序,從而實(shí)現(xiàn)了PC與模擬家電的無線控制功能。本文提供的藍(lán)牙軟硬件接口方案及數(shù)據(jù)傳輸模塊,不僅可以用來進(jìn)一步開發(fā)藍(lán)牙高層協(xié)議,而且還可作為通用的接口函數(shù)和模塊應(yīng)用到多種無線場(chǎng)合。關(guān)鍵字:藍(lán)牙技術(shù);智能家居;藍(lán)牙模塊ABSTRACT With the development of science and technology, and the improvement of peoples living standards, people are
3、paying more and more attention to the comfortablity, safety and convenience of their living environment. The emergence of smart home system in recent years, just meets the needs of people. It effectively constitutes appliances into a home information network and makes all kinds of appliances combine
4、d into an organic whole. It can intelligently control appliances locally or remotely, and exchange information with the outside world.As a globally open wireless data and speech communication specification Bluetooth technology can provide low-power、short distance wireless air interface and implement
5、 wireless communication between various fixed and mobile equipmentsBluetooth technology has a wide range of applications in mobile communications, wireless data collections, wireless remote control and sensing Computer network and automatic control and other areasUsing the bluetooth hardware and sof
6、tware interface designed,This paper developed an smart home furnishing control system based on Bluetooth moduleIn the system,The PC side is controlled by USB bluetooth adapterIts control instruction is received by the lower end of Bluetooth module which sent it to the micro controller. A basic bluet
7、ooth and home appliance control simulation program was prepared in the MCU. So,the system can realize wireless control function of PC and simulation of electrical appliances .And then,data can be transmitted between the two partsAfter that,a further development which is file transmission is implemen
8、tedKeywords: Bluetooth technology; smart home; Bluetooth moudule 專心-專注-專業(yè)目 錄第三章 設(shè)計(jì)方案及模塊介紹3.1 藍(lán)牙家居控制系統(tǒng)組成結(jié)構(gòu)基于藍(lán)牙技術(shù)的智能家居系統(tǒng),其硬件組成主要包括藍(lán)牙模塊、MCU、PC及受控設(shè)備等組成。總體構(gòu)成如圖3.1所示。結(jié)構(gòu)框圖中前半部分為中心控制部分,主要由PC機(jī)、藍(lán)牙無線收發(fā)模塊組成;后半部分為多個(gè)受控單元,主要由受控電器、單片機(jī)、藍(lán)牙模塊組成。 在受控單元中,藍(lán)牙模塊和單片機(jī)之間通過串口輸入HCI指令實(shí)行數(shù)據(jù)通信。其工作過程是:PC機(jī)發(fā)送一條控制命令,通過串口發(fā)送給藍(lán)牙模塊,并由
9、藍(lán)牙模塊發(fā)送出去,這條指令被多個(gè)藍(lán)牙模塊接收后由單片機(jī)進(jìn)行識(shí)別,并作出相應(yīng)的動(dòng)作,最終完成對(duì)家電的控制。圖3.1.家居控制系統(tǒng)總體設(shè)計(jì)框圖在本設(shè)計(jì)中作為通信部分的藍(lán)牙模塊均采用的是ROK,單片機(jī)選用性價(jià)比較高的C8051F120.3.2 主要硬件模塊介紹3.2.1 愛立信藍(lán)牙模塊ROK 101 008簡介愛立信ROK 是愛立信(Ericsson)公司出品的適用于短距離通信的無線基帶模塊,它集成度高、功耗小、完全兼容藍(lán)牙10B協(xié)議規(guī)范,可嵌入到任何需要藍(lán)牙功能的設(shè)備中。它同時(shí)支持?jǐn)?shù)據(jù)和語音的傳輸,輸出功率滿足Class2的要求。它提供有UART、PCM接口,可方便地實(shí)現(xiàn)與主機(jī)之間的通信。它在UA
10、RT接口上的最高傳輸速率為460Kbs,缺省波特率是576Kbs,可支持的波特率為300、600,900,1200、2400,4800,9600、19200, 57600,、,60800bits,并有一個(gè)128字節(jié)的FIFO隊(duì)列111】。它采用壓縮結(jié)構(gòu)(33×17X0365cm),金表層覆蓋,外觀圖如圖3.2所示。圖3.2 愛立信ROK 101 008藍(lán)牙模塊外觀圖ROK 的系統(tǒng)結(jié)構(gòu)圖如圖3.3所示。處于模塊底層的是無線層(Radio)和基帶)縣(Baseband),以硬件的形式存在;處于模塊中上層的,是鏈路管理器(LM)和HCI,以固件的形式存在。圖3.3愛立信ROK 101 00
11、8藍(lán)牙模塊系統(tǒng)結(jié)構(gòu)圖ROK 由基帶控制器(Baseband)、快閃式存儲(chǔ)器(Flash Memory)、無線電收發(fā)器(PBA 313012)、電壓調(diào)節(jié)器(Voltage Regulation)、13MHz晶振(13MHz Crystal)共5部分組成,其內(nèi)部結(jié)構(gòu)框圖如圖3.4所示。圖3.4 愛立信ROK 101 008藍(lán)牙模塊內(nèi)部結(jié)構(gòu)框圖基帶控$1J-器(Baseband):是一個(gè)以ARM7一Thumb為基礎(chǔ)的的芯片,通過接口控制無線電收發(fā)器的運(yùn)行。ROK 101 008的基帶控制器提供UART和PCM兩種接口。快閃式存儲(chǔ)器r(Flash Memory):閃存和基帶控制器同時(shí)使用。無線電收發(fā)器
12、(PBA 313012):PBA313 012是短距離微波無線電收發(fā)器,其天線濾波器、RX和TX不平衡變壓器都集成在電路中,可作為嵌入式結(jié)構(gòu)應(yīng)用。電壓調(diào)節(jié)器:(Voltage Regulation):Vcc典型值是33V,產(chǎn)生兩個(gè)可調(diào)電壓。13MHz晶振(13MHz Crystal):晶振提供頻率為13MHz的內(nèi)置時(shí)鐘。愛立信ROK 101 008藍(lán)牙模塊芯片詳細(xì)的引腳封裝如圖3.5所示。圖3.5 愛立信監(jiān)牙模塊ROK 101 008芯片引腳封裝圖引腳號(hào)排列按照從左向右依次為A、B、C、R、T,其中每個(gè)字母代表一列,每列又按從下到上依次為1、2、3、4、5、6。常用的部分引腳的說明如表3.1所
13、示:表3.1愛立信ROK 101 008藍(lán)牙模塊芯片部分引腳說明3.2.2 藍(lán)牙適配器模塊藍(lán)牙適配器圖片藍(lán)牙(Bluetooth)是傳輸技術(shù)的一種,原本是用來取代紅外的。與紅外技術(shù)相比,藍(lán)牙無需對(duì)準(zhǔn)就能傳輸數(shù)據(jù),傳輸距離小于10米(紅外的傳輸距離在幾米以內(nèi))。而在的幫助下,通訊距離甚至可達(dá)100米左右。非常適合耗電量低的設(shè)備相互分享數(shù)據(jù),如手機(jī)、等。藍(lán)牙規(guī)范中廣為應(yīng)用的成熟版本為1.1、 2.0、 3.0、 4.0,帶寬約1M-24Mbps(USB1.1接口的帶寬為12Mbps,USB2.0接口的帶寬為480Mbps,局域網(wǎng)帶寬為10Mbps/100Mbps/1000Mbps,火線IEEE13
14、94帶寬為400Mbps。所以說,藍(lán)牙非常適合于傳送小的文件(10MB以下的圖片、鈴聲、電子書、文稿等等),方便與速度兼得。目前最新版本是2.1+EDR版本。第四章 系統(tǒng)硬件設(shè)計(jì)4.1 下位機(jī)模塊設(shè)計(jì) 4.1.1 單片機(jī)C8051F120簡介微控制器(MCu)是藍(lán)牙應(yīng)用系統(tǒng)的核心,它的選擇將直接影響到系統(tǒng)的性能。C8051F120是Cygnal公司的一種與8051兼容的高速SOC單片機(jī),它具有高速CIP51內(nèi)核、靈活的IO交叉開關(guān)、先進(jìn)的時(shí)鐘系統(tǒng)、JTAG系統(tǒng)調(diào)試接口以及多源復(fù)位系統(tǒng)。它性能卓越,內(nèi)核采用流水線結(jié)構(gòu),速度可達(dá)100MIPS,比普通的51快40倍,而且在資源豐富、體積小、功耗低、
15、集成度高且調(diào)試方便。下面列出了它的一些主要特性:高速、流水線結(jié)構(gòu)的8051兼容的CIP51內(nèi)核;真正8位500ksps的ADC,帶PGA和8通道模擬多路開關(guān);2周期的16×16的乘法和累加引擎;8448(8K+256)字節(jié)的片內(nèi)RAM;可尋址64K字節(jié)地址空間的外部數(shù)據(jù)存儲(chǔ)器接口;硬件實(shí)現(xiàn)的SPI、SMBus12C和兩個(gè)UART串行接El10l;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è)溫度范N
16、I(45"C一+85。c)N用27V36V的電壓工作。C8051F120為100腳TQFP封裝。4.1.2 單片機(jī)與藍(lán)牙模塊的連接單片機(jī)與藍(lán)牙模塊的硬件連接比較簡單, 其原理如圖4.1所示:圖4.1單片機(jī)C8051F120通過UART連接藍(lán)牙模塊示意圖圖中的、分別標(biāo)出了連接中需要注意的3個(gè)地方。數(shù)據(jù)線和信號(hào)線單片機(jī)C8051F120具有兩個(gè)UART,在此選用UART0。在編程時(shí)候可通過交叉開關(guān)設(shè)置,將UART0分配到兩個(gè)管腳上,例如P00(TXD)和P0I(RXD),分別與藍(lán)牙模塊的RXD(AS)和TXD(B5)相連,用于傳輸控制信號(hào)。另外,單片機(jī)端需另外分配兩個(gè)管腳,例如P16和P
17、17,分別作為流量控制信號(hào)CTS和RTS,分別與藍(lán)牙模塊的RTS(A6)和CTS(B6)相連。若CTS為1則允許對(duì)方發(fā)送,若CTS為0則禁止對(duì)方發(fā)送。藍(lán)牙模塊電源線藍(lán)牙模塊的電壓管理器共有3個(gè)輸入,分別是Vcc(C6)、Vcc_io(C4)和ON(C2)。Vcc提供電源電壓,典型值是33V:Vet io為UART提供一個(gè)獨(dú)立的電源回路,可以與單片機(jī)邏輯接口相同,可以連接到Vcc;ON信號(hào)控制內(nèi)部電壓穩(wěn)壓器導(dǎo)通或關(guān)斷。將Vcc、Vcc io和ON連接在一起使用時(shí),不需要考慮藍(lán)牙模塊的加電順序;否則,則要嚴(yán)格按照“GNDVetONVcc io”的順序加電,斷電時(shí)候順序相反。在此處采用前者,將Vet
18、、Vcc io和ON一起連接到33V的外部電源上。藍(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án)牙模塊連接到PCB板上,這樣就使得藍(lán)牙模塊的裝卸變得很方便。輔助電路板引出的管腳有GND地線、VCC33V、數(shù)據(jù)收發(fā)線RXD和TXD、流控線RTS和CTS、使能信號(hào)線EN、復(fù)位信號(hào)線RESE
19、T,其中BT EN即圖46中的ON信號(hào),實(shí)際應(yīng)用中將它與VCC接在一起,其他的與單片機(jī)相連。圖4.2所示。圖4.2藍(lán)牙模塊ROKl01 008輔助電路板引出管腳圖4.2 PC機(jī)與藍(lán)牙模塊的連接PC端硬件連接比較簡單,將藍(lán)牙USB適配器直接通過USB連接到PC上即可。如圖4.3所示圖4.3 PC端硬件結(jié)構(gòu)圖需要注意的是,插上適配器后,如果是在XP系統(tǒng)下,系統(tǒng)會(huì)自動(dòng)裝載藍(lán)牙適配器驅(qū)動(dòng)程序,因?yàn)樵诖耸且_發(fā)自己的基于HCI層的應(yīng)用程序,而自動(dòng)安裝的驅(qū)動(dòng)程序是針對(duì)高級(jí)應(yīng)用開發(fā)的,覆蓋了HCI層,因此需要將其卸載,安裝針對(duì)特定適配器的硬件驅(qū)動(dòng)程序。此處使用的藍(lán)牙USB適配器是CSR Blue Core
20、04,安裝CSR USB Driver 118,安裝成功后可在“設(shè)備管理器“通用串行總線控制器"中查找到“CSR Blue Core Bluetooth",如圖4.3所示。圖4.4 CSR Blue Core Bluetooth安裝成功示意圖4.3 單片機(jī)與家用電器的連接家用電器控制模塊其主要功能是根據(jù)接收系統(tǒng)中心控制模塊的命令,以控制電視機(jī)開關(guān)為例,將控制電視機(jī)開關(guān)的單片機(jī)引腳設(shè)定為p13,當(dāng)該引腳為高電平時(shí)繼電器吸合,電視開,當(dāng)為低電平時(shí)繼電器斷開,電視機(jī)關(guān)。電路圖如圖4.34.5 家電控制電路原理圖C8051F120收到中心控制器發(fā)送的控制信號(hào)后P1.3引腳變?yōu)楦唠娖?/p>
21、,當(dāng)光耦合器導(dǎo)通,呆滯繼電器吸合,給信息插座通電,從而接通家用電器。當(dāng)有警情是P1.4和P1.5變?yōu)楦唠娖剑瑔纹瑱C(jī)則通過TXD和RXD發(fā)送報(bào)警信號(hào),當(dāng)藍(lán)牙模塊輸出到中心控制器。 在上述電路中電阻R1的選擇至關(guān)重要,他影響著2N45開通與關(guān)閉的性能。R1較小時(shí),可減小開關(guān)時(shí)間與開關(guān)損耗,R1較大時(shí)則相反。一般根據(jù)產(chǎn)品手冊(cè)上提供的數(shù)據(jù)作為參考,在參考值(48歐姆)的1倍到10倍見選取,在這里選取5倍的參考值,即240歐姆。4.3 系統(tǒng)電源模塊原理圖C8051F120微控制器的內(nèi)核和I/O使用同一電源電壓,只需單電源3.3V供電 。圖4.4所示,輸入9V直流電源,電感L1用于限制瞬態(tài)電流,經(jīng)過C1、
22、C2濾波,然后通過SPX1117M-3.3將電源穩(wěn)壓至3.3V,其輸出用了一個(gè)4.7uf的電容來改善瞬態(tài)響應(yīng)和穩(wěn)定性。當(dāng)正確連接電源后,LED發(fā)光作為電源工作指示燈.為了降低噪聲和出錯(cuò)幾率,我們用電感L2、L3將數(shù)字電源和模擬電源隔離。圖4.6 3.3V供電原理圖系統(tǒng)中有些外圍器件的工作電壓為5V,比如控制家電的部分,所以我們還需要5V穩(wěn)壓電路,如圖4.5所示,其工作原理是輸入9V的直流電源,經(jīng)C8、C9濾波,然后通過LM78L05將電源穩(wěn)壓至5V.圖4.7 5V供電原理圖 SPX1117M是Sipex公司生產(chǎn)的LDO芯片,其特點(diǎn)是輸出電流最大,輸出電壓高,穩(wěn)定性好。其輸出蒂娜劉可達(dá)到800M
23、A,輸出電壓的精度在+-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語言的編程,開發(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)牙初始化是通過UART給藍(lán)牙模塊發(fā)送一系列初始化指令,藍(lán)牙模塊返回事件,交互完成一系列的復(fù)位、鑒權(quán)、讀地址等初始化操作。藍(lán)牙交互就是初始化完成后,若本
24、地藍(lán)牙作從設(shè)備,則等待遠(yuǎn)端藍(lán)牙設(shè)備的建鏈請(qǐng)求,如果接受請(qǐng)求,則繼續(xù)等待建鏈成功,獲得一個(gè)連接句柄,從而即可進(jìn)行數(shù)據(jù)交換;若本地藍(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)行處理。程序流程如圖51所示。圖5.1單片機(jī)端藍(lán)牙基本數(shù)據(jù)傳輸模塊程序流程圖系統(tǒng)時(shí)鐘初始化用來設(shè)置和啟動(dòng)系統(tǒng)時(shí)鐘。在這里采用外部24M外部振蕩器提供系統(tǒng)時(shí)鐘。首先使能24M外部晶振并等待外部晶振就緒,然后利用PLL將其倍頻為96M作為系統(tǒng)時(shí)鐘。管腳分配用來將U
25、ART0的TX和RX分配到管腳p0O和p01,并將pO0設(shè)為輸出模式、p01設(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)初始化完成之后,就需要開始對(duì)藍(lán)牙設(shè)備進(jìn)行操作。對(duì)藍(lán)牙設(shè)備的操作需要構(gòu)造一個(gè)藍(lán)牙HCI設(shè)備控制結(jié)構(gòu)體hci dev。藍(lán)牙設(shè)備操作的復(fù)雜性造成此結(jié)構(gòu)體也相對(duì)復(fù)雜,具體如圖5.2所示:UART控制結(jié)構(gòu)體uart dev變量ud,唯一的標(biāo)識(shí)一個(gè)串口連接。
26、藍(lán)牙HCI設(shè)備信息結(jié)構(gòu)體hci dev info變量hdinfo,保存藍(lán)牙地址、設(shè)備類型、緩沖區(qū)大小等。藍(lán)牙HCI設(shè)備連接控制結(jié)構(gòu)體hci dev con變量hd con,保存連接狀態(tài)、連接句柄、遠(yuǎn)端地址、時(shí)隙等。藍(lán)牙HCI設(shè)備設(shè)置結(jié)構(gòu)體hci dev set變量hd set,保存用戶設(shè)置信息,包括掃描允許、連接超時(shí)、鑒權(quán)允許、查詢參數(shù)等。藍(lán)牙HCI設(shè)備標(biāo)志位結(jié)構(gòu)體hcidev_ flags變量hd_ flags,標(biāo)識(shí)查詢和連接狀態(tài)。圖5.2 藍(lán)牙HCl控制結(jié)構(gòu)體hcidev數(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)該定義為全
27、局變量并且整個(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è)置,包括將hdhdinfo中的acl_ num和acl一1en全置0,cmdnum置1,以防止藍(lán)牙讀緩沖區(qū)大小指令ReadBufferSize執(zhí)行失敗后得到未定義的值;將hdhdcon中的constatus的值賦為NOT CONNECTED,將con handle的值設(shè)為1等等;藍(lán)牙參數(shù)設(shè)定通過對(duì)hdhd set相應(yīng)參數(shù)直接賦值實(shí)現(xiàn),可根據(jù)具體需要進(jìn)行不同的設(shè)置;藍(lán)牙初始化指令的發(fā)送是藍(lán)牙設(shè)備初始化的
28、關(guān)鍵。在此可調(diào)用藍(lán)牙HCI指令接口完成。至于具體需要哪些指令來進(jìn)行初始化,可根據(jù)需要增減,但有一些指令是必備的。在此提供兩個(gè)初始化指令集合initl和init2,其中bt init necessary為強(qiáng)制性、必備的指令集,bt_init_optional是非強(qiáng)制性、可選的指令集,見表51。調(diào)用HCI指令接口函數(shù)時(shí)需要傳入相應(yīng)參數(shù)列表結(jié)構(gòu)體,結(jié)構(gòu)體各項(xiàng)的參數(shù)值從已設(shè)定的hdhd set中提取。各指令之間最好是加25ms的延時(shí),在保證前一條指令執(zhí)行成功后才發(fā)送下一條指令。指令包的流控由hdhd infocmd num控制。表5.1 初始化指令集在進(jìn)入藍(lán)牙基本數(shù)據(jù)傳輸實(shí)驗(yàn)項(xiàng)目之前,設(shè)置了一個(gè)標(biāo)志位
29、bt role,用戶可選擇本地藍(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)求。若接受,則發(fā)送HCI Accept _Connection,若拒絕,則發(fā)送HCI_ reject_ connection_ request。單片機(jī)端和PC端之間
30、的藍(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ù)分組到來后經(jīng)過一系列的處理,將實(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è)置為自動(dòng)回傳打開,還可將已接收數(shù)據(jù)回傳給PC。單片機(jī)程序:以控制電視機(jī)開關(guān)為例:設(shè)定0X00表示關(guān),0x01表示開Void bt_basic()display_interface(); 顯
31、示界面Uart_init(); 串口初始化 HCI_init(); Hci設(shè)備初始化Clear_data_rev_buf(); 清空接收數(shù)據(jù)緩沖區(qū)Hci_param_set(hd); 設(shè)置HCI設(shè)備參數(shù)TV_0n_off=P13; p13在電路連接時(shí)控制電視While(1) 如果UART接收緩沖區(qū)非空,則調(diào)用狀態(tài)機(jī)處理。if(hci_buf_status!=HCI_BUF EMPTY) HCI_state();If( local_bt_role) 若由PC機(jī)發(fā)送數(shù)據(jù),單片機(jī)接收數(shù)據(jù)if ( event_evcode= CONNECTlON REQUEST) HCI Accept _Connec
32、tion;hci_event_connection_request(eventparam); if(event_evcode= CONNECTION COMPI ETE)oder=Hci_rev_acl_ data(); Switch(oder)case 0x00 TV_on_off=0; 電視關(guān)Case 0x01 TV_on_off=1; 電視開 If(event_evcode=DISCONNECTION_COMP)hci_event_disconnection_complete(eventparam);斷開連接5.2 PC端軟件設(shè)計(jì)PC端采用面向?qū)ο蟮腃+編程,在VC+60開發(fā)平臺(tái)下實(shí)現(xiàn)了
33、基于藍(lán)牙HCI層通信的基本數(shù)據(jù)傳輸控制程序。PC端操作系統(tǒng)為XP,采用的藍(lán)牙設(shè)備為藍(lán)牙USB適配器,適配器內(nèi)嵌藍(lán)牙芯片為CSR(Cambridge Silicon Radio)公司的Blue Core 04。藍(lán)牙USB適配器和PC之間通過USB接口進(jìn)行連接和通信,因而數(shù)據(jù)的傳輸利用的是藍(lán)牙HCI USB傳輸層。USB是由“通用串行總線實(shí)施論壇”組織公開發(fā)布推廣的一種串行接口標(biāo)準(zhǔn)。藍(lán)牙沒有為USB接口開發(fā)新的協(xié)議,而是使用已有的USB協(xié)議。在驅(qū)動(dòng)程序方面,一方面,xP系統(tǒng)自身會(huì)提供底層的硬件驅(qū)動(dòng)程序和簡單的上層應(yīng)用程序,在藍(lán)牙USB適配器連接到PC之后,會(huì)自動(dòng)裝載;另一方面,不同的藍(lán)牙芯片廠家會(huì)
34、提供不同的藍(lán)牙USB適配器的硬件驅(qū)動(dòng)程序,便于技術(shù)人員進(jìn)行針對(duì)特定應(yīng)用的開發(fā)。由于XP系統(tǒng)自帶的驅(qū)動(dòng)直接面向應(yīng)用,屏蔽了HCI層,所以在此處采用CSR公司提供的藍(lán)牙USB驅(qū)動(dòng)csrbc01inf',對(duì)應(yīng)于此驅(qū)動(dòng)附有一系列的控制字。安裝好藍(lán)牙USB適配器之后,在VC+60編程平臺(tái)中,采用Windows API函數(shù),結(jié)合驅(qū)動(dòng)程序提供的一系列控制字,就可以實(shí)現(xiàn)對(duì)藍(lán)牙USB適配器的訪問。PC端基于HCI USB傳輸層開發(fā)藍(lán)牙通信的步驟和流程類似于上文中單片機(jī)基于藍(lán)牙HCI UART層的開發(fā),它們都遵循藍(lán)牙HCI層的一般通信流程,區(qū)別就在于利用的HCI傳輸層不同。利用HCI USB傳輸層傳輸時(shí),
35、數(shù)據(jù)是通過USB端點(diǎn)來收發(fā)的,USB端點(diǎn)分為4大類,分別是控制端點(diǎn)、塊端點(diǎn)、中斷端點(diǎn)和同步端點(diǎn)。不同的端點(diǎn)實(shí)現(xiàn)不同的功能??刂贫它c(diǎn)用來配置和控制USB設(shè)備,在此處可用于主機(jī)(PC)向主機(jī)控制器(藍(lán)牙USB適配器)發(fā)送HCI指令分組。塊端點(diǎn)用來傳送ACL數(shù)據(jù)分組。中斷端點(diǎn)用來保證HCI事件分組的及時(shí)接收。同步端點(diǎn)用來傳輸SCO數(shù)據(jù)分組。由此可見,在采用USB傳輸層時(shí),不同的HCl分組可由不同的端點(diǎn)類別來區(qū)分,因而不需要再像HCI UART傳輸層那樣在分組前面加分組指示器。軟件流程圖如圖5.3所示圖5.3 PC端藍(lán)牙基本數(shù)據(jù)傳輸模塊流程圖程序的實(shí)現(xiàn)采用基于對(duì)話框的MFC編程。在程序中構(gòu)造了一個(gè)US
36、B Stack類負(fù)責(zé)對(duì)藍(lán)牙USB適配器的控制,包括打開設(shè)備、發(fā)送HCI指令分組、收發(fā)ACL數(shù)據(jù)分組、接收HCI事件分組等。類內(nèi)部對(duì)藍(lán)牙USB適配器的訪問通過Windows API函數(shù)配合CSR Blue Core控制字實(shí)現(xiàn),具體的類的細(xì)節(jié)參照CSR公司提供的CSR USB Dongle開發(fā)文檔(CSR USB Kernel)實(shí)現(xiàn)。在程序的整個(gè)生命周期中,定義一個(gè)USB Stack的全局變量m_bt標(biāo)識(shí)當(dāng)前的藍(lán)牙設(shè)備,如圖5.4所示圖5.4 USB Stack類定義表5.2 PC端的主要函數(shù)列表當(dāng)只有一個(gè)藍(lán)牙USB適配器連接到PC上時(shí),適配器的訪問路徑默認(rèn)為“.CSRO”,當(dāng)插上第二個(gè)藍(lán)牙USB
37、適配器時(shí),第二個(gè)適配器的訪問路徑默認(rèn)為“.CSRl,以此類推。此處默認(rèn)只連有一個(gè)適配器,則打開藍(lán)牙設(shè)備時(shí),調(diào)用m_ bt.open_ connection(“.CSR0”)完成藍(lán)牙適配器的打開和兩個(gè)后臺(tái)線check hci event0和checkacldata(),此處采用多線程編程線程check hci event0和checkacldata()分別用于實(shí)時(shí)接收主控制器返回的HCI事件分組和ACL事件分組藍(lán)牙設(shè)備打開以后,要對(duì)藍(lán)牙進(jìn)行初始化。類似于單片機(jī)端對(duì)藍(lán)牙模塊的初始化操作,在此也可靈活選擇初始化指令集和各初始化指令的參數(shù),由于在此處只是實(shí)現(xiàn)一個(gè)基本的測(cè)試程序,所以對(duì)這些指令的參數(shù)的選
38、擇只是按一般的需要進(jìn)行設(shè)置和取值,比如HCI_ Write_ Scan_ Enable指令的掃描允許參數(shù)直接設(shè)為0x03表示查詢掃描和呼叫掃描同時(shí)允許,以下的指令參數(shù)的設(shè)定類似,不再贅述。指令分組也直接采用了十六進(jìn)制數(shù)串集中發(fā)送出去,指令與指令之間采用了一定的延時(shí)以保證主機(jī)控制器指令緩沖區(qū)不會(huì)溢出,下面給出了藍(lán)牙初始化指令集的代碼示例(限于篇幅,下文中的查詢、建立連接等操作不再給出代碼,只作文字說明)。初始化完成之后,PC會(huì)收到藍(lán)牙返回的多個(gè)HCI事件,從中捕獲讀緩沖區(qū)大小事件和讀本地藍(lán)牙地址事件,解析出主機(jī)控制器指令緩沖區(qū)和數(shù)據(jù)緩沖區(qū)大小將其保存,解析出本地藍(lán)牙地址將其保存并顯示,然后就可以
39、進(jìn)行對(duì)周圍藍(lán)牙設(shè)備的查詢。查詢完成后,PC捕獲藍(lán)牙返回的查詢結(jié)果事件,從中解析出查詢到的遠(yuǎn)端藍(lán)牙的地址,將其保存在m_bt.remotebdaddr6,根據(jù)獲得的遠(yuǎn)端藍(lán)牙地址,可發(fā)起建立連接請(qǐng)求,其中分組類型參數(shù)選用Ox0008,表示建立的連接為DMl類型。與遠(yuǎn)端藍(lán)牙連接建立完成后,會(huì)返回建立連接完成事件,需要注意的是,若建立連接時(shí)當(dāng)前在兩端藍(lán)牙設(shè)備之間已經(jīng)存在連接,則只會(huì)返回最大時(shí)隙改變事件。因而發(fā)送建立連接請(qǐng)求指令之后,要捕獲返回的事件,若是連接建立完成事件或最大時(shí)隙改變事件且status參數(shù)為O,則表示建立連接成功,否則失敗,要重新發(fā)起連接請(qǐng)求。連接建立成功之后,就可以進(jìn)行數(shù)據(jù)的收發(fā)了。
40、數(shù)據(jù)的傳送是以ACL數(shù)據(jù)分組的格式進(jìn)行的。首先要根據(jù)已建立連接的連接句柄和PB、BC標(biāo)志組合ACL分組頭,然后根據(jù)要發(fā)送數(shù)據(jù)的總長度獲知ACL數(shù)據(jù)分組的長度和L2CAP分組的長度,再設(shè)定L2CAP CID,最后才是真正要發(fā)送的數(shù)據(jù)的寫入,具體的格式在上文中已給出。在此處,構(gòu)造一個(gè)ACL PKT結(jié)構(gòu)體用于標(biāo)識(shí)一個(gè)ACL數(shù)據(jù)分組。ACL數(shù)據(jù)分組組合完成后,動(dòng)態(tài)分配一個(gè)數(shù)組p_aclpkt將組合完成的分組復(fù)制。數(shù)據(jù)分組發(fā)前要檢查當(dāng)前主機(jī)控制器接收緩沖區(qū)是否還有空閑空間,有則允許發(fā)送,否則提示“緩沖區(qū)溢出”,待有緩沖區(qū)釋放后再重新發(fā)送。此處要注意的是,分組的長度信息部分一定要正確無誤,否則發(fā)出后不但不
41、會(huì)被遠(yuǎn)端藍(lán)牙設(shè)備接收,而且會(huì)導(dǎo)致當(dāng)前連接斷開。第六章 系統(tǒng)測(cè)試與分析在藍(lán)牙數(shù)據(jù)傳輸系統(tǒng)中,PC端和單片機(jī)端可分別作為主或從設(shè)備。在此處,將PC作為主設(shè)備發(fā)起查詢,單片機(jī)端作為從設(shè)備,PC向單片機(jī)發(fā)送控制指令。PC端的程序界面如圖所示圖6.1 藍(lán)牙數(shù)據(jù)傳輸系統(tǒng)PC端界面程序的操作按照打開藍(lán)牙設(shè)備、初始化藍(lán)牙、查詢附近藍(lán)牙、建立連接、發(fā)送數(shù)據(jù)文件、斷開連接、關(guān)閉藍(lán)牙的順序進(jìn)行,由操作區(qū)的按鈕觸發(fā)實(shí)現(xiàn)。藍(lán)牙初始化完成后,在信息區(qū)會(huì)顯示本地藍(lán)牙地址,查詢完成之后,在信息區(qū)會(huì)顯示查詢到的遠(yuǎn)端藍(lán)牙地址,然后就可以發(fā)起建立連接。在建立連接指令中可通過參數(shù)設(shè)置不同的ACL分組類型,例如DMl、DM3等。不同的ACL分組類型對(duì)應(yīng)不同的時(shí)隙,可得到不同的傳輸速率和最大傳輸距離閻。連接建立成功后信息區(qū)“藍(lán)牙狀態(tài)"會(huì)顯示連接已建立,方可發(fā)送數(shù)據(jù)和文件。在數(shù)據(jù)的收發(fā)過程中,在信息區(qū)還會(huì)顯示發(fā)送計(jì)數(shù)、接收計(jì)數(shù)以及當(dāng)前可發(fā)送的ACL包數(shù)目。在此
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國冰棗烏龍茶數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 統(tǒng)編版二年級(jí)語文下冊(cè)期末達(dá)標(biāo)測(cè)試卷(全真練習(xí)二)(含答案)
- 北京市昌平區(qū)2024-2025學(xué)年高一上學(xué)期期末質(zhì)量抽測(cè)物理試卷(含答案)
- 規(guī)劃快題測(cè)試題及答案
- 高一英語衡水試題及答案
- 2022-2023學(xué)年廣東省廣州七中七年級(jí)(下)期中數(shù)學(xué)試卷(含答案)
- 2024甘肅省蘭州市中考英語真題【原卷版】
- 遺產(chǎn)繼承遺產(chǎn)轉(zhuǎn)讓合同(2篇)
- 采購與分包責(zé)任清單合同(2篇)
- 2025年法律知識(shí)競賽試題及答案
- 中國常見食物營養(yǎng)成分表
- 光伏車棚方案
- 基于語文核心素養(yǎng)的初中語文綜合性學(xué)習(xí)教學(xué)策略研究
- 工藝部述職報(bào)告
- 廣東中考美術(shù)知識(shí)點(diǎn)
- 臨床科室科研用藥管理制度
- 多層光柵結(jié)構(gòu)的防偽技術(shù)研究
- 《國有企業(yè)采購操作規(guī)范》【2023修訂版】
- 五年級(jí)語文下冊(cè)第五單元【教材解讀】-【單元先導(dǎo)課】
- DQ-廠房設(shè)施設(shè)計(jì)確認(rèn)方案
- 常用中藥飲片介紹PPT幻燈片
評(píng)論
0/150
提交評(píng)論