摘 要: 介紹了一種基于藍牙與智能手機的遠程信息采集與控制系統及藍牙系統的無線傳感網絡系統架構、下位機、手機端與服務器端的相關設計,給出了相應軟、硬件設計的流程圖以及硬件模塊的電路圖。
關鍵詞: 藍牙;智能手機;智能家居;節點
我國智能家居行業在飛速發展,然而受高成本的限制,智能家居很難進入普通家庭。傳統的智能家居都有專門的遙控器,而且不同的設備需要配備不同的遙控器,同時信息不能實時反饋給用戶。本文介紹的系統采用智能手機自帶的藍牙,解決了這些問題。藍牙技術的控制方法類似于現時紅外線遙控器與電器之間的指令關系,區別在于相應產品需植入藍牙晶片,使用2.402~2.480 GHz免付費、免申請的無線電頻段。為避免此頻段電子裝置眾多的相互干擾,因而輔以每秒1 600次高難度跳頻以及加密、保密技術,傳輸速率在432 Kb/s~721 Kb/s不等,未來的版本將達2 Mb/s。植入了藍牙芯片的手機、電腦等,在10 m的范圍內,可作為無線話音及數據信息的傳送,配合專用的擴大器,收發范圍可遠達100 m。結合了電路交換與分組交換的特點,可以進行異步數據通信,可以支持多達3個同時進行的同步話音信道,還可以使用一個信道同時傳送異步數據和同步話音。最主要的是幾乎所有手機都配備藍牙功能,帶寬完全可滿足實時監控的需要,傳輸距離也足夠家居環境的使用。藍牙在局域型的信息采集與控制系統中有著良好的應用前景。
1 基于藍牙的無線傳感網絡系統構架
1.1 藍牙網絡拓撲結構
藍牙技術是一種無線數據與語音通信的開放性全球規范,它以低成本的近距離無線連接為基礎,為固定與移動設備通信環境建立一個特別連接。藍牙工作在全球通用的2.4 GHz ISM頻段,數據傳輸速率為1 Mb/s,時分雙工方案被用來實現全雙工傳輸,使用IEEE802.15協議。
每個藍牙設備被分配一個唯一48 bit的藍牙設備地址[1],它支持兩種操作模式:主設備和從設備。其中主設備負責提供時鐘同步信號和調頻序列,從設備接收主設備的同步控制和調頻控制。藍牙支持點對點、點對多點的通信,最基本的組網方式是微微網。如圖1所示,同一個微微網中的所有設備都跟隨主設備的調頻序列。在圖1中,(a)是點對點的連接;(b)是點對多點的連接。本文中使用的是圖1(b)的連接方式[2]。
1.2 遠程信息采集與控制系統體系結構
基于藍牙與智能手機的遠程信息采集與控制系統主要由各個房間的有相應數據采集功能的藍牙無線傳感器節點、放置在家庭中心位置的具有數據處理能力的中心節點(具有藍牙功能的收發器)、一款智能手機以及一個網絡服務器終端組成[2]。各無線傳感器通過藍牙將采集的數據傳送至中心節點,中心節點通過藍牙將數據發送至手機端,手機端安裝有專門的接收軟件,可以接收下位機發送來的數據,并進行處理,將處理后數據發送至服務器。同時服務器對手機發送指令,手機可以對下位機發送指令,以實現實時監測、實時控制。圖2反映了體系的完整結構。
2 下位機的設計
2.1 無線傳感器網絡節點的布置
不同的房間放置不同的傳感器,如廚房放置一氧化碳傳感器、溫度傳感器,臥室放置溫濕度傳感器、光強傳感器。這些傳感器節點離中心節點的的距離一般都不會超過10 m,這已經足夠覆蓋一般家庭所有房間。
2.2 下位機控制模塊的設計
藍牙模塊處于等待連接狀態,當手機第一次發出連接請求時需要輸入藍牙內置的密碼,以后再連接時則不需要輸入密碼,除非密碼改變。匹配成功后建立連接,藍牙模塊充當手機和微控制器(單片機)的通信信道,實現手機和微控制器的雙向連接。用戶通過手機經藍牙向單片機發送命令,單片機接收到命令后,控制相應的執行模塊,實現控制功能。例如:制作以52單片機為主控制器的學習型遙控器,經藍牙模塊與手機建立,用戶便可以實現電視換臺、控制音量等操作。同時微控制器還能將相關傳感器采集的數據實時發送給手機,實現實時監測功能。如:溫度傳感器和煙霧傳感器檢測到數據超標后,將報警信號發送給單片機,單片機將報警信號發送給手機,通知用戶火警[3]。
下位機模塊原理如圖3所示,模塊分別為控制開關、藍牙模塊、紅外發射模塊和紅外接收模塊。開關可以控制各種家電的開關,藍牙模塊用于接收和發送數據,紅外發射器負責控制紅外遙控的家電,紅外接收模塊可以復制遙控器的發送紅外的頻率,以實系統現通用性。
3 手機端軟件的設計
3.1 手機和藍牙設備的通信
采用Java語言開發Adroid2.2版本以上的手機應用程序,該版本支持藍牙通信。首先通過SDK提供的BluetoothAdapter類的startDiscovery()方法,掃描出附近與傳感器相連的藍牙設備并返回其物理地址,以列表形式展現;然后通過ListView的點擊事件確定與哪臺藍牙設備進行連接,當選中一個物理地址之后,便會調用BluetoothSocket類的connect方法,使手機和該藍牙設備建立基于TCP/IP協議的SOCKET連接。重點代碼[4]如下:
BluetoothDevice mBTDevice=mBTAdapter.getRemoteDevice(dvcAddr);
mBTSocket=mBTDevice.createRfcommSocketToServiceRecord(dvcUUID);
mBTSocket.connect();
其中,dvcAddr為所要連接的藍牙設備的物理地址,mBTDevice利用通用唯一識別碼(dvcUUID)來創建一個BluetoothSocket對象,該對象利用connect方法與藍牙設備建立連接。
建立連接之后,利用OutputStream對象的write方法可以向藍牙設備發送信息,實現控制。并通過操作輸入輸出流進行交互(包括手機對藍牙設備信息的采集以及對其操作指令的傳達)。重點代碼如下:
out=BTConnectActivity.mBTSocket.getOutputStream();
String str="2";
out.write(str.getBytes(),0,1);
上述代碼以控制燈泡的開關為例,當字符為非0時(代碼中為2),打開開關;當字符為0時,關閉開關。
3.2 手機和服務器交互
在手機端以提供一個上傳界面的方式,顯示從藍牙設備接收的數據,通過點擊事件,與上傳服務器建立SOCKET連接,并發送之前從藍牙設備接收到的數據。服務器在接收到數據之后會發送相應的反饋信息給手機端,再通過手機和藍牙設備的交互通道,給予藍牙設備相應的操作指令。重點代碼如下:
Socket socket=new Socket("192.168.0.101",54322);
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
out=new PrintWriter(new BufferedWriter(new OutputStreamWriter (socket. getOutputStream())),true);
out.println(mes);
其中,192.168.0.101是所要連接的服務器的IP地址,54322是端口號。通過輸出流對象out的println方法,向服務器發送數據,并通過BufferReader對象br讀取從服務器發來的數據。
手機端軟件設計框圖如圖4所示。
4 服務器端軟件的設計
服務器端是一個基于Java的圖形用戶界面(GUI),主要是實現顯示接收到的數據以及與手機進行通信,可以接收手機上傳簡單的數字信息、圖片、視頻文件等,同時服務器可以控制手機,當終端管理員需要遠程采取相關操作時,可直接通過控制手機來控制家里的一切。
本文提出了基于藍牙與智能手機的遠程信息采集與控制系統,分析研究了藍牙網絡的一般拓撲結構,采用藍牙節點模塊實現了無線終端的設計,以及傳感器終端的接口電路設計,給出了手機軟件模塊設計的流程圖,最后簡單介紹了服務器端的功能。憑借藍牙的低功耗及傳輸穩定、3G網絡覆蓋范圍極廣且傳輸速度快等特點,該系統具有很好的靈活性和可擴展性,可以廣泛應用于野外勘探、醫療器械和智能家居等多個領域,具有廣闊的市場發展前景。
參考文獻
[1] CHATSCHIK B. An overview of the Bluetooth wireless technology[J]. IEEE Communications Magazine, 2001,39(12):86-94.
[2] 王寧,黃樟欽.智能手機遠程家居監控系統的設計與實現[J].計算機應用,2005,25(9):2212-2213.
[3] 徐鳳榮.ROK101007藍牙模塊及其在無線火災自動報警系統中的應用[J].國外電子元器件,2006(11):54-57.
[4] 李寧.Android開發權威指南[M].北京:人民郵電出版社,2011.
[5] 金純,許光辰,孫睿.藍牙技術[M].北京:電子工業出版社,2001.
[6] BRAY J, STURMAN C F. Bluetooth connect without cables. second edition[M]. New Jersey: Prentice Hall PTR,2002.
[7] 呂鑫,王忠.ZigBee無線數據傳輸模塊的設計與實現[J].安徽師范大學學報,2010,33(4):332-335.