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