劉英明
(長春汽車工業高等專科學校 電氣工程學院,吉林 長春 130013)
由于科學技術飛速發展,通過總線技術和自動控制技術即可對家庭住宅中各種保險安全設備、家用電器進行監控與管理,這種系統被稱為Smart Home,即現在智能家居的原型[1-3]。本文提出了一種基于CC2530的無線智能門鎖系統。在這套系統中,智能門鎖的狀態可實時在Android手機客戶端上實時顯示。智能鎖的打開關閉狀態等信息都存儲在本地文件系統上,用戶可以隨時進行查閱或者對非法開門信息進行跟蹤。除此之外,該系統還集成了溫濕度檢測、語音控制等功能,方便用戶查看和控制智能門鎖。本文的智能門鎖系統可以實現智能家居終端和移動客戶端的雙向通信:智能無線門鎖終端設備在獲得門鎖狀態、溫濕度等數據后將其發送給本地服務器,本地服務器在獲取到這些數據后再通過Wi-Fi網絡將其發送至無線門鎖系統配套的APP。同時在移動客戶端中加入語音控制等技術,可以通過上述途徑反向控制無線門鎖設備。這套智能無線門鎖系統有價格低、設備功耗低、兼容性高等優點,有廣闊的應用前景[4]。
本設計建立基于CC2530芯片的智能無線門鎖系統,該系統包括三個部分,分別是無線門鎖終端設備、本地服務器和配套的Android客戶端。系統的架構如圖1所示,智能無線門鎖終端設備通過串口連接到本地服務器,本地服務器通過串口連接到無線AP,并將數據發送給安卓客戶端,客戶端顯示數據給用戶或發送命令控制智能家居設備。

圖1 智能門鎖系統總體架構
系統數據傳輸的情況如下,智能門鎖終端設備將采集到的,智能門鎖終端設備狀態信號和溫濕度數據發送給本地服務器(透傳模塊),本地服務器接收到數據后,通過無線網絡,發送給安卓客戶端。系統的控制傳輸情況如下:用戶使用安卓客戶端將控制指令,通過無線網絡發送給本地服務器(透傳模塊),本地服務器接收到指令后,再將指令發送給智能門鎖終端設備。
本部分的主要內容是硬件終端設備的開發。首先介紹終端設備的嵌入式軟件開發環境,然后介紹在系統終端設備上進行具體開發的流程。
本系統的嵌入式開發環境是I A R E m b e d d e d Workbench IDE-8051,版本為10.30.1。該集成開發環境適用于大量8位、16位以及32位的微處理器和微控制器,該集成式開發環境提供一個框架,該框架將可用高度優化的編譯器、匯編器、鏈接器等工具完整地嵌入其中[5]。
開發者使用IAR工具可以大大節約工作時間。在開發新項目的時候,即使在使用習慣的開發環境中也能執行。不僅如此,它還為用戶提供容易學習和容易繼承代碼的開發環境,以及支持大多數特殊目標的開發環境。
ZigBee網絡中包括Coordinator,Router和End-Device這三種邏輯設備類型。ZigBee網絡由一個Coordinator以及多個Router或多個End-Device組成。Coordinator負責整個網絡的開始。Coordinator選擇頻道和個人局域網絡ID(Personal Area Network ID),開始整個網絡。Coordinator的作用主要和網絡啟動和構成有關,當然也可以用來幫助建立局域網絡安全層和應用層之間的綁定。上述工作完成后,Coordinator會在功能上就轉變為Router;Router的功能主要是讓其他設備加入網絡。通常Router必須使用主電源供電,因為希望它是一直處于活動狀態。但是,在使用樹狀網絡拓撲結構的情況下,Router被允許在一定期間內工作一次,因此可以用電池供電。End-Device可以是電池驅動的設備,因為該設備沒有維護網絡結構的責任,可以睡眠或者喚醒。一般來說,End-Device的存儲空間(尤其是RAM)要求比較小。
ZigBee網絡支持星型、簇狀和網狀三種網絡拓撲結構,三種拓撲結構如圖2所示,下面詳細介紹星型拓撲結構。星型拓撲結構使用一個完整功能設備作為個人局域網啟動的關鍵節點。該ZigBee節點設備類型被配置為協調器,通過網絡層的相關功能,選擇一個沒有被其他網絡使用的個人局域網標識符,進而啟動一個新的網絡。星型拓撲結構具有組網方便并且網絡的機構容易維護等優點,但是其缺點也很明顯,如網絡的覆蓋范圍小、協調器的射頻覆蓋范圍限制等。如果和星型網絡一樣使用一個完整功能設備作為個人局域網協調器,但采用多個路由器參與轉發信息,這種通信方式被稱為點對點通信。點對點網絡結構覆蓋面積大,可以達到轉發消息繞過障礙物的效果,但是該種拓撲結構下,網絡傳輸延時大、組網復雜、穩定性不容易維護。

圖2 ZigBee 網絡拓撲結構
無線門鎖系統的硬件由深聯智達公司生產的CC2530模組和本地服務器組成。CC2530模塊的硬件簡化結構中片內資源主要包括串口(UART)、普通I/O和外部中斷,LED模塊以及RF(無線電)等。
本地服務器采用HLK-M35透傳模塊,圖3為該透傳模塊的硬件簡化結構[6]。

圖3 透傳模塊硬件圖
2.3.1 門鎖模擬程序
采用本地服務器上的GPIO1口作為門鎖狀態的模擬,該口外接LED燈,起到提示作用。當該口為低電瓶,即綠燈亮起時,表示門處于打開狀態;當該口為高電平,即綠燈熄滅時,表示無線門鎖處于關閉狀態。使用AT指令控制,該門鎖的狀態。當客戶端連接到該模塊時,發送“hlkATat+GW=1,0”指令時,門鎖被模擬打開,指示燈亮起;當客戶端發送“hlkATat+GW=1,1”指令時,門鎖被模擬關閉,指示燈熄滅。
2.3.2 溫濕度獲取程序
溫濕度獲取模塊使用SHT10溫濕度傳感器。在本設計使用到的模塊中,微電路板集成傳感器元件和信號處理電路,輸出完全校準的數字信號。該傳感器具有高性價比、高響應速度、接口簡單、體積小等特點。該傳感器屬于Sensirion溫濕度傳感器家族[7],本設計使用的是貼片封裝系列。在本設計中SHT10連接在CC2530芯片的P0_4和P0_5。硬件簡化結構如圖4所示。

圖4 溫濕度模塊硬件圖
從SHT10讀到的溫度數據值t和濕度數據值h,通過公式(1)和公式(2)轉換可以達到實際的溫度值T(攝氏度)和濕度值H(相對濕度),由于數據轉換的原因,小數點2位以后的數據沒有實際意義。

本部分首先簡要介紹Android操作系統和常用四大開發組件,然后介紹Android客戶端的總體設計,最后介紹Android客戶端的各個功能以及具體實現。
在Android應用程序開發中經常會用到四大開發組件,每個組件都是系統或用戶可以通過其進入應用程序的入口點,這些組件之間相互配合,實現對應的功能需求[8]。
Android的四大開發組件使其在程序開發過程中擁有很多獨到之處。開發者可以通過自己開發的應用程序去啟動其他應用程序的組件。同時,開發者如果希望用戶使用設備相機拍攝照片,則可以借助另一個應用程序執行此操作,而自身開發的應用程序可以使用它來代替自己開發活動來拍攝照片。開發者不需要并入相機應用程序中的代碼,甚至不需要鏈接到它們。相反,開發者只需在捕獲照片的相機應用程序中啟動活動即可。完成后,照片甚至會返回到應用程序,以便使用。對用戶而言,相機似乎實際上是應用程序的一部分。
Android客戶端軟件可以分為五大模塊,如圖5所示。

圖5 客戶端軟件總體設計
(1)設備綁定模塊:Android客戶端通過Wi-Fi連接到本地服務器后,客戶端后臺會自動識別服務器的IP地址,以確保連接到正確的設備上。
(2)網絡通信模塊:客戶端后臺啟動服務,在Android客戶端后臺與本地服務器建立TCP長連接,獲取門鎖狀態和溫濕度信號并控制門鎖狀態,完成與服務器數據的雙向傳輸。
(3)數據存取模塊:客戶端后臺將獲取到的溫濕度數據等存儲在本地文件系統上,方便用戶進行后續的查詢。
(4)狀態顯示模塊:在完成網絡數據通信并將其存儲到Android手機文件系統后,客戶端提取本地文件中的門鎖狀態、溫濕度數據等信息,在對應的Android控件上進行顯示。
(5)語音控制模塊:客戶端集成科大訊飛離線語音識別SDK,可通過如“開門”“關門”語音命令完成門鎖模擬打開和關閉等操作。
3.3.1 設備綁定
用戶啟動Android客戶端,通過Wi-Fi連接到本地服務器,點擊“連接”頁面,客戶端后臺判斷是否連接到對應的本地服務器。若連接成功則播放過場動畫,進入狀態顯示模塊。如果連接的網絡不是正確的網絡,將會提示用戶信息出錯[9]。
3.3.2 狀態顯示
客戶端進入狀態顯示界面時,后臺會開啟網絡通信模塊和數據存取模塊,實時獲取門鎖狀態和溫濕度狀態等信息,并通過下拉刷新將門鎖狀態及溫濕度數據顯示在對應的控件中。刷新數據后的頁面如圖6所示。

圖6 用戶界面
3.3.3 語音控制
用戶點擊上方“語音控制”圖標即可進入語音控制模塊,通過相應語音指令模擬控制門鎖。當使用語音控制門鎖打開和門鎖關閉會出現相應的動畫,如圖7所示。

圖7 語音控制效果圖
本文完成了一個基于CC2530芯片的智能無線門鎖系統。本文詳細闡述了無線門鎖終端設備的硬件開發的要點與溫濕度采集的算法流程,本系統本文的硬件設備包括兩部分,一部分是CC2530芯片模組,主要使用網絡傳輸模塊和溫濕度傳感器模塊,另一部分是Wi-Fi透傳模塊,主要用于接收CC2530模組傳來的數據以及向配套的Android客戶端發送數據。本文完成了Android客戶端的開發,使用Android四大開發組件完成了客戶端的開發,包括設備綁定、狀態顯示、網絡通信、數據存取等功能的實現。
本設備價格低,在門鎖上面集成了溫濕度傳感器,使用范圍更加廣泛。同時在客戶端上集成了科大訊飛的語音識別功能,方便用戶使用。
本文雖然實現了一個智能無線門鎖系統,但是現階段存在許多不足,比如:
(1)支持的終端設備類型還不夠豐富,以后可以借鑒廠商開發標準,支持接入市面上常見的門鎖設備。
(2)客戶端的功能比較基礎,沒有添加刪除設備等功能,為了用戶的使用體驗,需要增加更多功能。
(3)對于軟硬件開發的測試還不夠,只進行了簡單的功能性測試,沒有進行更全面的測試。
(4)系統中的安全加密機制還不夠成熟,而該系統直接涉及用戶的居家隱私,因此后續需要添加相應的安全措施。
(5)在保證數據安全的前提下,本地服務器的數據可以上傳到云服務器,方便用戶進行遠程的連接。