《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 信息家電中藍牙通信的實現
信息家電中藍牙通信的實現
摘要: 信息家電是當前國內外研究的熱點,而信息家電中又以數據傳輸方式的性價比為重點。藍牙可以作為一種有效的通信手段,實現家庭網關與信息家電間的控制信息等其他適中數據量的傳輸。本文首先介紹藍牙的HCI和藍牙協議L2CAP、BNEP,然后介紹如何在Linux2.4.18下實現USB藍牙驅動,最后介紹如何實現在藍牙個人局域網中進行無線通信。
Abstract:
Key words :

信息家電是當前國內外研究的熱點,而信息家電中又以數據傳輸方式的性價比為重點。藍牙可以作為一種有效的通信手段,實現家庭網關與信息家電間的控制信息等其他適中數據量的傳輸。本文首先介紹藍牙的HCI和藍牙協議L2CAPBNEP,然后介紹如何在Linux2.4.18下實現USB藍牙驅動,最后介紹如何實現在藍牙個人局域網中進行無線通信。

1 信息家電的基本框圖

信息家電的基本結構圖如下圖1所示,家庭主網關是負責各種家電與外部環境進行“交流”的橋梁,其中與外部環境進行通信的方式包括Ethernet、PSTN固話網等等。而就家庭內部而言,對于如:空調、電視等普通信息家電,由于家庭網關與其通信的數據量并不大,因此完全可以采取藍牙無線方式進行通信,從而達到控制家電工作的目的。



圖1

2藍牙的HCI和L2CAP、BNEP協議

藍牙協議體系大致分為三層,即底層硬件模塊層、中間協議層、高端應用層,每一層還
包含一些具體的協議。

2.1藍牙的HCI

藍牙的主機控制接口(HCI)是藍牙主機--主控制器應用模式中藍牙模塊和主機間的軟硬件接口,它位于藍牙協議棧的底層硬件模塊層與中間協議層之間,負責完成這二層的數據通信[1]。目前,藍牙HCI傳輸層的物理接口有USB、UART等,藍牙設備可以采用這些物理接口來實現通信。本文將介紹用USB口作為傳輸層實現通信。

2.2藍牙的L2CAP協議
藍牙的邏輯鏈路控制與適配協議(L2CAP)是整個藍牙協議的核心,它位于中間協議層,它將下層的數據分組轉換為便于高層應用的數據分組格式,并提供協議復用等功能。它向上層協議提供了面向連接和無連接的服務,L2CAP層只支持ACL(異步無連接)數據的傳輸,而不支持SCO(同步面向連接)數據的傳輸[1]。

2.3 藍牙的BNEP協議

藍牙SIG制定的網絡封裝協議(BNEP,Bluetooth Network Encapsulation Protocol),可對上層IP協議提供類似于以太網的接口,對IEEE802. 3/Ethernet封裝支持的網絡協議,均予以支持 [2]。BNEP通過面向連接的L2CAP來實現的,L2CAP可以看作是藍牙介質訪問控制(MAC)層。BNEP在整個藍牙協議棧中起著一個橋梁的作用,它將IP包轉換成L2CAP包通過藍牙傳輸。BNEP協議主要應用在藍牙個人區域網中。

3 USB藍牙模塊驅動

1、由于采用的內核是Linux2.4.18,其中并沒有包括對藍牙驅動的支持,因此必須對其打補丁。解壓Linux2.4.18內核,把藍牙補丁包patch-2.4.18-mh15.gz放在解壓內核目錄下,執行命令patch –p1 < patch-2.4.18-mh15.gz[3]。

2、Linux Bluetooth協議棧中的BNEP(Bluetooth 網絡封裝協議)實現了Bluetooth上的以太網仿真,這使TCP/IP可以直接運行于Bluetooth之上。由于實驗的本質就是通過藍牙HCI的USB實現基于BNEP的以太網傳輸數據,因此在內核配置時必須加上對BNEP的支持。

3、進入Bluetooth subsystem support選項中,選擇L2CAP protocol support、BNEP protocol support(Malticast filter support和Protocol filter support)這幾項,這幾項的作用就是使內核支持藍牙協議中的L2CAP和BNEP協議。然后進入Bluetooth device drivers,選擇HCI USB driver。至此,就完成了內核對于USB藍牙的支持。

4、下載bluez-libs-2.17.tar.gz藍牙庫和bluez-utils-2.17.tar.gz工具包,運行tar zxvf命令解壓縮,然后運行make和make install命令,這樣就能得到我們需要的libbluetooth.so、libbluetooth.so.1、libbluetooth.so.1.17這3個庫文件和hcid、hcitool、pand、hciconfig、sdpd、sdpdtool這6個進程文件。

4家庭網關中藍牙無線通信的實現
整個通信過程的介紹:

1、USB藍牙的傳輸驅動程序(drivers/bluetooth/hci_usb.c)將信息注冊到Linux USB核心。當USB藍牙插入時,主機控制器設備驅動程序會枚舉它并給它分配地址,同時讀取設備描述符中所包含的設備信息。如果枚舉期間讀取的設備描述符與hci_usb驅動程序注冊到Linux USB核心的信息相匹配,那么這個驅動程序就能添加進USB設備。

2、運行hcid(HCI后臺進程)、sdpd(服務發現協議后臺進程)、hciconfig(檢查HCI接口并開啟藍牙設備)、hcitool(掃描藍牙設備的地址)這四個CRAMFS文件系統sbin目錄下的進程文件,這幾個文件的執行依賴于libbluetooth.so、libbluetooth.so.1、libbluetooth.so.1.17這三個藍牙庫文件。在S3C2410一側的藍牙設備能夠被發現并被成功分配唯一地址的基礎之上運行pand --listen --role NAP,這樣將允許通過藍牙連接以太網。如圖2所示。



圖2

3、PC機上插入USB藍牙,運行windows下藍牙的驅動軟件BlueSoleil,掃描并發現藍牙設備之后,建立個人局域網。

4、在個人局域網建立的基礎之上,BNEP就可以將自己作為以太網設備注冊到Linux網絡層??梢酝ㄟ^命令ifconfig bnep0來改變藍牙接口IP地址。BNEP模塊和用戶模式pand后臺進程實現了Bluetooth個人區域網(PAN)。將二個USB藍牙的IP地址修改為同一個網段后,就可以使用ping PC機的USB藍牙IP地址命令來實現模擬家庭網關和內部設備間的無線通信,如圖3超級終端打印信息所示。



圖3

5、實驗結果:由圖2和圖3可以看到在運行了包含hcid、sdpd、hciconfig、hcitool四個進程的文件bluetooth后,可看到S3C2410一側的USB藍牙的地址為00:0D:18:01:23:88,而后用ifconfig bnep0 192.168.0.2修改了它的局域網地址,最后用ping 192.168.0.18(PC機上的藍牙地址)即可實現雙方的數據收發。


參考文獻:

[1] Bluetooth Special Interest Group,Specification of the Bluetooth Sy-stem,Version1.1,volumes 1 and 2,available from http://www.bluetooth.com,February 22 2001

[2] Bluetooth Special Interest Group. Bluetooth Network Encapsulation Protocol Specification:Specification of the Bluetooth System .Version 0.96e, 2002

[3] JONATHAN CORBET,ALESSANDRO RUBINI著;魏永明, 駱剛,姜君譯.LINUX設備驅動程序(第2版)[M].中國電力出版社,2004,9

[4] 吳振綱,陳虎.PLC的人機接口與編程[J].微計算機信息,2005,8-1:21-23

作者簡介:肖驍,男,1981年生,漢,在讀研究生,研究方向:信息家電體系結構、嵌入式系統.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 八小时比赛视频完整小时 | 成年啪啪网站免费播放看 | 久久精品免费i 国产 | 欧美日韩一区在线观看 | 97在线视频网站 | 视频在线观看你懂的 | 可以免费观看的毛片 | 国产区成人精品视频 | 高清视频欧美性生活 | 欧美视频网 | 男人天堂资源站 | 国产精品欧美亚洲韩国日本不卡 | 婷婷综合久久中文字幕蜜桃三 | 普通话对白国产精品一级毛片 | 成人免费观看男女羞羞视频 | 日韩欧美视频一区 | 午夜激情福利视频 | 国内自线一二三四区 | 国产在线视频你懂的 | 国产一级毛片国产 | 国产羞羞的视频在线观看免费 | 日韩欧美精品在线观看 | 国产视频第二页 | 久久福利一区二区三区 | 国内精品久久久久影院6 | 中文字幕日韩一区二区三区不卡 | 乱码精品一区二区三区 | 男女国产视频 | 97在线观看视频免费 | 亚洲狠狠婷婷综合久久久久网站 | 好男人天堂网 | 精品亚洲一区二区三区 | 国产小视频在线看 | 欧洲亚洲一区二区三区 | 久久国产精品一国产精品 | 玖玖国产精品视频 | 欧美精品久久天天躁 | 日韩a一级欧美一级 | 日韩欧美中文字幕在线视频 | 午夜电影网国产中文亚洲 | 婷婷丁香九月 |