陳 欣,阮錦新,鄔依林,張 謙,陳勇昌,熊 燕
(廣東第二師范學院計算機學院,廣州 510303)
快速發展的信息技術革命正在推動著不同行業的變革,尤其是以物聯網為代表的技術正快速滲透到工業生產和產品生命周期中,促進了工業智能化和數字化[1]。物聯網本質上就是讓各種物品相互連接形成一個龐大的網絡,通過傳感器與互聯網提供通信,最終實現萬物互聯[2-3]。智能家居是物聯網的典型應用,通過使用多種傳感器對家居環境數據進行采集,并根據這些數據對家居設備做出相應的定制化控制,在這個過程中用戶完全不需要對家居設備進行干預,而且智能家居系統通常具有24 小時不間斷工作的優點[4]。
普通的家居設備之所以可以變得人性化和智能化,是因為其背后依靠強大的物聯網進行通信和數據交換。傳感器就像計算機的眼睛,不僅可以有效檢測出相應的信息,同時還能夠將檢測到的信息以其他信號形式對外輸出,這就意味著傳感器可以幫助我們準確、快速地獲得信息,甚至有些傳感器的靈敏程度遠超人的感官[5]。為了讓智能家居系統更具定制化和智能化,可通過使用多種傳感器以及后端智能控制策略,讓家居設備信息上傳到云端,實現基于云端的家居設備智能控制[6]。本文針對用戶對家居設備智能控制的需求,選用STC89C52 單片機作為硬件主控,采用SpringBoot 后端框架開發云端,設計出貼近生活的智能家居系統。系統利用弱電控強電,具有高度靈活的設備綁定功能,可以讓傳感器作用于任意預留的設備控制端口并實現對相應家居設備的控制,傳感器采集的數據還可以實時上傳云端并進行可視化展示。
智能家居系統設計包括硬件選型、硬件電路設計以及軟件設計。硬件選型是根據應用場景的實際需求選擇相應的主控芯片、傳感器和通信模塊。硬件電路設計是對這些模塊進行引腳定義和連接,使其構成一個完整的電路系統。軟件設計包括單片機控制系統設計和云端系統設計。
主控芯片采用通用性高、性能穩定、價格低廉的STC89C52單片機[7-9],同時選用溫濕度傳感器、光敏傳感器、人體紅外射頻傳感器、超聲波傳感器,選用無線通信模塊實現單片機之間的通信。主要使用的器件如表1所示。

表1 主要使用的器件
硬件電路設計基于單片機最小系統板,通過傳感器、繼電器模塊以及家居設備的連接,組成完整的電路控制系統。控制系統的核心控制部件為STC89C52 系列單片機,通過使用最小系統板引出單片機的所有引腳,最小系統板的電路原理如圖1所示。

圖1 最小系統板原理
溫濕度傳感器模塊、人體紅外感應模塊及可調光敏模塊均為三引腳,其中兩個為正負極,一個為數據端,數據端分別連接在單片機的P2.0、P2.4、P2.6 引腳。超聲波傳感器模塊共四個引腳,控制引腳分別為Trig 觸發引腳和Echo回響引腳,分別接在單片機的P2.1和P2.2引腳。通過對單片機電源模塊的正負極進行拓展,將這些傳感器模塊的正負極接入到單片機的正負極中,實現模塊供電。無線通信模塊為八引腳,供電電壓為3.3V,因此需要額外的供電電路進行供電,剩余的六個引腳為IQR、MIS、MSO、SCK、CS、RST,分別接在單片機的P3.2、P3.3、P3.4、P3.5、P3.6、P3.7 引腳。上述所有模塊的接線原理如圖2所示。

圖2 傳感器接線原理
使用了6個光耦繼電器模塊實現弱電控制強電,這些模塊的信號腳接在單片機的P1.2~P1.7引腳,繼電器模塊組接線原理如圖3所示。

圖3 繼電器模塊接線原理
單片機控制系統主要實現傳感器數據采集、指令識別以及端口控制和控制反饋。云端系統實現人機交互,為用戶提供可視化的家居設備控制功能,同時將單片機采集到的數據入庫并進行數據展示。
1.3.1 單片機控制系統設計
單片機控制系統設計包括時鐘程序、端口控制程序、單總線通信、無線通信和串口通信等程序設計。
(1)時鐘程序設計。單片機的時鐘通過設置定時器T0 溢出值來觸發CPU 中斷,利用中斷進行延時計數并以此劃分出一條時間軸作為單片機運行的基準時間,其余的程序都會在這個設計好的“節拍”中有序運行。
(2)端口控制程序設計。根據用戶的設定或控制改變單片機引腳的輸出電平,所有對電平的控制都是通過這個程序進行,任何操作最終都將轉換為“端口號+控制碼”的形式進行相應的位運算并做出最終的電平控制操作。
(3)單總線通信設計。溫濕度傳感器、人體紅外傳感器均采用這種通信模式,分別使用一根數據線完成數據的交換和控制,通過系統時間軸有序觸發單次數據讀取操作。溫濕度模塊讀取流程和超聲波距離傳感器測量距離流程分別如圖4、圖5所示。

圖4 溫濕度模塊讀取數據流程

圖5 超聲波距離傳感器測量距離流程
(4)無線通信程序設計。在通信上采用“單片機指令分發器+單片機設備控制器”的架構,單片機指令分發器對控制指令進行中轉,真正實現控制的是單片機設備控制器,而兩個單片機之間則是采用NRF24L01無線模塊進行數據傳輸。無線模塊在收到數據后改變狀態寄存器的電平,單片機通過輪詢檢測寄存器狀態變化后調用無線通訊解析函數,對收到的消息進行格式化、解析和重新封裝等處理。
(5)串口通信程序設計。單片機服務器與TCP 服務器通過串口通信方式進行數據傳輸,設置定時器1 產生19200 的波特率用于通信,后端服務將用戶在云端的操作指令通過TCP 客戶端發送給TCP 服務端,TCP 服務端以串口通信方式將指令傳送給單片機服務器,進而轉發給控制器實現控制。
1.3.2 云端系統設計
云端系統設計包括TCP 服務、JavaWeb 服務端程序以及數據庫等設計。
(1)TCP 服務。采用Python 開發TCP 服務端,TCP 服務端以串口通信方式連接單片機服務器,并定時發送溫濕度查詢指令及傳感器狀態查詢指令獲取返回數據,數據經過處理后進行入庫操作,用戶對家居設備的控制也通過這程序進行轉發。
(2)JavaWeb 服務。采用目前主流的Spring-Boot 框架[10]搭建交互式的用戶訪問平臺,平臺具有設備映射、設備控制、控制策略設置等功能,支持用戶在平臺上對端口進行綁定和控制,同時還可查看傳感器相關的可視化數據。其中,設備控制的核心是在SpringBoot 中注入一個TCP客戶端對象,用戶的控制指令通過TCP 客戶端發送給TCP服務端并進行后續的控制和反饋。
(3)數據庫設計。數據庫設計包括端口映射表、端口狀態日志表、傳感器采集日志表、溫濕度采集日志表、自動控制策略智能硬件表和自動控制策略服務下發表的設計。其中,最為核心的是端口映射表,記錄了設備與端口的綁定信息,也是遠程控制的關鍵。傳感器數據的更新是通過TCP 服務定時向控制器發出查詢請求來獲得數據并按照時間順序入庫,這些數據可用于前端展示,并且用戶可根據這些數據對家居設備進行準確可靠的控制。
本文設計的智能家居解決方案可以提供6個控制端口給用戶接入家居設備,為了驗證方案的可行性,對智能房間進行模擬。
智能房間有臥室、陽臺和衛生間。在房間內,配置4 個照明設備以及1 個加濕器和1 個換氣裝置。其中照明設備分別安裝在臥室、臥室書柜、衛生間和陽臺,加濕器安裝在臥室,換氣裝置安裝在衛生間,具體的家居設備布局如圖6所示。

圖6 家居設備布局圖
智能房間安裝了溫濕度傳感器、人體紅外感應器、超聲波距離傳感器、可調光敏模塊,分別安裝在臥室、臥室衣柜、衛生間和陽臺,傳感器功能與布局如圖7所示。

圖7 房間傳感器規劃圖
硬件規劃完成后,需要在云端進行設備映射綁定,登錄到系統后通過設備映射功能,錄入對應的設備到系統中即可完成綁定,新增綁定設備如圖8所示,所有家居設備綁定完成之后的設備列表如圖9所示。

圖8 新增綁定設備

圖9 所有家居設備綁定后的設備列表
在“智能房間”場景中,人體紅外感應模塊用來控制衛生間的照明設備,當有人經過時,照明設備會自動打開。當一段時間沒有感應到人經過時,照明設備會自動關閉,這些功能可在系統上進行設置。對于陽臺的照明設備,則是利用可調光敏感應器控制,亮度低于一定值的時候會自動打開陽臺照明設備。溫濕度感應器則是用來收集房間的溫濕度信息并在系統中展示,用戶也可通過系統,利用溫濕度傳感器的數據來自動控制房間中的家居設備,例如控制加濕器、換氣裝置等。
家居設備接入系統需要通過繼電器模塊。下面是照明設備接入系統的過程:首先繼電器模塊電源接入+5V,接著將單片機控制信號線接入到繼電器的信號接收端IN,同時在繼電器上將跳線帽接入到低電平觸發引腳,最后按照圖10接線圖將照明設備接入。

圖10 繼電器模塊用電器接線圖
系統測試包括硬件測試、軟件測試和功能測試。
硬件測試包括單片機外圍電路連接檢查,單片機復位后控制端口輸出電平以及溫濕度傳感器等模塊的采集情況。復位后采集的溫濕度可以正常顯示在LCD 屏幕上,同時控制口輸出電平為高電平,P1.2~P1.7 的板載LED 燈熄滅,測試結果如圖11所示。

圖11 單片機復位
軟件測試包括單片機控制系統測試和云端系統測試。
單片機控制系統實現收集數據、接收指令、控制端口和控制反饋,因此最關鍵是查看串口反饋的數據是否符合預期。在單片機控制系統測試中,將程序寫入單片機后,使用串口調試助手按照192000 的波特率連接單片機并發送相關指令,查看返回的數據,如果可以正常返回數據同時符合預期,則證明功能正常。在串口調試助手中向串口發送指令“{AD}”,對鏈路進行簡單測試,測試結果如圖12 所示,能正常接收到串口回傳的溫濕度數據,說明串口通信和單片機之間無線通信鏈路正常。

圖12 串口通信及單片機之間無線通信鏈路測試
在云端系統測試中,首先測試TCP 服務是否可以正常連接和通信,在TCP 客戶端測試程序中向TCP 服務端發送測試數據可以收到反饋,功能正常,測試結果如圖13 所示。接著對用戶交互界面進行功能測試,確保可以從數據庫中正常獲取到相應的數據,這里以首頁為例,溫濕度及傳感器狀態能正常獲取并顯示,測試結果如圖14所示。

圖13 TCP連接及通信

圖14 首頁溫濕度及其他傳感器狀態
下面以照明燈控制為例對系統的硬件和軟件進行整體測試。在照明燈關閉的狀態下,點擊開關,照明燈會被打開,同時云端頁面會收到打開的反饋提示,如圖15 和圖16 所示。再次點擊開關,照明燈會被關閉,同時頁面會收到關閉的反饋提示,如圖17和圖18所示。

圖15 打開照明燈實物圖

圖16 打開照明燈系統反饋

圖17 關閉照明燈實物圖

圖18 關閉照明燈系統反饋
在自動控制策略測試中,以智能控制衛生間照明燈為例進行測試。首先將可調亮度模塊綁定到衛生間照明燈上,同時設置臨界控制及邊緣值,具體配置如圖19所示。

圖19 智能亮度傳感器配置
配置完成后,打開使能開關,對環境亮度進行調節,分別模擬白天和黑夜,測試效果如圖20、圖21所示。

圖20 模擬白天(照明燈熄滅)

圖21 模擬黑夜(照明燈自動點亮)
隨著物聯網技術的不斷發展,智能家居技術給我們生活帶來越來越多的便利。本文提出的智能家居方案通過將單片機與JavaWeb 云端進行有機結合,具有操作便捷、數據直觀等特點,為用戶提供了在線和離線兩種控制方式,用戶可通過云端系統自定義規則實現靈活的家居設備自動控制,大大提升了智能家居的使用體驗。