朱向慶,鄧浩欣,李嘉寶,朱萬鴻,何昌毅,鐘創平
(嘉應學院電子信息工程學院,廣東梅州514015)
智能家居系統集電子信息、自動控制、計算機、通信技術等于一體,與傳統家居相比,它能從各方面提高人們的生活質量[1-2]。家居核心設備智能化,終端配套技術的不斷成熟和品牌化,物聯網、移動互聯網技術的飛速發展,特別是以人為本的健康電子興起,進一步促進智能家居的發展。在功能設定方面,智能家居從以往簡單的近程安防監控,逐漸過渡到遠程監控與自動控制,并往智能化方向發展[3]。
目前,我國市場上有很多功能各異的智能家居產品,但是不少產品在追求功能強大的同時,造成價格高企,不利于推廣應用。為此,設計一套高性價比,集空氣質量、溫度、氣壓和光強檢測,家居設備自動控制,遠程Android應用程序與手機短消息監控等功能于一體的智能家居系統。
本系統硬件結構如圖1所示,它以STM32F407ZGT6微控制器為核心,包含EEPROM存儲器、SRAM存儲器、Flash存儲器、煙霧及可燃氣體(液化氣、甲烷、酒精等)傳感器、有害氣體(氨、硫化物、苯等)傳感器、光敏電阻、PM2.5粉塵傳感器、數字溫度傳感器、氣壓傳感器、Wi-Fi無線模塊、GSM模塊、4.3寸TFT電容觸摸屏、步進電機、直流電機、繼電器、蜂鳴器、LED燈及數碼管等。
STM32F407ZGT6是意法半導體公司(ST公司)推出的一款以ARM Cortex-M4為內核的32位微控制器[4],擁有 210DMIPS,高達1MB Flash ROM,192kB SRAM,4kB備用RAM,17個TIM(定時器),3個12位ADC,2個12位DAC,以及15個通信接口(3個I2C,4個USART/UART,3個SPI,2個I2S,2個CAN及1個SDIO),多達140個具有中斷功能的I/O端口,可滿足系統要求。

圖1 硬件系統框架
因為STM32單片機要運行μC/OS-III操作系統,存儲圖片數據,所以必須擴展系統的Flash ROM、RAM等存儲器。通過SPI接口連接華邦(Winbond)公司生產的W25Q128,可擴展16 MB的Flash ROM。
STM32單片機使用FSMC(Flexible Static Memory Controller,可變靜態存儲控制器)I/O口連接SRAM芯片IS62WV51216,該芯片由ISSI公司生產,容量為512 K字。
為了擴展EEPROM,STM32單片機使用I2C總線連接AT24C256。該芯片由Atmel公司生產,容量為32 kB,其特點是可在線電擦寫,掉電后數據不丟失。
煙霧及可燃氣體傳感器MQ2和有害氣體檢測模塊MQ135輸出的模擬電壓傳輸至STM32單片機的ADC引腳,單片機將采集到的模擬電壓轉換成數字量,再進行相應處理,達到對煙霧、可燃氣體和有害氣體的檢測。
系統使用兩個Sharp公司生產的GP2Y1051AU型二代傳感器分別檢測室內外PM2.5。PM2.5檢測模塊采用標準的串口通信,其TXD引腳連接STM32的RXD引腳,單片機通過公式轉換,得到相應的室內外PM2.5濃度值。
光敏電阻MG5528與固定電阻的串聯分壓值送到STM32單片機的ADC引腳,單片機根據讀取的ADC值即可計算出周圍環境的光照度,進而采用脈沖寬度調制(PWM),改變PWM輸出的占空比,通過ULN2803自動調節燈光的亮度。
單片機與DS18B20數字溫度傳感器通過單總線(1-Wire)通信,實現對環境溫度的檢測[5]。
同時,單片機通過I2C通信協議與BMP180氣壓溫度模塊進行通信,達到對氣壓和溫度的檢測[6]。
為了完成與遠程云服務器、手機的通信,單片機通過串口連接Wi-Fi模塊ESP8266和GSM模塊SIM900A。Wi-Fi模塊內置樂鑫信息科技公司的ESP8266EX芯片[7,8],它內含一個完整且自成體系的Wi-Fi網絡解決方案,能夠獨立運行,也可作為從機搭載于其他主機運行。
GSM模塊SIM900A用于給遠程手機發送短消息,它是一款尺寸緊湊的GSM/GPRS模塊,采用SMT封裝,基于STE(意法愛立信)的單芯片案,使用ARM926EJ-S架構,性能強大,可以低功耗實現語音、SMS、數據和傳真信息的收發[9-10]。
系統使用ALIENTEK公司推出的4.3寸TFT電容觸摸屏實現人機交互,該觸摸屏有FSMC和SPI兩種接口。FSMC總線連接液晶控制器ILI9341,以輸出圖像;SPI總線銜接觸摸屏控制器TCS2046,以達到觸摸輸入數據。
STM32單片機使用I/O口連接2個復合管驅動器ULN2803,它可驅動步進電機、直流電機、繼電器、LED燈和蜂鳴器,電機和繼電器用于開關窗戶、抽風機、空氣凈化器或其他家電設備。
STM32單片機使用I/O口連接7段數碼管譯碼器74LS48,用于驅動共陰數碼管,顯示空調預設溫度。
為了移植方便,以及提高開發速度,STM32單片機運行固件由C語言編寫,運行μC/OS-III操作系統,使用Keil uVision5軟件編譯,通過J-LINK Utility軟件將生成的機器碼文件燒錄到單片機。智能手機APP使用Java語言設計,并通過eclipse軟件編譯生成可安裝的APK文件。
μC/OS-III是一個基于ROM運行、可裁剪、搶占式、實時多任務內核,具有高度可移植性,具有μC/OS-II不支持的時間片輪轉法[11-12],特別適合于32位微處理器和控制器。μC/OS-III系統初始化后,建立圖2所示五個任務。程序開始運行后,初始化外設與各功能模塊,初始化μC/OS-III,然后創建任務1,開啟多任務環境。
2.1.1 任務1程序設計
任務1首先開啟RTC(Real-Time Clock,實時時鐘),初始化emWin圖形庫,接著創建信號量與任務2~5,最后掛起,不再執行。

圖2 μC/OS-III系統各任務流程
2.1.2 任務2程序設計
任務2負責設置和更新emWin顯示,執行完畢后掛起15 ms。emWin圖形界面包括主界面、設置界面、Wi-Fi掃描界面、Wi-Fi連接界面和服務器界面。
主界面顯示家居系統的整體運行狀況,設置界面用于配置各家電工作參數、傳感器報警門限等。
Wi-Fi掃描界面用于發現周圍Wi-Fi,掃描完成進入Wi-Fi連接界面,輸入密碼后可連接至遠程云服務器。
服務器界面用于輸入遠程云服務器的IP地址和端口,修改完成會將設置保存在EEPROM內。
2.1.3 任務3程序設計
任務3負責觸摸屏和數碼管顯示。首先用觸摸屏顯示emWin設置好的界面;接著對數碼管進行動態掃描,并控制其顯示空調設定溫度;最后任務掛起15 ms。
2.1.4 任務4程序設計
任務4負責檢測各傳感器。在程序開始時對ADC、串口等外設進行初始化,進入μC/OS-III系統后,按圖3所示流程,依次對煙霧與可燃氣體濃度、有害氣體濃度、室內外PM2.5濃度、氣壓、光照度及溫度進行檢測。當室內PM2.5、MQ2和MQ135檢測到的數據超標時,啟動蜂鳴器報警。如果檢測結果有異常,再根據其數值控制窗戶、抽風機、空氣凈化器等設備,以改善家居環境;最后任務掛起500 ms。
2.1.5 任務5程序設計
任務5負責與Wi-Fi模塊和GSM模塊交換數據。進入μC/OS-III系統后,若Wi-Fi模塊已正確連接以太網,系統執行圖4所示Wi-Fi信息發送程序,將采集到的數據和當前家居設備的狀態發送至遠程云服務器。當遠程Android應用程序要控制家居時,也通過云服務器轉發數據給Wi-Fi模塊,由其傳輸給單片機。
當出現緊急情況,需要報警時,則依據圖5所示流程,通過GSM模塊發送短消息至用戶手機,及時提醒使用者。STM32單片機都是通過AT命令控制Wi-Fi模塊和GSM模塊,進行數據收發。

圖4 ESP8266遠程信息發送程序流程

圖5 GSM模塊發送報警短消息程序流程
遠程監控工作框架如圖6所示,遠程服務器采用騰訊公司的騰訊云云服務器(Cloud Virtual Machine,CVM),它提供可擴展的計算容量,且擁有公網唯一IP,理論上在任何地方只要能連接因特網,即可與其進行通信。通過騰訊云CVM,可以在短時間內快速啟動任意數量的云服務器,即時部署應用程序,并支持使用者自定義的一切資源,如CPU、內存、硬盤、網絡和安全等[13]。騰訊云CVM使用Linux Ubuntu系統,利用Socket和雙進程分別完成對8001和9999端口的監聽,其中8001為智能手機連接端口,9999為家居系統連接端口。

圖6 遠程監控工作框架
智能手機Android應用程序開發環境包括JDK(Java Development Kit,Java開發工具包)、Android SDK(Software Development Kit,軟件開發包)、Eclipse和 ADT(Android Development Tools)插件。在安裝Android開發環境時,首先須要安裝支持Java程序開發和運行的JDK,還需要有 JRE(Java Runtime Environment,Java運行環境)的支持;Android SDK是Android開發工具包,它提供Android相關的API;Eclipse是IBM公司開發的一種基于Java語言編寫,開放源代碼,可擴展的集成開發工具;ADT是Google專門為Eclipse開發的一個插件,用來輔助開發[14-20]。
打開應用程序后會自動使用Socket連接遠程服務器,監聽遠程服務器發送的信息,解析并顯示于屏幕。圖7(a)為手機上的Android應用程序主界面,用于顯示家居系統整體工作狀態;進入圖7(b)所示設置頁面后,可修改各家居系統工作參數,點擊保存會將所有參數以指令形式發送給云服務器。云服務器進程接收到指令后,將指令發送至管道,另一進程接收管道內容并將數據發送至家居系統,完成數據的交互。

圖7 Android端應用程序
研究過程中,采用先模型驗證,后實物制作的方法。圖8為系統硬件模型,它采用KT紙板做外觀材料,電路固定于模型底部,各傳感器和電器露出于模型外,以便觀察。
實驗證明,系統能夠正常檢測并自動調節家居環境溫度、光照度、空氣質量等,使用者可通過智能手機遠程監控家居狀況;有異常時,家居系統也會發送手機短消息以告知使用者。

圖8 系統硬件模型
研究表明,通過糅合現有的傳感檢測技術、自動控制技術等,借助現有的GSM網絡、互聯網和云服務器,結合Wi-Fi短距離無線通信,操作者可通過Android智能手機遠程對家居環境狀況進行實時監控。實驗證明系統性能良好,實時性高,安全可靠,成本低廉,其包含的核心技術經過企業消化后,能直接投入市場,可望產生積極的社會效應和社會效益,推動現代化智能家居的發展。