侯維巖 魏耀徽 龐中強(qiáng)
(鄭州大學(xué)信息工程學(xué)院1,河南 鄭州 450001;上海市電站自動(dòng)化技術(shù)重點(diǎn)實(shí)驗(yàn)室2,上海 200072)
智能家居網(wǎng)關(guān)及其Web控制軟件的設(shè)計(jì)和實(shí)現(xiàn)
侯維巖1,2魏耀徽1龐中強(qiáng)1
(鄭州大學(xué)信息工程學(xué)院1,河南 鄭州 450001;上海市電站自動(dòng)化技術(shù)重點(diǎn)實(shí)驗(yàn)室2,上海 200072)
針對(duì)物聯(lián)網(wǎng)智能家居領(lǐng)域多網(wǎng)絡(luò)和多系統(tǒng)的現(xiàn)狀,提出了一種能夠同時(shí)兼容ZigBee、Bluetooth和以太網(wǎng),并且能方便操作的B/S智能家居控制系統(tǒng)。網(wǎng)關(guān)采用STM32F103作為核心處理器,擴(kuò)展多個(gè)功能模塊和各個(gè)子系統(tǒng)節(jié)點(diǎn)構(gòu)成硬件平臺(tái)。軟件方面采用線(xiàn)程編程,添加ENC28J60驅(qū)動(dòng),通過(guò)線(xiàn)程輪詢(xún)的模式來(lái)控制不同子系統(tǒng)的數(shù)據(jù)傳輸與轉(zhuǎn)換。以MySQL作為數(shù)據(jù)庫(kù),通過(guò)PHPsocket編程實(shí)現(xiàn)用戶(hù)與網(wǎng)關(guān)、數(shù)據(jù)庫(kù)之間的信息交互。網(wǎng)關(guān)與子節(jié)點(diǎn)之間通過(guò)串口電路進(jìn)行通信。試驗(yàn)結(jié)果表明,系統(tǒng)運(yùn)行效果良好、使用方便、維護(hù)難度較低,能更好地應(yīng)用到智能家居領(lǐng)域。
數(shù)據(jù)庫(kù) ZigBee技術(shù) Bluetooth技術(shù) ENC28J60 網(wǎng)關(guān) B/S架構(gòu)
隨著無(wú)線(xiàn)傳感器網(wǎng)絡(luò)技術(shù)的發(fā)展,物聯(lián)網(wǎng)技術(shù)從最開(kāi)始的工業(yè)控制領(lǐng)域向民用領(lǐng)域逐步擴(kuò)展[1]。最近幾年,各大家電生產(chǎn)廠商逐步將生產(chǎn)方向轉(zhuǎn)向高端智能化領(lǐng)域,并提出了智慧城市、智慧地球理念。目前各個(gè)大電子生產(chǎn)廠商生產(chǎn)的無(wú)線(xiàn)設(shè)備種類(lèi)眾多,例如ZigBee和Bluetooth[2]等。但是沒(méi)有一個(gè)通用的控制系統(tǒng)將這些不同的通信設(shè)備進(jìn)行有效融合。[3]
針對(duì)上述問(wèn)題,本文設(shè)計(jì)一種易于大規(guī)模生產(chǎn)且能兼容不同協(xié)議的智能家居網(wǎng)關(guān)[4],即支持以太網(wǎng)、藍(lán)牙4.0和ZigBee這3種不同網(wǎng)絡(luò)間的信息交換,并設(shè)計(jì)與其相關(guān)的控制軟件模型:MySQL數(shù)據(jù)庫(kù)[5]和PHP界面。網(wǎng)關(guān)可以通過(guò)Socket通信[6]對(duì)家居環(huán)境中各種設(shè)備進(jìn)行控制,實(shí)現(xiàn)遠(yuǎn)程智能監(jiān)控。
整個(gè)系統(tǒng)可分為:STM32F103VET6嵌入式網(wǎng)關(guān)和基于PHP的Web操控界面2大部分。嵌入式網(wǎng)關(guān)則由ZigBee模塊、Bluetooth模塊、RS232外設(shè)串口、ENC28J60以太網(wǎng)模塊和MCU-STM32F103VET6組成。
1.1 網(wǎng)關(guān)MCU設(shè)計(jì)
網(wǎng)關(guān)的硬件核心部分選用CortexTM-M3系列的STM32F103嵌入式芯片,主頻76 MHz,外接管腳功能較全。
網(wǎng)關(guān)需要處理和轉(zhuǎn)換多種通信協(xié)議,并且還要能夠運(yùn)行以太網(wǎng)協(xié)議,所以本系統(tǒng)對(duì)網(wǎng)關(guān)的MCU內(nèi)存容量要求較高。為了能使系統(tǒng)流暢地運(yùn)行,選擇STM32F103VET6嵌入式芯片為核心處理器,其內(nèi)存可達(dá)512 kB。
JTAG接口通過(guò)STM32F103VET6芯片的JTDI(測(cè)試數(shù)據(jù)輸入)、JTDO(測(cè)試數(shù)據(jù)輸出)、JTCK(測(cè)試時(shí)鐘)、JTMS(測(cè)試模式選擇)、JTRST(測(cè)試復(fù)位) 管腳下載和調(diào)試程序。
ZigBee和Bluetooth模塊通過(guò)STM32F103VET6的內(nèi)置UART1和UART2管腳與芯片直接相連。UART3管腳則經(jīng)過(guò)MAX232電源電平轉(zhuǎn)換芯片設(shè)置為串口外設(shè)接口(方便程序的檢測(cè)和調(diào)試)。各個(gè)子系統(tǒng)和MCU可以通過(guò)串口實(shí)現(xiàn)透明傳輸。
網(wǎng)絡(luò)接口主要負(fù)責(zé)網(wǎng)關(guān)和以太網(wǎng)相連,使用ENC28J60網(wǎng)絡(luò)芯片與STM32F103VET6的SPI接口相連,之后通過(guò)HR911105A網(wǎng)口與網(wǎng)線(xiàn)連接。
電源采用AMS1117芯片,實(shí)現(xiàn)5 V到3.3 V電壓的轉(zhuǎn)換,為主控芯片和各個(gè)子系統(tǒng)芯片提供電壓。網(wǎng)關(guān)硬件設(shè)計(jì)如圖1所示。
圖1 基于ARM的網(wǎng)關(guān)結(jié)構(gòu)圖
1.2 ZigBee節(jié)點(diǎn)設(shè)計(jì)
ZigBee節(jié)點(diǎn)硬件設(shè)計(jì)主要包括:按鍵、CC2530、電源、LED燈,結(jié)構(gòu)如圖2所示。
圖2 Zigbee結(jié)構(gòu)圖
ZigBee模塊與網(wǎng)關(guān)共享同一個(gè)電源,子節(jié)點(diǎn)起采集信息及設(shè)備狀態(tài)的作用。子節(jié)點(diǎn)周期性讀取傳感器的狀態(tài),后通過(guò)單播的方式將數(shù)據(jù)傳輸?shù)絽f(xié)調(diào)器節(jié)點(diǎn),協(xié)調(diào)器則通過(guò)串口將數(shù)據(jù)發(fā)送至網(wǎng)關(guān)。發(fā)送數(shù)據(jù)前,將采集數(shù)據(jù)與上次數(shù)據(jù)進(jìn)行比較,如果沒(méi)有變化,則不發(fā)送數(shù)據(jù)。這樣不僅降低了節(jié)點(diǎn)能耗,而且避免了網(wǎng)關(guān)收發(fā)大量數(shù)據(jù)時(shí)產(chǎn)生的數(shù)據(jù)擁堵現(xiàn)象。LED等顯示網(wǎng)絡(luò)的連接狀態(tài)是否正常,如不正常,則通過(guò)按鍵可以重啟ZigBee模塊。
本系統(tǒng)中對(duì)協(xié)調(diào)器和各個(gè)子節(jié)點(diǎn)進(jìn)行了統(tǒng)一編碼,并采用單播通信的方式通過(guò)地址響應(yīng),而非根據(jù)通信內(nèi)容的響應(yīng)來(lái)控制各個(gè)子節(jié)點(diǎn)設(shè)備,極大地降低了系統(tǒng)網(wǎng)絡(luò)中數(shù)據(jù)的傳輸量,也簡(jiǎn)化了子節(jié)點(diǎn)的編程難度。數(shù)據(jù)幀格式如表1所示。
表1 ZigBee數(shù)據(jù)幀格式
從表1可以看出,幀頭幀尾以固定的數(shù)據(jù)填充,用來(lái)校驗(yàn)數(shù)據(jù)格式是否正確,數(shù)據(jù)幀長(zhǎng)度為15 B,其中幀頭中Z表示系統(tǒng)類(lèi)型(ZigBee),K或F表示控制或狀態(tài)。而設(shè)備類(lèi)型是描述設(shè)備的用途。節(jié)點(diǎn)網(wǎng)絡(luò)地址占4 B,用來(lái)區(qū)分不同的終端設(shè)備。傳感器采集的信號(hào)存放在數(shù)據(jù)段(少于4 B時(shí),補(bǔ)0)。
當(dāng)協(xié)調(diào)器收到子節(jié)點(diǎn)發(fā)送的數(shù)據(jù)時(shí),自動(dòng)查詢(xún)子節(jié)點(diǎn)的網(wǎng)絡(luò)地址,將網(wǎng)絡(luò)地址以表1的格式打包發(fā)送給網(wǎng)關(guān),再由網(wǎng)關(guān)轉(zhuǎn)發(fā)到上層控制端。當(dāng)協(xié)調(diào)器收到網(wǎng)關(guān)的控制指令后,根據(jù)網(wǎng)絡(luò)地址將數(shù)據(jù)字符串發(fā)送給終端節(jié)點(diǎn),終端節(jié)點(diǎn)收到消息后觸發(fā)相應(yīng)的響應(yīng)函數(shù),實(shí)現(xiàn)對(duì)設(shè)備的控制。
1.3 Bluetooth節(jié)點(diǎn)設(shè)計(jì)
藍(lán)牙芯片采用TI生產(chǎn)的CC2540芯片,其硬件設(shè)計(jì)包括:CC2540、電源、按鍵、LED電路,結(jié)構(gòu)如圖3所示。Bluetooth節(jié)點(diǎn)運(yùn)行TI官方的BLE協(xié)議棧。該協(xié)議棧是最新的藍(lán)牙4.0協(xié)議,較之前的版本它具有功耗小、延時(shí)短以及成本低的優(yōu)點(diǎn),大大擴(kuò)展了其在無(wú)線(xiàn)設(shè)備領(lǐng)域的應(yīng)用范圍。通信網(wǎng)絡(luò)由主機(jī)和從機(jī)組成。
圖3 Bluetooth結(jié)構(gòu)圖
由圖3可知,主機(jī)(Central)通過(guò)對(duì)SimpleBLECentral_ProcessEvent()函數(shù)插入自動(dòng)搜索語(yǔ)句,使主機(jī)能夠上電自動(dòng)搜索周?chē)膹V播設(shè)備。當(dāng)搜索到可連接的設(shè)備后會(huì)自動(dòng)連接,這時(shí)主機(jī)會(huì)通過(guò)串口向網(wǎng)關(guān)發(fā)送字符和廣播內(nèi)容,LED等閃爍表明連接已經(jīng)建立。若連接失敗,可以通過(guò)按鍵手動(dòng)重新連接。
從機(jī)上電后自動(dòng)廣播,連接建立后主要通過(guò)兩條特性值數(shù)據(jù)通道與主機(jī)通信。兩條特性值數(shù)據(jù)通道定義為Char6和Char7。Char6設(shè)置為可讀寫(xiě)的特性值語(yǔ)句,從機(jī)主要通過(guò)這條數(shù)據(jù)通道接收主機(jī)發(fā)送的信息,Char7為消息特性值語(yǔ)句。當(dāng)從機(jī)收到外部數(shù)據(jù)后寫(xiě)入Char7,主機(jī)可以從Char7讀取從機(jī)發(fā)送的數(shù)據(jù)。Bluetooth通信格式如表2所示。
表2 Bluetooth數(shù)據(jù)幀格式
表2表明,幀頭幀尾以固定的數(shù)據(jù)填充,用來(lái)校驗(yàn)數(shù)據(jù)格式是否正確,數(shù)據(jù)幀長(zhǎng)度為14 B。其中幀頭B表示系統(tǒng)類(lèi)型(Bluetooth),K或F表示控制或狀態(tài)。后面的是節(jié)點(diǎn)網(wǎng)絡(luò)地址用來(lái)區(qū)分不同的終端節(jié)點(diǎn)。藍(lán)牙協(xié)議的網(wǎng)絡(luò)地址是由48位IEEE地址構(gòu)成,所以將節(jié)點(diǎn)網(wǎng)絡(luò)地址字段設(shè)置為6 B。數(shù)據(jù)段為傳感器發(fā)送的數(shù)據(jù)(少于4 B時(shí),補(bǔ)0)。
1.4 ENC28J60模塊設(shè)計(jì)
ENC28J60是閉環(huán)網(wǎng)絡(luò)控制芯片,它符合IEEE 802.3的全部規(guī)范,內(nèi)部擁有一個(gè)DMA模塊,以實(shí)現(xiàn)高速數(shù)據(jù)的收發(fā)和IP校驗(yàn)與計(jì)算[7]。MCU通過(guò)2個(gè)中斷引腳和SPI連接,最高傳輸速率可達(dá)10 Mbit/s。硬件設(shè)計(jì)主要包括:NEC28J60、按鍵、電源、晶振。WiFi結(jié)構(gòu)原理圖如圖4所示。
圖4 Wifi結(jié)構(gòu)圖
運(yùn)行主程序之前,需要對(duì)芯片的SPI管腳進(jìn)行配置:雙向全雙工、主機(jī)模式、發(fā)送接收8位幀結(jié)構(gòu)、時(shí)鐘懸空低、數(shù)據(jù)捕獲第一個(gè)時(shí)鐘沿、NSS片選信號(hào)有軟件控制、波特率預(yù)分頻為8、數(shù)據(jù)傳輸從MSB位開(kāi)始、CRC計(jì)算值設(shè)置,編寫(xiě)SPI1_ReadWrite()數(shù)據(jù)讀寫(xiě)函數(shù)。然后對(duì)NEC28J60芯片初始化配置包括:控制寄存器、以太網(wǎng)緩沖器和PHY寄存器。
網(wǎng)關(guān)運(yùn)行的網(wǎng)絡(luò)協(xié)議是UIP協(xié)議,UIP協(xié)議包含TCP協(xié)議棧的主要功能,代碼較少只有6 kB,運(yùn)行時(shí)只占用幾百字節(jié)的RAM,適合在小型嵌入式芯片上運(yùn)行。
1.5 網(wǎng)關(guān)軟件設(shè)計(jì)
網(wǎng)關(guān)接收到ZigBee、Bluetooth反饋的數(shù)據(jù),采用Socket通信把數(shù)據(jù)經(jīng)以太網(wǎng)發(fā)送到服務(wù)器端。由于網(wǎng)關(guān)需要分析大量的數(shù)據(jù),并向不同的端口傳送,因此需要通過(guò)UIP_APPCALL()函數(shù)接口對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),包括以TCP-UART1、TCP-->UART2、UART1-->TCP、UART2-->TCP。
網(wǎng)關(guān)系統(tǒng)流程如圖5所示。
圖5 網(wǎng)關(guān)系統(tǒng)流程圖
設(shè)備端口主要是UART端口和Socket通信接口。串口通信采用無(wú)奇偶校驗(yàn)的方式,波特率統(tǒng)一設(shè)定為115 200 bit/s,同時(shí)對(duì)看門(mén)狗定時(shí)器周期性清零。端口查詢(xún)程序由loop_tcpip()、loop_uart1()、 loop_uart2()這3個(gè)函數(shù)組成。loop_tcpip()是TCP循環(huán)處理函數(shù),主要功能包括網(wǎng)絡(luò)連接的建立和網(wǎng)絡(luò)數(shù)據(jù)的收發(fā)。loop_uart1()和loop_uart2()函數(shù)實(shí)現(xiàn)UART1和UART2串口數(shù)據(jù)的收發(fā)。
系統(tǒng)控制軟件基于PHP+Apache+MySQL平臺(tái),構(gòu)建B/S[8]架構(gòu)的信息管理服務(wù)器。該架構(gòu)是目前最流行的Web開(kāi)發(fā)應(yīng)用架構(gòu)之一。數(shù)據(jù)庫(kù)采用MySQL[9]來(lái)存儲(chǔ)數(shù)據(jù),使用MyEclipse 集成開(kāi)發(fā)環(huán)境開(kāi)發(fā)服務(wù)器端的Web 應(yīng)用程序[10]。通過(guò)在前臺(tái)HTML頁(yè)面中嵌入智能家居場(chǎng)景,將不同電器的信息直接顯示在網(wǎng)頁(yè)中。
本文所設(shè)計(jì)的控制端主要分為:通信控制模塊、狀態(tài)查詢(xún)顯示模塊、登陸模塊、設(shè)備添加模塊。其整體架構(gòu)如圖6所示。
圖6 控制軟件架構(gòu)圖
本系統(tǒng)采用在Linux環(huán)境下運(yùn)行的MySQL數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)中建立設(shè)備表和用戶(hù)信息表。設(shè)備表格式如表3所示。設(shè)備地址表用來(lái)儲(chǔ)存控制設(shè)備的類(lèi)型和設(shè)備所在無(wú)線(xiàn)網(wǎng)絡(luò)的地址。設(shè)備類(lèi)型存儲(chǔ)著由網(wǎng)關(guān)傳送的數(shù)據(jù)頭字符,地址是每個(gè)節(jié)點(diǎn)在網(wǎng)絡(luò)中所分配的地址。設(shè)備狀態(tài)存儲(chǔ)節(jié)點(diǎn)返回設(shè)備的狀態(tài)值和采集到的數(shù)據(jù)。控制系統(tǒng)自動(dòng)將接收的網(wǎng)關(guān)數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù),同時(shí)也支持用戶(hù)通過(guò)編輯頁(yè)面更改數(shù)據(jù)庫(kù)的數(shù)據(jù)。
表3 設(shè)備表格式
控制系統(tǒng)并非開(kāi)放的系統(tǒng)。為了保證用戶(hù)使用的安全性,本文在控制端設(shè)計(jì)了一個(gè)登錄控制模塊。程序接收到用戶(hù)輸入的用戶(hù)名和密碼,判斷是否是合法用戶(hù)。如果合法則轉(zhuǎn)到控制界面,否則提示“用戶(hù)名或者密碼錯(cuò)誤”。
登陸成功后才能進(jìn)入通信控制頁(yè)面和顯示頁(yè)面,頁(yè)面中的每個(gè)圖標(biāo)都對(duì)應(yīng)著各個(gè)子系統(tǒng)的終端節(jié)點(diǎn)。通過(guò)對(duì)數(shù)據(jù)庫(kù)的實(shí)時(shí)查詢(xún),在圖表上顯示每個(gè)節(jié)點(diǎn)的狀態(tài),圖標(biāo)旁邊是控制按鍵。當(dāng)點(diǎn)擊按鍵時(shí),會(huì)把與按鍵相對(duì)應(yīng)的器件地址和狀態(tài)值通過(guò)Socket發(fā)送給網(wǎng)關(guān)。發(fā)送值=器件類(lèi)型(BC/ZC)+ 器件在無(wú)線(xiàn)網(wǎng)絡(luò)中的地址(通過(guò)查詢(xún)數(shù)據(jù)庫(kù)表)+控制狀態(tài)。當(dāng)發(fā)送成功后,器件的狀態(tài)發(fā)生改變,再由網(wǎng)關(guān)發(fā)送至數(shù)據(jù)庫(kù),這時(shí)頁(yè)面經(jīng)過(guò)查詢(xún)數(shù)據(jù)庫(kù)更新顯示器件的狀態(tài)。
設(shè)備添加模塊是用戶(hù)手動(dòng)更新設(shè)備表單的一個(gè)頁(yè)面。設(shè)備表信息都顯示在HTML表單中,用戶(hù)修改完成后,單擊提交按鈕就會(huì)將數(shù)據(jù)更新到數(shù)據(jù)庫(kù)。
本文提出了一種面向智能家居環(huán)境的基于無(wú)線(xiàn)網(wǎng)絡(luò)-ARM網(wǎng)關(guān)-數(shù)據(jù)庫(kù)-控制界面的網(wǎng)關(guān)控制系統(tǒng)。該系統(tǒng)利用成熟的ZigBee、Bluetooth、STM32和PHP Web設(shè)計(jì)軟件,實(shí)現(xiàn)了智能家居環(huán)境下的信息采集和管理。系統(tǒng)一方面能夠?qū)Σ煌ㄐ畔到y(tǒng)的信息進(jìn)行統(tǒng)一和實(shí)時(shí)的管理;另一方面優(yōu)化了用戶(hù)界面的操作,提高了項(xiàng)目的開(kāi)發(fā)效率,同時(shí)也增加了系統(tǒng)的可移植性和可擴(kuò)展性,具有較好的經(jīng)濟(jì)效益和社會(huì)效益。
[1] 李勇,趙劉陽(yáng),王平,等.智能家居無(wú)線(xiàn)控制網(wǎng)絡(luò)的設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化儀表,2013,34(7):58-61.
[2] Baker N.ZigBee and Bluetooth strengths and weaknesses for industrial applications[J].Comp uting and Control Engineering Journal,2005,16(2):20-25.
[3] 沈永春,姜寧,張功鍍.嵌入式多協(xié)議網(wǎng)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化儀表,2007,28(3):8-12.
[4] 魏來(lái),王海寬,費(fèi)敏銳.異構(gòu)網(wǎng)絡(luò)測(cè)控系統(tǒng)集成設(shè)計(jì)及發(fā)電實(shí)驗(yàn)應(yīng)用[J].自動(dòng)化儀表,2011,32(5):6-10.
[5] 葉寧,王忠勤,王汝傳,等.基于EPC網(wǎng)絡(luò)的智能物資管理系統(tǒng)的應(yīng)用與研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(10):209-216.
[6] 孫知信,唐蘇寧.基于ipv6的無(wú)線(xiàn)傳感器網(wǎng)絡(luò)異構(gòu)通信技術(shù)研究[J].中興通訊技術(shù),2012,18(3).
[7] 劉宗明,卓振泰,何明華.基于ENC28J60的以太網(wǎng)接口的設(shè)計(jì)與實(shí)現(xiàn)[J].電子器件,2013,36(6):920-922.
[8] Wang W J,Li J.The design of an open laboratory information management system based upon a browser/server (B/S) architecture[J].World Transactions on Engineering and Technology Education,2013,11(1):41-45.
[9] 李榮國(guó),王見(jiàn).MySQL數(shù)據(jù)庫(kù)在自動(dòng)測(cè)試系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2011(S2):169-171,175.
[10]李丹.智能停車(chē)場(chǎng)Web車(chē)位引導(dǎo)的設(shè)計(jì)與實(shí)現(xiàn)[J].韶關(guān)學(xué)院學(xué)報(bào),2013,34(2):243-246.
Design and Implementation of the Gateway for Smart Home and Its Web Control Software
In accordance with the current status of multi-network and multi-system in IOT smart home field, the B/S smart home control system that is compatible with ZigBee, Bluetooth, and Ethernet and easy to operate is proposed. In the gateway, STM32F103 is adopted as the core processor for expanding multiple functional modules and constituting the hardware platform. The thread programming is used in software, and the drive of ENC28J60 is added, data transmission and transformation of different subsystems are controlled through thread polling mode. With MySQL as the database of the system, the information interaction among users, gateway and database is implemented via PHPsocket programming, while the communication between gateway and child nodes is through the serial port circuit. The experimental results show that the system is running with excellent effect and is easy operated; it features lower maintenance difficulty, and is suitable for applying in the field of smart home.
Database ZigBee technology Bluetooth technology ENC28J60 Gateway B/S framework
侯維巖(1964-),男,2004年于上海大學(xué)控制理論與控制工程專(zhuān)業(yè),獲博士學(xué)位,教授;主要研究方向?yàn)榉植际街悄芸刂?、信?hào)和圖像處理。
TN871
A
10.16086/j.cnki.issn1000-0380.201505016
修改稿收到日期:2014-10-08。