,,
(中國礦業(yè)大學(xué) 信息與控制工程學(xué)院,徐州 221116)
智能家居即(Smart Home),也被稱為智能化住宅、感知住宅等[1],是現(xiàn)代電子技術(shù)、自動化技術(shù)、嵌入式系統(tǒng)及通信技術(shù)相結(jié)合的產(chǎn)物。
目前,智能家居控制系統(tǒng)面臨著諸多問題:首先是價格昂貴,維護成本高[2],不利于產(chǎn)品的普及和推廣;其次行業(yè)無統(tǒng)一標(biāo)準(zhǔn)[2],各個廠商提供的解決方案質(zhì)量參差不齊,兼容性差;再次裝置靈活性不高,安裝拆卸以及維護困難,無法做到循環(huán)多次使用;此外,實時性不高,無法全方位穩(wěn)定地實現(xiàn)一定區(qū)域內(nèi)對家電和環(huán)境的監(jiān)測。本文針對以上問題,提出了一套完整的解決方案。
LPCXpresso板由恩智浦、Code Red Technologies、Embedded Artists共同研制[3],其中LPCXpresso54608器件性能優(yōu)越,板載CMSIS-DAP/SEGGER J-Link,兼容MCUXpresso IDE和其他通用的工具鏈(如Keil和IAR),除了標(biāo)準(zhǔn)的LPCXpresso V3功能外,該板適用于一般工業(yè)控制、智能家居系統(tǒng)等多種環(huán)境[4],還提供了一整套外設(shè)接口:
① 272×480彩色液晶電容觸摸屏;
② UART和SPI端口;
③ 多種擴展選項,包括Arduino UNO和PMod;
④ 128 Mb Micron MT25QL128 Quad-SPI閃存;
⑤ 16 MB MT48LC8M16A2B4 SDRAM;
⑥ 數(shù)字麥克風(fēng)接口;
⑦ 全尺寸SD/MMC卡插槽;
⑧ 集成了板載10/100 Mbps以太網(wǎng)MAC。
TouchGFX是一個用C ++編寫的軟件框架,可以在低功耗硬件上開發(fā)嵌入式圖形用戶界面(Graphic User Interface, GUI)應(yīng)用程序。 TouchGFX嵌入式GUI技術(shù)優(yōu)化了小型硬件平臺(如ARM Cortex-M微控制器的利用率,能夠在更少的MCU負載下實現(xiàn)更快速的圖像更新[5]。
TouchGFX應(yīng)用程序遵循分層模型,如圖1所示,一個TouchGFX應(yīng)用構(gòu)建于TouchGFX Core層和OSAL/HAL層的預(yù)構(gòu)建庫或源代碼之上。最頂層的Application層由開發(fā)人員來開發(fā)。HAL層用于特定目標(biāo)板的移植,其中包括用于特定微控制器、DMA、觸摸屏設(shè)備的標(biāo)準(zhǔn)驅(qū)動程序以及可用于多種評估板的板級支持包。此外,TouchGFX框架還為目標(biāo)板提供OSAL層,以支持特定嵌入式實時操作系統(tǒng)。
圖1 TouchGFX結(jié)構(gòu)圖
TouchGFX應(yīng)用構(gòu)建在嵌入式實時操作系統(tǒng)之上,采用嵌入式實時操作系統(tǒng)(RTOS)可以更合理、更有效地利用CPU的資源,簡化應(yīng)用軟件的設(shè)計,縮短系統(tǒng)開發(fā)時間,更好地保證系統(tǒng)的實時性和可靠性[5]。
在一個TouchGFX應(yīng)用中,至少要求一個線程用于GUI的渲染和刷新,兩個信號量用于控制對框架中心的資源的訪問。TouchGFX可以通過實現(xiàn)oswrapper類來運行幾乎所有的主流操作系統(tǒng)[5],其中FreeRTOS是實時操作系統(tǒng)內(nèi)核,具有以下特點:
① 簡單而功能強大,內(nèi)核只有3個.c文件,提供功能包括任務(wù)管理、時間管理、信號量、消息隊列、內(nèi)存管理,可基本滿足較小系統(tǒng)的需要[6]。
② 完全免費,源碼公開、可移植、可裁減、調(diào)度策略靈活。
③ 大量開發(fā)者使用,并保持高速增長趨勢。
④ 文檔齊全,F(xiàn)reeRTOS的創(chuàng)始人RichardBarry編寫了大量的移植代碼和配套文檔[7]。
系統(tǒng)的輸入信號主要有以下幾種:
① 溫濕度信號:溫度形式有多種,最常見為氣溫、水溫以及體表溫度;濕度信號通常為空氣相對濕度。
② 聲音信號:主要來源于人和其他動物,此外還有環(huán)境中的各種聲音。
③ 紅外信號:主要來源于人和其他動物,可以作為區(qū)分人和動物跟外界的標(biāo)志信號,也可以作為通信和控制信號。
④ 化學(xué)信號:如可燃氣體,可用于預(yù)判和監(jiān)測室外內(nèi)火情的標(biāo)志信號。
⑤ 震動信號:用于監(jiān)測一定范圍內(nèi)的環(huán)境震動,可用于輔助判斷外來侵入者。
⑥ 視覺(頻)信號:應(yīng)用較為廣泛,可用于監(jiān)控室內(nèi)外的畫面情況,但較為昂貴。
⑦ 觸覺(點擊)信號:系統(tǒng)提供圖形用戶接口進行人機交互,接收來自用戶的點擊。
輸入到系統(tǒng)中的模擬信號經(jīng)過A/D轉(zhuǎn)換,和其他數(shù)字信號輸入到控制系統(tǒng)中,經(jīng)過MCU執(zhí)行相應(yīng)調(diào)度程序和算法,再提供對應(yīng)的輸出信號,使得智能家居做出相應(yīng)的動作,其中輸出接口主要有以下幾種:
① PWM接口:控制電機/舵機的正反向轉(zhuǎn)動,根據(jù)PWM驅(qū)動極性之不同,所用的PWM接口數(shù)不同。
② 通信接口:UART/I2C用于程序下載調(diào)試以及接口端口數(shù)據(jù)值讀取。
③ I/O接口:多路,用于功能執(zhí)行和狀態(tài)顯示等。
④ 定時器接口:用于測量外界有關(guān)信號脈沖讀取。
根據(jù)系統(tǒng)輸入輸出信號及系統(tǒng)原理,設(shè)計出系統(tǒng)總體框圖如圖2所示。
圖2 系統(tǒng)總體框圖
根據(jù)系統(tǒng)功能設(shè)計的電路主要包括燈光/彩燈控制WS2812BS、門窗控制、電機驅(qū)動、防盜模式、防火模式、節(jié)能模式等。防盜模式通過震動傳感器實現(xiàn),防火模式通過DHT11與MQ-2共同實現(xiàn),節(jié)能模式通過HCSR501實現(xiàn)。
由于系統(tǒng)頂層GUI采用TouchGFX框架,采用C++寫成;而底層LPCXpresso54608采用C語言寫成,為了使得系統(tǒng)上下層銜接得當(dāng),采取分層架構(gòu)來實現(xiàn)系統(tǒng)的低耦合和高內(nèi)聚。
實現(xiàn)示意圖如圖3所示,系統(tǒng)軟件總體采用一種典型的模型-視圖分離設(shè)計模式,稱之為MVP架構(gòu)。其中,M代表Model,為模型(層);V代表View,為視圖(層);P代表Presenter,為控制(層)。對于每個采用本架構(gòu)的應(yīng)用來說,其中只有一個Model,但是有很多對View和Presenter,其中每一對View和Presenter對應(yīng)一個屏幕。
圖3 實現(xiàn)示意圖
Model(模型層)負責(zé)處理整個應(yīng)用UI的狀態(tài),并且還需要和系統(tǒng)的其余部分(后端)通信,以獲取UI層從后端所獲取的信息。在這種應(yīng)用場景下,Model相當(dāng)于是整個系統(tǒng)的入口,當(dāng)Model發(fā)生改變時,當(dāng)前的Presenter會接收到Model改變的消息,這個過程是通過應(yīng)用中的ModelListener即模型監(jiān)聽器來完成的。
View(視圖層)負責(zé)放置和重繪UI層的圖形元素。View能夠獲取用戶事件,比如說點擊事件,并且根據(jù)時間作出反應(yīng),通常來講是將事件轉(zhuǎn)移給本視圖的Presenter。當(dāng)Presenter要求View做出改變時,View還能響應(yīng)來自Presenter的應(yīng)答。
Presenter(控制層)負責(zé)編排模型和視圖,處理與UI元素相關(guān)的邏輯。一是在模型中發(fā)生更改時,通知Presenter,Presenter采取相應(yīng)的操作同步視圖; 二是在視圖中發(fā)生更改時,通知Presenter,Presenter采取相應(yīng)措施來同步模型。
但是要實現(xiàn)實際功能,需要和底層硬件進行銜接。Model層提供了和底層硬件銜接的接口。特定的目標(biāo)板如LPCXpresso54608使用C語言,可獨立實現(xiàn)特定的功能,比如傳感器數(shù)據(jù)的采集,此時只要在Model中實現(xiàn)特定的函數(shù)接口,便可在FreeRTOS中注冊和創(chuàng)建任務(wù)設(shè)置優(yōu)先級等流程,即可實現(xiàn)前后端的銜接。下載特定的板級支持包,配置、編譯等一系列操作之后,即可將程序下載至特定的目標(biāo)板上運行,從而達到系統(tǒng)預(yù)定功能。系統(tǒng)軟件設(shè)計模式和總體架構(gòu)圖如圖4所示。
圖4 系統(tǒng)軟件設(shè)計模式和總體架構(gòu)圖
系統(tǒng)軟件的主要功能包括:
① 人手點擊觸屏LCD事件監(jiān)聽,觸摸屏控件回調(diào)函數(shù)處理。
② 從UI到底層:視圖層事件經(jīng)過控制層和模型層,映射為給予底層元器件信號和動作執(zhí)行。
③ 從底層到UI:底層元器件狀態(tài)改變,通過接口與模型層通信和控制層處理,來更新UI。
④ FreeRTOS根據(jù)任務(wù)優(yōu)先級來進行任務(wù)調(diào)度以及消息傳輸。
⑤ LPCXpresso54608和擴展板之間的接口通信。
⑥ 擴展板對各個傳感器信號的采集處理,對于上層指令執(zhí)行以及狀態(tài)回傳。
無論是從UI到底層,還是從底層到UI,在中間操作系統(tǒng)的支持和任務(wù)調(diào)度之下,整個系統(tǒng)構(gòu)成一個閉環(huán)模式,確保了各個模塊之間消息和事件的暢通,保證工作的實時有序。
國家統(tǒng)計局2016年統(tǒng)計數(shù)據(jù)表明,中國人均住房建筑面積為40.8平方米[8]。以一家三口的小康之家為例,40.8×3=122.4平方米,常見于當(dāng)前房市三室兩廳一衛(wèi)戶型,如圖5所示。以此構(gòu)建實物模型來模擬真實場景下的智能家居控制。
圖5 模型設(shè)計和制作
以此實物模型為基礎(chǔ),進行相關(guān)部件的安裝以及線路的布置。依據(jù)設(shè)計功能,設(shè)計用戶交互軟件(如圖6所示),實現(xiàn)了如圖3所示的功能。
圖6 系統(tǒng)軟件界面
經(jīng)過分析評估,本系統(tǒng)具有以下特色:基于32位ARM內(nèi)核,標(biāo)準(zhǔn)統(tǒng)一,功能專一,同時兼具擴展性,兼容性好;主控系統(tǒng)和擴展系統(tǒng),體積小巧,功能強大;成本低廉,超低功耗,真正做到價格可控,利于向大眾普及推廣;采用FreeRTOS,系統(tǒng)實時性高;系統(tǒng)接口豐富,靈活性高,安裝拆卸以及維護容易,便于二次開發(fā)和升級; 具有良好的系統(tǒng)交互功能,可帶給用戶友好的使用體驗。