申贊偉, 殳國華, 張士文, 張 峰, 劉彥博
(上海交通大學(xué)電子信息與電氣工程學(xué)院,上海 200240)
物聯(lián)網(wǎng)是在互聯(lián)網(wǎng)的基礎(chǔ)上,將連接擴展和延伸到任何物體之間,并實現(xiàn)信息交換的互連網(wǎng)絡(luò)[1]。近年來日新月異的物聯(lián)網(wǎng)技術(shù)深刻地改變了人們的生產(chǎn)、生活方式[2]。隨著大帶寬、低時延的第5代移動通信技術(shù)的逐步普及商用,“萬物互聯(lián)”的物聯(lián)網(wǎng)愿景將加速實現(xiàn)[3]。為培養(yǎng)與蓬勃發(fā)展的物聯(lián)網(wǎng)產(chǎn)業(yè)相適應(yīng)的工程技術(shù)人才,很多高校都開設(shè)了相關(guān)的物聯(lián)網(wǎng)實驗課程[4]。目前這些實驗課程的實施大致分為以下幾種類型:基于簡單的傳感器物聯(lián)網(wǎng)實驗,如火災(zāi)報警、光控和聲控電路實驗等[5-6],這類物聯(lián)網(wǎng)實驗較為簡單,沒有體現(xiàn)完整的物聯(lián)網(wǎng)架構(gòu),不利于學(xué)生理解掌握物聯(lián)網(wǎng)理論知識;基于封裝實驗箱的物聯(lián)網(wǎng)實驗[7],此類物聯(lián)網(wǎng)實驗裝置隱藏了底層原理,不利于學(xué)生理解原理知識,且難以擴展更新;有的高校采用大型物聯(lián)網(wǎng)實訓(xùn)平臺開展物聯(lián)網(wǎng)實驗[8-9],雖然功能齊全,但是價格昂貴,且占地面積大,不便于安裝維護。
利用低成本器件設(shè)計瀏覽器-服務(wù)器模式的耦合度低、功能豐富、架構(gòu)完整的智能家居物聯(lián)網(wǎng)系統(tǒng)實驗。利用常見傳感器采集家居環(huán)境數(shù)據(jù),低成本32 bit系列微控制器(SGS-THOMSON Microelectronics 32 bit Microcontroller Unit,STM32)單片機開發(fā)板搭建Web服務(wù)器并同時充當(dāng)網(wǎng)關(guān),使用發(fā)光二極管(Light-Emitting Diode,LED)模擬用電器,同時構(gòu)建超文本標記語言(HyperText Markup Language,HTML)用戶頁面,實現(xiàn)客戶端監(jiān)視環(huán)境數(shù)據(jù)并發(fā)送指令以控制家居系統(tǒng)。
系統(tǒng)架構(gòu)如圖1所示,實驗方案涵蓋了感知層、網(wǎng)絡(luò)層和應(yīng)用層等完整的物聯(lián)網(wǎng)體系結(jié)構(gòu)。方案采用客戶端-服務(wù)器模型,其中客戶端為Web瀏覽器,服務(wù)器為基于STM32搭建的Web服務(wù)器,兩者通過以太網(wǎng)方式進行通信。之所以采用Web瀏覽器-Web服務(wù)器架構(gòu),是因為大部分用戶對于萬維網(wǎng)較為熟悉,且網(wǎng)頁制作在不同的計算機平臺上的標準比較規(guī)范[10],同時萬維網(wǎng)覆蓋范圍廣,Web瀏覽器-Web服務(wù)器架構(gòu)易于擴展。
圖1 智能家居物聯(lián)網(wǎng)系統(tǒng)架構(gòu)圖
在本系統(tǒng),用戶通過Web瀏覽器向服務(wù)器請求交互頁面,該頁面為存儲在Web服務(wù)器中的HTML文件,用戶通過交互頁面控制家居系統(tǒng),且頁面可顯示家居環(huán)境數(shù)據(jù)。在感知層,主要是監(jiān)測家居環(huán)境的傳感器,如溫度傳感器、濕度傳感器和細顆粒物(Fine Particulate Matter,PM2.5)傳感器,以及日常家用電器設(shè)備。
(1)服務(wù)器。輕量級網(wǎng)際互聯(lián)協(xié)議(Light weight Internet Protocol,LwIP)是一個小型開源的傳輸控制協(xié)議/網(wǎng)際互聯(lián)協(xié)議(Transmission Control Protocol/Internet Protocol,TCP/IP)[11]。LwIP是輕量級IP協(xié)議,在保持TCP協(xié)議主要功能的基礎(chǔ)上僅需要15KB左右的隨機存取存儲器(Random Access Memory,RAM)和40KB左右的只讀存儲器(Read-Only Memory,ROM)等硬件資源[12],這使得LwIP協(xié)議棧適合在低端的嵌入式設(shè)備中使用。LwIP支持地址解析協(xié)議、網(wǎng)際協(xié)議版本4(Internet Protocol version 4,IPv4)和Internet控制報文協(xié)議,且它實現(xiàn)了IP數(shù)據(jù)報分片重組、擁塞控制、數(shù)據(jù)重傳等功能。本實驗方案就是將LwIP移植到STM32單片機上,以支持以太網(wǎng)通信,并在此基礎(chǔ)上搭建Web服務(wù)器。Web服務(wù)器的核心作用就是接收客戶端用戶指令并控制電器的工作狀態(tài),還可以獲取傳感器的測量值并傳輸至網(wǎng)絡(luò)層,進而可以被客戶端獲取,所以STM32單片機也充當(dāng)了網(wǎng)關(guān)的角色。如圖2所示,服務(wù)器主要包含:STM32主芯片(STM32F407ZGT6)、以太網(wǎng)(ENC28J60)、液晶顯示器(Liquid Crystal Display,LCD)、溫濕度傳感器、PM2.5傳感器、實時時鐘、定時器和用電器等模塊。
圖2 服務(wù)器結(jié)構(gòu)圖
溫度傳感器、濕度傳感器及PM2.5傳感器測量得到溫、濕度值、PM2.5值后,將數(shù)據(jù)發(fā)送給服務(wù)器。服務(wù)器得到傳感器數(shù)據(jù)后,通過服務(wù)器端嵌入技術(shù)將數(shù)據(jù)插入網(wǎng)頁[13]。當(dāng)瀏覽器對服務(wù)器發(fā)起請求時,服務(wù)器就將網(wǎng)頁發(fā)送至瀏覽器,通過瀏覽器解析顯示數(shù)據(jù),用戶就可在客戶端的瀏覽器上實時監(jiān)視環(huán)境溫度、濕度值及PM2.5值。
當(dāng)服務(wù)器接收到客戶端的定時開啟請求時,服務(wù)器首先獲取客戶端所發(fā)送的開啟指令和定時時間,利用STM32的實時時鐘模塊實現(xiàn)對用電器的定時開啟。實時時鐘模塊擁有一個連續(xù)計數(shù)的計數(shù)器,在相應(yīng)的軟件配置下,可以提供時鐘日歷的功能。該模塊還提供了鬧鐘中斷功能[14],設(shè)置鬧鐘中斷允許位,將用戶提交的定時開啟時間值存儲至鬧鐘寄存器,當(dāng)系統(tǒng)時間與定時時間匹配時,可以產(chǎn)生鬧鐘中斷。在鬧鐘中斷程序中,點亮LED,即執(zhí)行打開用電器的指令。
本方案采取脈寬調(diào)制(Pulse Width Modulation,PWM)技術(shù)進行功率調(diào)節(jié)。PWM利用微處理器的輸出來調(diào)節(jié)脈沖信號的占空比[15]。服務(wù)器根據(jù)用戶指令相應(yīng)地改變捕獲/比較寄存器值,通過改變輸出脈沖的占空比,實現(xiàn)調(diào)節(jié)LED的亮度,即改變電器相關(guān)模塊的工作電壓。
(2)通信網(wǎng)絡(luò)。本方案采用家庭路由器搭建以太網(wǎng)。Web服務(wù)器和客戶端個人電腦(Personal Computer,PC)分別接入家庭路由器的兩個局域網(wǎng)(Local Area Network,LAN)口,服務(wù)器和客戶端的IP地址均由路由器的動態(tài)IP配置功能分配得到。圖3(a)為客戶端所獲取的IP地址示意圖,可見,PC的IP地址為192.168.1.105,子網(wǎng)掩碼為255.255.255.0。圖3(b)為服務(wù)器IP地址示意圖,Web服務(wù)器初始化成功以后,STM32單片機的LCD顯示其獲得的IP地址為192.168.1.101。所以客戶端與服務(wù)器位于同一個子網(wǎng)中,無須路由器進行IP數(shù)據(jù)報轉(zhuǎn)發(fā),兩者即可通信?;诩矣寐酚善鞔罱ㄒ蕴W(wǎng),以以太網(wǎng)作為設(shè)備連接的基本形式,便于網(wǎng)絡(luò)的進一步擴展,且可使學(xué)生更形象直觀地理解計算機網(wǎng)絡(luò)理論知識。
圖3 路由器動態(tài)IP地址配置示意圖
(3)客戶端。如圖4所示為客戶端頁面。為使用戶頁面更加優(yōu)雅和形象,采用了jQuery用戶界面(jQuery User Interface,jQuery UI)庫文件和層疊樣式表(Cascading Style Sheets,CSS)技術(shù)[16]。頁面實現(xiàn)了空調(diào)、加濕器和電燈的控制界面,包含了用電器開啟按鈕、開啟時間文本框、調(diào)節(jié)電器相關(guān)模塊工作電壓的滑塊和LED亮度視覺反饋的矩形區(qū)域。用戶可在文本框中輸入開啟時間并點擊開關(guān)按鈕,實現(xiàn)對用電器的定時開啟。用戶還可以移動滑塊,實現(xiàn)對用電器的相關(guān)模塊工作電壓控制。另外,頁面中還可以顯示傳感器所測量得到的家居環(huán)境的溫度、濕度及PM2.5值,為用戶決策提供依據(jù)。
圖4 客戶端頁面
客戶端頁面的核心是利用JavaScript代碼程序偵測HTML頁面事件,該事件可以接受用戶輸入并發(fā)送至服務(wù)器[17]。以定時開啟用電器為例,頁面部分關(guān)鍵代碼如圖5所示,代碼中定義了clickSwitch()函數(shù),在這個函數(shù)里指定了硬件統(tǒng)一資源定位符(Uniform Resource Locator,URL)地址,并讀取表單數(shù)據(jù)(定時開啟指令及時間值),將其打包為JavaScript對象簡譜(JavaScript Object Notation,JSON)格式,method屬性指定請求方式為超文本傳輸協(xié)議(Hyper Text Transfer Protocol,HTTP)GET請求,并將clickSwitch()函數(shù)注冊為鼠標點擊事件。當(dāng)用戶點擊按鈕時,clickSwitch()函數(shù)會被觸發(fā)運行,讀取用戶動作內(nèi)容,并發(fā)送至Web服務(wù)器。采用異步JavaScript和XML(Asynchronous JavaScript And XML,AJAX)技術(shù)提交用戶請求,以實現(xiàn)向服務(wù)器發(fā)送異步請求,節(jié)約網(wǎng)絡(luò)帶寬和服務(wù)器資源,這對以STM32單片機作為低成本服務(wù)器的智能家居系統(tǒng),具有重要意義。以控制家用空調(diào)(以LED1進行模擬)為例,在頁面的“開啟時間”文本框里輸入“17”“36”(17:36),點擊開啟按鈕,此時會觸發(fā)clickSwitch()函數(shù),將“17”“36”時間值和開關(guān)指示“1”(代表要開啟電器)3個參數(shù)通過HTTP 1.1協(xié)議向Web服務(wù)器提交GET請求,假設(shè)服務(wù)器IP地址為192.168.1.101,則請求鏈接格式為http://192.168.1.101/led1?switch=1&hour=17&minute=36,學(xué)生可以通過瀏覽器調(diào)試工具直觀、形象地觀察到該用戶請求鏈接。當(dāng)用戶移動滑塊進行功率調(diào)節(jié)時,程序讀取滑塊所指示的PWM值,同時觸發(fā)clickSwitch()函數(shù)執(zhí)行,函數(shù)將PWM值以GET請求方式提交至服務(wù)器,假如PWM值為240,則請求鏈接格式為http://192.168.1.101/led1?PWM=240。
圖5 客戶端頁面關(guān)鍵代碼
基于教學(xué)成本和場地考慮,方案采用紅色LED模擬空調(diào),綠色LED模擬加濕器,藍色LED模擬電燈,LED的亮滅和亮度變化可以很好地模擬用電器的開關(guān)和相關(guān)模塊的工作電壓調(diào)節(jié)場景。同時,使用PC、家用路由器、STM32單片機、DHT11濕度傳感器、DS18B20溫度傳感器、GP2Y1014AU PM2.5傳感器等器件搭建如圖6、7所示的系統(tǒng)裝置。客戶端PC和單片機服務(wù)器通過網(wǎng)線接入路由器LAN口,傳感器和LED置于“通用”電路板上,通過杜邦線與單片機輸入、輸出(Input Output,I/O)口連接??梢?,該物聯(lián)網(wǎng)系統(tǒng)包含了完整感知層、網(wǎng)絡(luò)層、應(yīng)用層3層架構(gòu),并且架構(gòu)各層之間實現(xiàn)了松耦合。對系統(tǒng)進行功能測試時,首先用瀏覽器打開HTML用戶頁面,在“空調(diào)開關(guān)”的區(qū)域的文本框輸入時間(17:36),并開啟開關(guān)按鈕。當(dāng)系統(tǒng)時間達到所預(yù)約的定時時間后,可以觀察到,如圖7(a)所示,空調(diào)成功開啟(紅色LED點亮)。當(dāng)用戶在瀏覽器上向右移動滑塊,調(diào)節(jié)空調(diào)制冷模塊的工作電壓,紅色LED亮度增加。在服務(wù)器端,空調(diào)的工作狀態(tài)還可以由LCD顯示。如圖7(b)所示,空調(diào)(Air Conditioner,AC)的開關(guān)狀態(tài)為“On”,Power(制冷功率)狀態(tài)為“High”。LCD也正確顯示了當(dāng)前環(huán)境的溫度、濕度和PM2.5值,表明傳感器也都處于正常工作狀態(tài)。溫度、濕度和PM2.5值等數(shù)據(jù)還可以傳輸至客戶端,由瀏覽器解析并顯示,實現(xiàn)客戶端監(jiān)視。
圖6 智能家居物聯(lián)網(wǎng)系統(tǒng)裝置圖
圖7 智能家居物聯(lián)網(wǎng)系統(tǒng)感知層設(shè)備及狀態(tài)顯示
本實驗構(gòu)造了涵蓋感知層、網(wǎng)絡(luò)層和應(yīng)用層等完整架構(gòu)的物聯(lián)網(wǎng)系統(tǒng),學(xué)生不僅鍛煉了傳感電路設(shè)計、控制電路設(shè)計等基本的電工電子技能素養(yǎng),并且基于計算機網(wǎng)絡(luò)原理和前后端開發(fā)技術(shù)搭建起完整的客戶端-服務(wù)器架構(gòu),形成了專業(yè)理論的有效銜接,實現(xiàn)了多學(xué)科背景知識的融會貫通。同時,通過編寫簡單的前后端代碼、調(diào)試觀察瀏覽器請求信息,可深刻理解物聯(lián)網(wǎng)的應(yīng)用層與感知層的信息傳輸過程,觸摸物聯(lián)網(wǎng)技術(shù)本質(zhì)。
本實驗功能需求豐富多樣,采取了層次遞進、靈活要求的設(shè)計方式,以實現(xiàn)因才施教、區(qū)分教學(xué)。設(shè)定了多層次任務(wù)目標供學(xué)生靈活選擇。
基本任務(wù):使用傳感器實現(xiàn)對環(huán)境指標數(shù)據(jù)的采集,搭建用電器控制電路。
進階任務(wù):搭建完整的Web瀏覽器-Web服務(wù)器模型,并且編寫HTML用戶頁面,以實現(xiàn)客戶端控制和監(jiān)視家居系統(tǒng)。
本實驗是一個融合較多學(xué)科背景的綜合實踐,涉及知識面較廣,教學(xué)實施過程中注重詳略得當(dāng),著重加強對學(xué)生的啟發(fā)引導(dǎo),培養(yǎng)學(xué)生自主學(xué)習(xí)知識、自主解決問題的能力。比如實驗中所涉及必需但非核心知識點,比如前端設(shè)計中的HTTP協(xié)議、URL、HTML、CSS、jQueryUI庫等知識,教師會向?qū)W生推薦相關(guān)的參考書籍、網(wǎng)課等,鼓勵學(xué)生自主學(xué)習(xí);對于路由器的設(shè)置、LwIP協(xié)議移植等操作方法,向?qū)W生提供技術(shù)手冊或者開源網(wǎng)址供學(xué)生查閱參考,以鍛煉學(xué)生自主實踐動手能力。
本物聯(lián)網(wǎng)系統(tǒng)實現(xiàn)了架構(gòu)各層之間的松耦合,安裝有支持HTML標準的瀏覽器的個人電腦、平板電腦或手機均可以作為客戶端,服務(wù)器為STM32單片機,通過家用路由器或小型交換機就可以搭建以太網(wǎng)。有效降低了系統(tǒng)的搭建、測試、聯(lián)調(diào)的場地和設(shè)備要求,便于裝置的靈活部署,學(xué)生在實驗室、自習(xí)室甚至宿舍均可以進行實驗探究與操作。松耦合性還有助于學(xué)生充分發(fā)揮主觀能動性,通過發(fā)散思維,實現(xiàn)系統(tǒng)功能的進一步擴展。例如,學(xué)生嘗試將以太網(wǎng)通信方式改為Wifi無線通信方式時,僅需要在“通用”板上添加一個ESP8266模塊,并與STM32串口相連,再通過發(fā)送AT指令與路由器實現(xiàn)連接即可。本實驗所需要的器件成本較低、易于獲取,有利于推廣教學(xué)。
本實驗以日常家居場景為切入點構(gòu)建物聯(lián)網(wǎng)系統(tǒng),實現(xiàn)了客戶端監(jiān)視家居溫度、濕度、PM2.5值和定時開啟用電器并調(diào)節(jié)相關(guān)模塊的工作電壓,其功能需求貼近生活實際,可以很好地激發(fā)學(xué)生的動手興趣。由于學(xué)生對該情景比較熟悉,所以更利于學(xué)生迸發(fā)創(chuàng)新思維、實現(xiàn)功能拓展。
本文以智能家居為背景,設(shè)計了涵蓋感知層、網(wǎng)絡(luò)層和應(yīng)用層的物聯(lián)網(wǎng)系統(tǒng)實驗,學(xué)科背景知識綜合度高、覆蓋知識面廣,有助于學(xué)生專業(yè)知識的融會貫通,深刻理解掌握物聯(lián)網(wǎng)理論知識;采用層次遞進的教學(xué)方式,注重培養(yǎng)學(xué)生自主學(xué)習(xí)、自主實踐的能力;實驗系統(tǒng)各部分耦合性弱,有利于實驗的靈活擴展,各部分所采用的分立器件成本較低,利于實驗的推廣教學(xué);實驗場景貼近生活實際,可以很好激發(fā)學(xué)生動手興趣。