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