陳鐵民
(中國移動通信集團(tuán)湖南有限公司永州分公司,湖南 永州 425000)
基于物聯(lián)網(wǎng)技術(shù)的智能家居采暖遠(yuǎn)程控制系統(tǒng)設(shè)計
陳鐵民
(中國移動通信集團(tuán)湖南有限公司永州分公司,湖南 永州 425000)
隨著物聯(lián)網(wǎng)技術(shù)的高度發(fā)展,智能家居在采暖領(lǐng)域煥發(fā)了新活力,壁掛爐因具有強(qiáng)大的集中供暖能力,能廣泛應(yīng)用在我國北方大面積采暖領(lǐng)域,但傳統(tǒng)壁掛爐的控制方式不具備網(wǎng)絡(luò)化功能,為了解決壁掛爐傳統(tǒng)控制方式的不足,提出基于物聯(lián)網(wǎng)技術(shù)的智能家居采暖遠(yuǎn)程控制系統(tǒng);該系統(tǒng)保留了原有壁掛爐顯示面板和控制面板的串口通訊方式,在中間增加一個基于OpenWrt路由器的數(shù)據(jù)采集模塊,在維持系統(tǒng)原有的通訊情況下,完成了壁掛爐的遠(yuǎn)程控制;經(jīng)實驗測試,搭載遠(yuǎn)程控制APP的移動終端能與網(wǎng)絡(luò)化改造后的壁掛爐正常通訊,并完成指定操作;同時,壁掛爐也充當(dāng)家庭網(wǎng)關(guān),自動組建家庭網(wǎng)絡(luò),以供其他移動設(shè)備連接;該系統(tǒng)使用戶擺脫了近距離操作壁掛爐溫度參數(shù)的限制,使壁掛爐的控制變得更智能、更便捷,也為壁掛爐的遠(yuǎn)程控制提供可參考的網(wǎng)絡(luò)化改造方案。
物聯(lián)網(wǎng)技術(shù);采暖;壁掛爐;遠(yuǎn)程控制;OpenWrt
隨著物聯(lián)網(wǎng)技術(shù)的高度發(fā)展,智能家居在信息時代煥發(fā)了新的活力。壁掛爐作為家用常見的供暖設(shè)備,在移動互聯(lián)的影響下得到發(fā)展。壁掛爐是具有強(qiáng)大集中供暖功能、能同一時間滿足多居室采暖需求的供暖設(shè)備,各個供暖位置能根據(jù)用戶設(shè)定而設(shè)置舒適的采暖溫度,并且能提供恒溫舒適的衛(wèi)浴用水,因此能廣泛應(yīng)用在日常家庭生活中[1-2]。加入物聯(lián)網(wǎng)技術(shù)后的壁掛爐,用戶通過移動終端下發(fā)指令,便能完成壁掛爐的遠(yuǎn)程開啟和關(guān)閉、溫度設(shè)定、模式控制等復(fù)雜功能[3]。
OpenWrt應(yīng)用是物聯(lián)網(wǎng)技術(shù)的一種體現(xiàn),它是基于高度模塊化、自動化的嵌入式Linux系統(tǒng),憑借強(qiáng)大的網(wǎng)絡(luò)組件和擴(kuò)展性,常常被用于工控設(shè)備、小型機(jī)器人、智能家居、智能路由器等場合[4-6]。
基于上述,結(jié)合OpenWrt的優(yōu)勢,提出基于物聯(lián)網(wǎng)技術(shù)的智能家居采暖遠(yuǎn)程控制系統(tǒng),在不改動壁掛爐原有線路布局基礎(chǔ)上,增加一個OpenWrt路由器,維持原有數(shù)據(jù)交互的同時完成了壁掛爐的遠(yuǎn)程控制操作邏輯,以此完成壁掛爐的網(wǎng)絡(luò)化改造。
現(xiàn)有的壁掛爐主要由控制面板和顯示面板組成,如圖1(a)所示。用戶通過操作顯示面板上的按鍵,便可完成簡單控制指令的輸入,顯示面板收到用戶的控制指令后,通過串口與控制面板通訊,從而控制壁掛爐打火工作、打開水泵維持水路流暢等功能。為了方便廠家完成壁掛爐的網(wǎng)絡(luò)化改造,以減少原來壁掛爐顯示面板和控制面板的線路連接為原則,在顯示面板和控制面板中間增加一個OpenWrt路由器作為數(shù)據(jù)采集模塊[7-9]。一方面作為采集模塊,捕獲了顯示面板和控制面板之間的正常通訊,并維持了顯示面板和控制面板之間的數(shù)據(jù)交互;另一方面作為網(wǎng)絡(luò)模塊,通過wifi或者ETH組建基于移動終端的遠(yuǎn)程控制系統(tǒng),用戶可通過該系統(tǒng)向壁掛爐發(fā)起遠(yuǎn)程控制。網(wǎng)絡(luò)化改造后的方案如圖1(b)所示。
此外,數(shù)據(jù)采集模塊本身也是路由器,燒寫固件后擁有組建家庭網(wǎng)絡(luò)的能力,可以橋接到家庭的其他路由器上,擴(kuò)大無線wifi的覆蓋范圍,也可以作為網(wǎng)絡(luò)源組建家庭網(wǎng)絡(luò)。
圖1 壁掛爐網(wǎng)絡(luò)化改造方案
網(wǎng)絡(luò)化改造的壁掛爐遠(yuǎn)程控制系統(tǒng),核心部件是數(shù)據(jù)采集模塊,其難點有:1)網(wǎng)絡(luò)化的設(shè)計要求決定了普通嵌入式設(shè)備不能滿足需求;2)能充當(dāng)家庭路由決定了系統(tǒng)成本不能太高;3)壁掛爐打火時對數(shù)據(jù)采集模塊的穩(wěn)定運作造成巨大挑戰(zhàn)。
為了克服這些難點,經(jīng)過考慮,采用Ralink的RT5350作為控制器,該模塊集成了CPU、Wifi等基本模塊,單芯片可以解決與移動終端的無線連接以及控制功能,以其高集成度、低成本、易于二次開發(fā)等優(yōu)點,廣泛應(yīng)用于各個智能家電上。RT5350無線wifi模塊管腳如圖2所示。
圖2 RT5350標(biāo)準(zhǔn)無線wifi模塊管腳圖
由于壁掛爐的控制面板上集成開關(guān)電源、打火裝置,壁掛爐點火時產(chǎn)生高頻噪音,影響數(shù)據(jù)采集模塊的正常工作。為了解決電源干擾問題,采用高性能的同步降壓穩(wěn)壓器MP1484作為電源模塊。其內(nèi)部集成了85 mΩ MOSFET,輸入電壓范圍為4.75~23 V,負(fù)載電流為3A。電源模塊原理如圖3(a)所示。
數(shù)據(jù)采集模塊作為路由器時,需要WAN口接入網(wǎng)關(guān),而RT5350硬件上支持2個網(wǎng)口。在此處,將1個配置為WAN口,另1個配置為LAN口,以此拓展以太網(wǎng)接口。硬件上,采用內(nèi)置變壓器的RJ45網(wǎng)口,減少大量布線,而且WAN口和LAN口連接方式一致,只是在固件上配置稍微不同。以太網(wǎng)接口模塊原理如圖3(b)所示。
圖3 數(shù)據(jù)采集模塊底板原理圖
此外,將RT5350上兩個串口引出,分別與壁掛爐的顯示面板和控制面板相連,如圖3(c)所示。為了指示數(shù)據(jù)采集模塊當(dāng)前的工作狀態(tài),設(shè)置電源指示燈、壁掛爐顯示面板和控制面板連接狀態(tài)指示燈、Wifi信號指示燈,如圖3(d)所示。最后設(shè)置復(fù)位按鍵1個,并規(guī)定:短按復(fù)位按鍵,數(shù)據(jù)采集模塊將重啟,長按超過5秒,路由器的所有配置將恢復(fù)出廠設(shè)置,如圖3(e)所示。
根據(jù)文獻(xiàn)[10](2016)可知,現(xiàn)有的壁掛爐主要由顯示面板和控制面板組成,系統(tǒng)上電后,控制面板處于待機(jī)狀態(tài),而顯示面板作為下達(dá)控制命令的主體,為了保證與控制面板連接的硬件完成所有的初始化流程,顯示面板將保持2秒的待機(jī)狀態(tài),然后才執(zhí)行初始化配置流程[10]。在系統(tǒng)進(jìn)入初始化配置流程后,顯示面板將向控制面板發(fā)送21條工程參數(shù)命令,命令涵蓋了壁掛爐的點火閾值、點火量、采暖水溫度閾值、衛(wèi)浴水溫度閾值等多種運行參數(shù)??刂泼孀邮盏焦こ虆?shù)后,更新壁掛爐的硬件運行參數(shù),然后顯示面板和控制面板進(jìn)去關(guān)機(jī)狀態(tài)[11-12]。當(dāng)用戶通過顯示面板發(fā)起開機(jī)指令后,控制面板操作點火器進(jìn)行點火,隨后控制面板每隔50毫秒向顯示面板不停循環(huán)發(fā)送6條實時狀態(tài)信息(如表1所示),并只有在顯示面板返回特定指令后,控制面板才更新下一條實時狀態(tài)信息。
表1 實時狀態(tài)信息表
在開發(fā)驅(qū)動程序和應(yīng)用程序前,需要搭建OpenWrt路由器的固件。首先安裝subversion,以及gcc、g++、git-core等必要的編譯工具,再使用svn co svn://svn.openwrt.org.cn/openwrt/trunk下載系統(tǒng)源碼,并執(zhí)行“./scripts/feeds update -a”和“./scripts/feeds install -a”更新源碼,使OpenWrt系統(tǒng)獲取更多的軟件支持。一般情況下,源碼是缺少openssl和libssl-dev,也需要一同下載[13-15]。
在默認(rèn)情況下,OpenWrt系統(tǒng)的路由參數(shù)并不是需要的,因此,需要在源碼中修改,以便每次編譯固件后,無需在配置文件中頻繁修改。
1)修改路由子網(wǎng)參數(shù)。編輯/package/ base-files/files/lib/functions/uci-default.sh和/package/ base-files/files/bin/config_generate文件,將里面的set network.lan.ipaddr設(shè)置為需要的網(wǎng)段,在這里設(shè)置為set network.lan.ipaddr='192.168.1.1'。
2)修改Wifi參數(shù)。默認(rèn)情況下,Wifi功能是失能的,編輯/package/kernel/mac80211/ files/lib/wifi/mac80211.sh文件,將“option disabled 1”改為“option disabled 0”,開啟Wifi,并設(shè)置ssid、encryption以及key,開啟Wifi的加密功能。
最后,執(zhí)行make menuconfig,選擇編譯的內(nèi)核類型,并將驅(qū)動文件和應(yīng)用程序一同編譯到OpenWrt系統(tǒng)固件中。
作為一個軟件系統(tǒng),一共分為應(yīng)用程序、庫函數(shù)、系統(tǒng)內(nèi)核以及驅(qū)動程序,為了保證結(jié)構(gòu)化的編程,各部分只需開放各自的接口以供上層和下層調(diào)用。而基于OpenWrt操作系統(tǒng)的設(shè)備驅(qū)動程序開發(fā)一般分為幾個步驟:1)向內(nèi)核注冊驅(qū)動程序,使內(nèi)核收到應(yīng)用程序傳入的文件名時能找到對應(yīng)的驅(qū)動程序;2)通過open、close、write、read等接口函數(shù)實現(xiàn)需要的控制邏輯;3)將驅(qū)動程序編譯到內(nèi)核中,或者在Linux系統(tǒng)起來時通過insmod命令加載;4)測試驅(qū)動程序使之能正常工作。
加載和卸載驅(qū)動程序是由以下兩個函數(shù)實現(xiàn),往內(nèi)核中添加或者刪除該驅(qū)動的標(biāo)識符。
module_init(GasBoileInit);// insmod時調(diào)用
module_exit(GasBoileExit);// rmmod時調(diào)用
應(yīng)用程序與驅(qū)動程序之間通過file_operations這個結(jié)構(gòu)體建立關(guān)系,用來指定應(yīng)用程序調(diào)用驅(qū)動時的接口函數(shù)。
static struct file_operations GB_fops = {
/* 編譯模塊時自動創(chuàng)建的_this_modele變量*/
.owner = THIS_MODULE,
/* 調(diào)用接口*/
.open = GB_open,
.write = GB_write,
.read = GB_read,
.read = GB_close,
.unlocked_ioctl = GB_ unlocked_ioctl
};
RT5350有28個GPIO,除了GPIO0外其他的GPIO都有復(fù)用功能。在內(nèi)核加載驅(qū)動程序時需要將寄存器映射到內(nèi)存中,卸載驅(qū)動時解除映射關(guān)系。驅(qū)動程序初始化時進(jìn)行GPIO的模式配置、輸入與輸出配置。以LED為例,通過查閱原理圖可以知道,其中1個LED是由GPIO25管腳控制。設(shè)置相應(yīng)管腳的工作模式后需要配置輸入與輸出模式,由GPIO27_22_DIR寄存器控制,當(dāng)相應(yīng)的位設(shè)為1時表示輸出模式,為0時表示輸入模式。而GPIO的輸出由GPIO27_22_DATA寄存器決定,相應(yīng)的位設(shè)為1時該管腳輸出高電平,為0時表示輸出低電平。在輸入模式下讀GPIO27_22_DATA寄存器就等得到該管腳的電平狀態(tài)。
由于OpenWrt是跑在Linux系統(tǒng)下,對某個硬件寄存器操作時,需要將該寄存器的物理地址映射成虛擬地址以供內(nèi)核訪問。映射是通過ioremap()函數(shù)完成,返回值就是該寄存器對應(yīng)的虛擬地址。因此,內(nèi)核在執(zhí)行module_init(GasBoileInit)時將注冊設(shè)備,并映射寄存器:
// 注冊設(shè)備
major=register_chrdev(0,“GB”,“GB_fops”);
// 創(chuàng)建類
GB_class=class_create(THIS_MODULE, “GB”);
// 創(chuàng)建設(shè)備節(jié)點
device_create(GB_class, NULL, MKDEV(major, 0), NULL, “GB”);
// 映射寄存器的地址
GPIOMODE = (volatile unsigned long*) ioremap (0x10000060, 4);
GPIO27_22_DIR = (volatile unsigned long*) ioremap (0x10000674, 4);
GPIO27_22_DATA = (volatile unsigned long*) Ioremap (0x10000670, 4);
// 初始化寄存器的值
* GPIOMODE |= (0x1 << 14);
* GPIO27_22_DIR |= (1<<3) ;
* GPIO27_22_DATA &= ~(1<<3) ;
相反,當(dāng)內(nèi)核執(zhí)行module_exit(GasBoileExit)時,刪除設(shè)備,并通過iounmap()函數(shù)解除寄存器的映射關(guān)系。驅(qū)動程序在內(nèi)核編譯時添加到內(nèi)核中,make menuconfig時選中該驅(qū)動再執(zhí)行內(nèi)核編譯。最后在應(yīng)用程序中,通過open()、write()、read()函數(shù)便可執(zhí)行對應(yīng)的驅(qū)動函數(shù)。
數(shù)據(jù)采集模塊的串口1接到顯示面板的串口上,串口2接到控制面板的串口上,數(shù)據(jù)采集模塊的核心功能是:將串口1接收的數(shù)據(jù)通過串口2轉(zhuǎn)發(fā)出去,從串口2接收的數(shù)據(jù)通過串口1轉(zhuǎn)發(fā)出去;同時,每隔5秒鐘,將6條實時狀態(tài)信息打包,通過網(wǎng)絡(luò)向移動終端發(fā)送出去。
圖4 網(wǎng)絡(luò)化的壁掛爐應(yīng)用程序的工作流程圖
**如圖4所示是網(wǎng)絡(luò)化的壁掛爐應(yīng)用程序的工作流程圖。即:1)數(shù)據(jù)采集模塊上電,運行OpenWrt路由器固件,進(jìn)入操作系統(tǒng)后,自動執(zhí)行壁掛爐遠(yuǎn)程控制的應(yīng)用程序;2)隨后,應(yīng)用程序不停監(jiān)聽與顯示面板或控制面板相連串口的Buff空間是否為空,為空說明壁掛爐還沒啟動,或者顯示面板和控制面板還沒發(fā)起數(shù)據(jù)交互,這時應(yīng)用程序休眠10 ms,重復(fù)第2)步,反之,跳到第3)步;3)為了維持壁掛爐的正常運作,數(shù)據(jù)采集模塊收到串口數(shù)據(jù)后首先完成數(shù)據(jù)的轉(zhuǎn)發(fā),然后提取當(dāng)前的實時狀態(tài)信息,存放在SDRAM上;4)監(jiān)聽網(wǎng)絡(luò)的Buff空間是否為空,為空說明沒有從網(wǎng)絡(luò)端收到控制壁掛爐的控制指令,反之,對網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析,分離出控制命令,并向控制面板發(fā)送壁掛爐控制指令,向顯示面板發(fā)送顯示狀態(tài)更新指令;5)檢測是否達(dá)到5 s的實時狀態(tài)信息上傳周期,如果是,對SDRAM上的實時狀態(tài)信息進(jìn)行裝包處理,發(fā)向網(wǎng)絡(luò)端,隨后跳轉(zhuǎn)到第2)步,如果還沒達(dá)到5 s時間,系統(tǒng)繼續(xù)計時,并直接跳轉(zhuǎn)到第2)步。
為了驗證上述方案的可靠性,搭建基于物聯(lián)網(wǎng)技術(shù)的智能家居采暖遠(yuǎn)程控制系統(tǒng)。其中,數(shù)據(jù)采集模塊的原理框圖如圖5所示。
圖5 數(shù)據(jù)采集模塊原理框圖
實驗時,數(shù)據(jù)采集模塊作為家庭網(wǎng)關(guān)組建內(nèi)網(wǎng),將上一級交換機(jī)分發(fā)下來的網(wǎng)線插到數(shù)據(jù)采集模塊的WLAN口。此外,將壁掛爐的顯示面試接在UART1,控制面板接在UART2,由于顯示面板與控制面板之間是按照波特率為4800bps的速度傳輸,所以UART1和UART2也要保持4800bps的波特率。壁掛爐的控制面板一直處于上電狀態(tài),同時給數(shù)據(jù)采集模塊供電,上電后電源指示燈亮起。壁掛爐在顯示面板下發(fā)控制指令前,都處于OFF狀態(tài),但數(shù)據(jù)采集模塊的家庭網(wǎng)絡(luò)部分正常工作。
為了配合完成壁掛爐的遠(yuǎn)程控制,開發(fā)基于安卓平臺的壁掛爐遠(yuǎn)程控制APP,并完成以下測試:
1)APP啟動流程。啟動APP時,APP向局域網(wǎng)內(nèi)的壁掛爐IP和端口發(fā)送連接指令。在5秒內(nèi)等待壁掛爐的回復(fù)指令,隨后進(jìn)入工作模式,壁掛爐每隔5秒向APP發(fā)出實時狀態(tài)信息。由于壁掛爐與路由器相連,所以壁掛爐的IP即為網(wǎng)關(guān)IP,在這里設(shè)置為“192.168.1.1”,端口號規(guī)定為9999,如圖6(a)所示。
2)設(shè)置壁掛爐參數(shù)。當(dāng)用戶在APP上設(shè)置采暖溫度或衛(wèi)浴溫度后,APP將向壁掛爐發(fā)出控制信號,壁掛爐收到后,返回回復(fù)指令,溫度控制界面圖如6(b)所示。
圖6 APP測試效果圖
本設(shè)計采用了OpenWrt路由器搭建了燃?xì)獗趻鞝t的遠(yuǎn)程控制系統(tǒng),該系統(tǒng)保留了原來壁掛爐顯示面板和控制面板的串口通訊方式,在中間增加數(shù)據(jù)采集模塊,在維持系統(tǒng)通訊的情況下,加入了網(wǎng)絡(luò)控制的手段,使用戶擺脫了近距離調(diào)整壁掛爐溫度參數(shù)的限制,使壁掛爐的控制更智能,更便捷。
[1] 徐 儉.淺議家庭網(wǎng)絡(luò)技術(shù)與應(yīng)用[J].有線電視技術(shù),2012, 19(12):55-59.
[2] 李 旭.從環(huán)境舒適度出發(fā)的綠色建筑設(shè)計思維與方法[J].城市建筑理論研究(電子版),2013,(33):1-4
[3] 陳 煜,張 依,張 輝.燃?xì)獗趻鞝t采暖的應(yīng)用現(xiàn)狀與面臨的問題[J].上海工程技術(shù)大學(xué)學(xué)報,2009, 23(2):106-110.
[4] Barolli A, Oda T, Barolli L. Experimental results of a Raspberry Pi and OLSR based wireless content centric network testbed considering openWRT OS[A].2016 30th International Conference on Advanced Information Networking and Applications (AINA)[C].2016,153:95-100.
[5] 張曉華,張玉華.基于路由器的開源嵌入式操作系統(tǒng)學(xué)習(xí)平臺[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2013,13(2):13-16.
[6] 李德強(qiáng),孫進(jìn)生,王超穎,等.基于OpenWrt的室內(nèi)安防系統(tǒng)的研究與設(shè)計[J].工業(yè)控制計算機(jī),2016, 29(7):36-37.
[7] 郭穩(wěn)濤, 何怡剛. 智能家居遠(yuǎn)程監(jiān)控系統(tǒng)的研究與設(shè)計[J]. 計算機(jī)測量與控制, 2011,(09):2109-2112.
[8] 高 鵬, 鄭 超, 任岐鳴,等. ARM和ZigBee的智能家居監(jiān)控網(wǎng)絡(luò)設(shè)計[J]. 計算機(jī)測量與控制,2014,(10):3206-3209.
[9] 周 晉.燃?xì)獗趻戾仩t系統(tǒng)設(shè)計[J].科技展望,2014,(21):198.
[10] 陳嘉源,吳黎明.模組壁掛爐溫度協(xié)同控制系統(tǒng)設(shè)計[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2016,16(6): 58-61.
[11] 黃杰華.一種多功能遙控式壁掛爐:中國,CN203432091U [P]. 2014-02-12.
[12] 李 軍.燃?xì)獗趻鞝t遠(yuǎn)程監(jiān)控系統(tǒng):中國,CN102777972A[P]. 2012-07-11.
[13] Zhao G, Li B. The design of gas boiler combustion system based on ADRC and μCOSII[A]. Control Conference (CCC), 2016 35th Chinese[C]. 2016: 5982-5985.
[14] Kciuk Mk. OpenWRT operating system based controllers for mobile robot and building automation system students projects realization[A]. 2014 15th International Workshop on Research and Education in Mechatronics (REM)[C]. 2014:1-4.
[15] 李德強(qiáng),孫進(jìn)生,王超穎,等.基于OpenWrt的室內(nèi)安防系統(tǒng)的研究與設(shè)計[J]. 工業(yè)控制計算機(jī),2016,29(7):36-37.
Design of Smart Home Heating Remote Control System Based on Internet of Things
Chen Tiemin
(China Mobile Communications Corporation Hunan Co., Ltd. Yongzhou Subsidiary, Yongzhou 425000,China)
With the highly development of internet of things technology, smart home break out a new vitality in the field of heating. As a strong central heating capacity, gas boiler can be widely used in field of large area heating in the north of China. But the traditional control method of gas boiler does not have network function. In order to solve the limitation of gas boiler with traditional control method, a smart home heating remote control system based on internet of things is presented. It will keep the original serial communication mode between display panel and control panel. And, a data acquisition module based on OpenWrt is added to complete the remote control of gas boiler in the case of maintaining system communication. After the experimental test, the mobile terminal equipped with remote control APP can communicate with gas boiler normally, and complete the specified operation. Besides, the gas boiler can be a home gateway, which can construct a home network automatically, and allow other mobile device connect. This system allows the user to get rid of the restrictions of temperature setting on gas boiler, which can make gas boiler more intelligent and convenient, and providing a reference network reconstruction scheme for gas boiler remote control.
internet of things; heating; gas boiler; remote control; OpenWrt
2017-06-15;
2017-07-26。
陳鐵民(1977-),男,湖南永州人,碩士,主要從事嵌入式系統(tǒng)、物聯(lián)網(wǎng)應(yīng)用、通信與信息系統(tǒng)研究。
1671-4598(2017)12-0090-05
10.16526/j.cnki.11-4762/tp.2017.12.024
TP272
A