,,
(東北大學 計算機科學與工程學院,沈陽110819)
近年來,隨著計算機網絡技術、嵌入式技術和自動控制技術的迅猛發展,智能化應用技術在世界各地得到了廣泛應用[1]。傳統的智能家居控制系統一般通過有線方式組建并且通過PC控制,這種控制方式不僅增加使用者的學習成本,同時降低了設備的便攜性。而WiFi作為全球應用最為廣泛的WLAN通信技術,其具有功耗較低,組網成本低廉等優點,適合在智能家居系統中使用[2]。
本文設計了如圖1所示的基于WiFi的嵌入式智能控制系統,嵌入式智能控制系統服務端通過WiFi技術和TCP/IP協議將系統資源接入到局域網,用戶可以通過Android智能手機連上局域網,從而實現對家居設備的控制。
該系統集實時控制、文件傳輸和多媒體于一身,能夠實現對設備的實時控制、對室內溫濕度數據的采集和處理、對音頻播放的控制并支持音頻文件從客戶端上傳到服務端,同時擁有良好的擴展性和穩定性。

圖1 嵌入式智能控制系統
嵌入式智能控制系統由基于Android平臺的控制終端APP、承擔信息處理的STM32F103ZET6芯片、WiFi通信模塊、設備和傳感器以及起輔助作用的SD卡模塊和OLED顯示模塊組成[3-4]。系統中各個模塊構成及其功能分別進行介紹。
中央處理單元是嵌入式智能控制系統的信息處理、設備控制以及數據采集的中心。負責處理來自傳感器采集的數據,并對其進行加工,然后反饋到Android控制終端,而對于一些緊急事件,處理中心會觸發蜂鳴器以達到提醒用戶的作用;其次,中央處理單元響應來自Android控制終端請求,例如對LED的開斷;此外中央處理單元在系統出現異常時重新復位系統,并記錄異常到SD卡。
WiFi通信模塊在中央處理單元的配置下有STA和AP兩種工作模式,建立兩種Android客戶端接入方式。WiFi通信模塊是服務端和客戶端的通信橋梁,負責完成WiFi信號同電信號的相互轉換,以及實現服務端同客戶端的連接。
SD卡模塊作為嵌入式智能控制系統的數據存儲設備,支持中央處理單元的讀寫操作,在本文SD卡也是家庭云盤的抽象,存儲一些個人重要信息等(例如播放SD卡內的音頻文件、存儲Android控制終端上傳的音頻文件顯示系統異常信息)。OLED顯示模塊負責時鐘和一些重要信息的顯示。
溫濕度傳感器負責實時采集室內的溫度和濕度,通過單總線采集的數據傳輸到數據處理中心。LED作為室內燈具的抽象,以此來替代燈具,在本文中它作為控制對象存在。繼電器作為室內開關器件的抽象,通過控制它來替代對室內具有開關特性設備的控制。音頻播放模塊則用于對音頻文件的播放。
嵌入式智能控制系統服務端的硬件部分由中央處理單元、WiFi通信模塊、SD卡模塊、OLED顯示模塊、音頻播放模塊,以及其它控制設備和傳感器組成[5]。圖2為嵌入式智能控制系統服務端硬件結構框圖。

圖2 嵌入式智能控制系統硬件結構圖
服務端應用程序的實現依賴μC/OS Ⅲ實時操作系統的多線程技術和文件系統,考慮到串口通信不定時地接收到客戶端的信息,音頻播放模塊能夠一直播放音頻,同時傳感器一直向中央處理器發送溫濕度信息,本文對應用程序做如下設計:
① 使用串口中斷完成對客戶端信息的監控。
② 實現3個線程,數據解析線程主要完成串口中斷發來的一幀數據的解析,以及一些不占用CPU資源的任務;音頻播放線程主要完成音頻文件的播放控制;OLED顯示線程主要完成時間的顯示以及一些重要操作的顯示。
③ 使用μC/OS III的消息隊列完成線程間的通信。
④ 使用FATFS文件系統,簡化對SD卡讀寫的操作。整體軟件結構如圖3所示。

圖3 服務端程序結構模型
嵌入式智能控制系統的客戶端是一款基于Android平臺的操作簡潔、可視化軟件。嵌入式智能控制系統啟動后,Android控制終端能夠自動感知同一網絡內的嵌入式智能控制系統,并能夠自動連接[6-7]。用戶可以通過Android控制終端查看連接到智能控制系統上的設備以及傳感器等狀態信息。Android控制終端還具有溫濕度自動更新功能,不需要用戶繁瑣地進行狀態查詢操作。此外,Android控制終端支持對系統所存儲音樂的播放,也可以根據自己的需求將Android手機內的音樂等文件上傳到嵌入式控制系統所管理的SD卡。在設備連接方面,嵌入式智能控制系統支持多用戶同時連接并發出請求等功能。圖4為客戶端設備管理界面。

圖4 設備管理界面
圖5為嵌入式智能控制系統客戶端的程序結構圖,本系統由用戶界面和后臺處理模塊兩部分組成。用戶界面負責完成人機交互工作;后臺處理模塊包括用戶界面交互接口、數據解析和分發模塊、數據封裝處理模塊、連接控制模塊、消息接收模塊、消息發送模塊、WiFi通信模塊、嵌入式智能控制系統掃描模塊[8]。
在嵌入式智能控制系統中,Android控制終端需要完成和中央處理單元之間的數據傳輸,由于連接到STM32的設備和傳感器種類眾多,通信時傳輸的數據也不盡相同,因此設計一種傳輸協議用于解決嵌入式智能控制系統內客戶端與服務端之間的通信問題是十分必要的[9]。基于以上目的,本節設計了一種系統傳輸協議,如表1所列。

圖5 嵌入式智能控制系統客戶端程序結構圖

幀頭數據類型數據長度數據擴展位校驗位0xFE1byte2byte0~65536byte1byte1byte
傳輸協議中各字段的含義如下:
① 幀頭:用以標識一幀數據開始,其內容為0xFE。當接收方收到一幀數據時,首先對數據幀頭進行判斷,以確定數據的合法性。
② 數據類型:標識一幀數據的類型。
③ 數據長度:表示一幀數據中數據的字節數。
④ 數據位:表示一幀數據中的數據內容,例如控制命令、響應消息等。
⑤ 擴展位:在控制方面,該擴展位用于對數據類型位補充,在數據傳輸方面,該擴展位用來標識當前數據幀的ID。
⑥ 校驗位:存儲一幀數據的CRC-8校驗值,用于接收方進行數據校驗,提高數據的準確性。
