劉巧利++賀鵬飛++周洋
摘 要:文中構(gòu)建了基于CC3200和Yeelink平臺(tái)的無(wú)線遠(yuǎn)程環(huán)境監(jiān)測(cè)與控制系統(tǒng),通過(guò)節(jié)點(diǎn)上各種不同類型的傳感器測(cè)量環(huán)境中的各項(xiàng)參數(shù),借助CC3200片上WiFi模塊和強(qiáng)大的互聯(lián)網(wǎng)安全協(xié)議實(shí)現(xiàn)自主組網(wǎng)功能,將采集到的數(shù)據(jù)通過(guò)無(wú)線傳輸方式傳送到服務(wù)器,實(shí)現(xiàn)在Internet中實(shí)時(shí)監(jiān)測(cè)環(huán)境指標(biāo)數(shù)據(jù)并進(jìn)行反饋控制?;谖锫?lián)網(wǎng)技術(shù)的遠(yuǎn)程環(huán)境監(jiān)測(cè)系統(tǒng)可與手機(jī)和平板電腦等終端互聯(lián)互通,方便靈活,可隨時(shí)加入各種傳感器,能夠適應(yīng)不同環(huán)境的監(jiān)測(cè)需求。
關(guān)鍵詞:CC3200;Yeelink平臺(tái);遠(yuǎn)程監(jiān)測(cè);反饋控制;傳感器
中圖分類號(hào):TP39 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2017)10-00-03
0 引 言
隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,環(huán)境監(jiān)測(cè)由原始的儀器設(shè)備分析向智能化的物聯(lián)網(wǎng)方向發(fā)展,實(shí)現(xiàn)了無(wú)線控制的遠(yuǎn)程環(huán)境監(jiān)測(cè)。然而傳統(tǒng)遠(yuǎn)程監(jiān)測(cè)設(shè)備存在功耗高、體積大、安裝不方便等特點(diǎn),尤其是物聯(lián)網(wǎng)應(yīng)用中遠(yuǎn)程控制設(shè)備的不完善,使其應(yīng)用場(chǎng)合受到了極大限制。為了提高系統(tǒng)工作效率,擴(kuò)大系統(tǒng)的使用范圍,降低生產(chǎn)成本,需要一種功耗低、體積小、便于移動(dòng)、安裝無(wú)需布線、使用方便快捷的新型遠(yuǎn)程監(jiān)測(cè)與控制系統(tǒng)[1]。
本文針對(duì)目前環(huán)境監(jiān)測(cè)過(guò)程中出現(xiàn)的地域限制、網(wǎng)絡(luò)不穩(wěn)定等導(dǎo)致測(cè)量參數(shù)不準(zhǔn)確的問(wèn)題,應(yīng)用CC3200芯片和Yeelink平臺(tái)實(shí)現(xiàn)數(shù)據(jù)交互與連接,溫度的遠(yuǎn)程監(jiān)測(cè)及燈光控制,使其不受時(shí)間、地域的限制[2]。軟硬件設(shè)計(jì)靈活清晰,具有很強(qiáng)的擴(kuò)展性,利用這些成果對(duì)本設(shè)計(jì)做適當(dāng)修改就能夠?qū)崿F(xiàn)各種有意義的應(yīng)用系統(tǒng)。
1 系統(tǒng)硬件設(shè)計(jì)
1.1 系統(tǒng)設(shè)計(jì)原理
本項(xiàng)目主要以CC3200芯片的內(nèi)置WiFi為依托,借助互聯(lián)網(wǎng)HTTP協(xié)議來(lái)實(shí)現(xiàn)聯(lián)網(wǎng)功能。解決了傳感器與主控芯片的數(shù)據(jù)傳輸、系統(tǒng)聯(lián)網(wǎng)方式、傳感器節(jié)點(diǎn)與物聯(lián)網(wǎng)平臺(tái)的數(shù)據(jù)傳輸、終端用戶數(shù)據(jù)的獲取等問(wèn)題,實(shí)現(xiàn)了遠(yuǎn)程監(jiān)測(cè)與控制,只要手機(jī)或電腦等手持設(shè)備連接到因特網(wǎng),通過(guò)服務(wù)器就可以實(shí)現(xiàn)手機(jī)終端對(duì)系統(tǒng)終端的監(jiān)測(cè)控制。系統(tǒng)原理如圖1所示。
1.2 物聯(lián)網(wǎng)云平臺(tái)
本項(xiàng)目采用Yeelink平臺(tái)。Yeelink是一個(gè)開放的通用物聯(lián)網(wǎng)平臺(tái),可為用戶提供傳感器云服務(wù),并通過(guò)實(shí)時(shí)數(shù)據(jù)處理提供安全可靠的狀態(tài)監(jiān)控。Yeelink獨(dú)有的高并發(fā)接入服務(wù)器和云存儲(chǔ)方案,能夠同時(shí)完成海量傳感器數(shù)據(jù)接入和存儲(chǔ)任務(wù),確保數(shù)據(jù)能夠安全保存在互聯(lián)網(wǎng)上。Yeelink平臺(tái)支持?jǐn)?shù)值型、圖像型、GPS型和泛型等多種數(shù)據(jù)的接入,并提供完備的API文檔和代碼示例。通過(guò)API接口,簡(jiǎn)單操作就能將傳感器接入Yeelink平臺(tái),實(shí)現(xiàn)傳感器數(shù)據(jù)的遠(yuǎn)程監(jiān)控[3]。在Yeelink上,數(shù)據(jù)不再是孤單的節(jié)點(diǎn),存儲(chǔ)在Yeelink的數(shù)據(jù)可以簡(jiǎn)單的被API取回,放置到個(gè)人博客上,或根據(jù)規(guī)則自動(dòng)轉(zhuǎn)發(fā)到個(gè)人指定的微博上,實(shí)現(xiàn)人與數(shù)據(jù)的全面融合[4]。
圖1 系統(tǒng)整體原理圖
1.3 CC3200 Wireless MCU
該監(jiān)測(cè)與控制系統(tǒng)的主芯片采用CC3200,它是具有內(nèi)置WiFi的MCU。CC3200器件是一個(gè)完整平臺(tái)解決方案,包括軟件、示例應(yīng)用、工具、用戶和編程指南、參考設(shè)計(jì)以及TI E2E 支持社區(qū)。FT2232芯片支持串口Flash編程,可通過(guò)PC的USB口進(jìn)行UART通信。測(cè)試用的板子內(nèi)置天線設(shè)計(jì)、2個(gè)用戶按鍵和3個(gè)LED指示燈及用于供電和調(diào)試的Micro USB接口、加速度和溫度傳感器、電流測(cè)量接口等[3]。
作為業(yè)界第一個(gè)具有內(nèi)置WiFi連通性的單片微控制器單元(MCU),CC3200有著優(yōu)良的特性:
(1)擁有業(yè)界最低的功耗,適用于電池供電式設(shè)備;
(2)高靈活性,CC3200的集成型可編程ARM Cortex?-M4 MCU允許用戶添加其特有的代碼;
(3)可利用快速連接、云支持和片上WiFi、互聯(lián)網(wǎng)和安全協(xié)議實(shí)現(xiàn)針對(duì)IoT的簡(jiǎn)易開發(fā);
(4)能夠采用某種手機(jī)或平板電腦應(yīng)用程序或網(wǎng)絡(luò)瀏覽器簡(jiǎn)單且安全地將其設(shè)備連接至WiFi[3]。
正是基于這些優(yōu)良特性,CC3200才能被廣泛用于物聯(lián)網(wǎng)應(yīng)用,如家庭自動(dòng)化、家用電器訪問(wèn)控制、安防系統(tǒng)、互聯(lián)網(wǎng)網(wǎng)關(guān)、IP網(wǎng)絡(luò)傳感器節(jié)點(diǎn)等,具有廣闊的發(fā)展前景。
2 系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件設(shè)計(jì)采用分層次和模塊化的設(shè)計(jì)思想,從簡(jiǎn)單的基本設(shè)備管理到無(wú)線網(wǎng)絡(luò)配置,及BSD Socket服務(wù)與更多其他功能。這些功能被歸類為不同的組件,每個(gè)組件具有不同的功能。其中包括設(shè)備(Device),WLAN連接,Socket通信,網(wǎng)絡(luò)應(yīng)用(NetApp),網(wǎng)絡(luò)參數(shù)配置(Netcfg),文件系統(tǒng)(FS)等,各組件的功能見表1所列。
以上各個(gè)組件獨(dú)立進(jìn)行封裝,通過(guò)驅(qū)動(dòng)調(diào)用各種功能。在驅(qū)動(dòng)上分出外設(shè)抽象層,使得程序調(diào)用更簡(jiǎn)單,可實(shí)現(xiàn)功能的透明化。如果使用嵌入式操作系統(tǒng),還可以添加OS抽象層,使得系統(tǒng)便于調(diào)用底層驅(qū)動(dòng)以及各種功能函數(shù)[5]。使用紅外非接觸式溫度傳感器,若采用I2C接口與CC3200通信,則需要調(diào)用I2C驅(qū)動(dòng),因此它屬于Device模塊。WiFi接入WLAN模塊,HTTP通信屬于Socket和Net App模塊,數(shù)據(jù)的本地存儲(chǔ)屬于文件系統(tǒng)(FS)模塊。
系統(tǒng)執(zhí)行包括CC3200初始化、網(wǎng)絡(luò)連接初始化、溫度傳感器TMP006以及LED初始化、HTTP Client初始化、連接云平臺(tái)上傳溫度數(shù)據(jù)及控制信息的獲取,最后執(zhí)行控制。系統(tǒng)執(zhí)行流程如圖2所示。
2.1 系統(tǒng)初始化設(shè)計(jì)
為確保系統(tǒng)上電能夠正常運(yùn)行,需要對(duì)CC3200進(jìn)行初始化配置。CC3200初始化的過(guò)程比較復(fù)雜,初始化會(huì)調(diào)用系統(tǒng)函數(shù),包括促使系統(tǒng)運(yùn)行的底層驅(qū)動(dòng)。具體流程為:設(shè)置向量標(biāo)記地址,使能處理器,使能系統(tǒng)中斷,配置系統(tǒng)時(shí)鐘,配置DMA,使能實(shí)時(shí)時(shí)鐘RTC,設(shè)置SWD模式,重寫JTAG線程,使能軟復(fù)位,關(guān)閉休眠[6]。endprint
2.2 網(wǎng)絡(luò)連接的初始化設(shè)計(jì)
為確保系統(tǒng)能夠正常連接網(wǎng)絡(luò),需要對(duì)CC3200網(wǎng)絡(luò)連接進(jìn)行初始化配置。初始化會(huì)調(diào)用網(wǎng)絡(luò)連接相關(guān)函數(shù),包括WLAN連接,網(wǎng)絡(luò)配置等相關(guān)驅(qū)動(dòng)[7]。首先,配置系統(tǒng)進(jìn)入默認(rèn)狀態(tài),選擇進(jìn)入station模式后,獲取設(shè)備版本信息,設(shè)置WLAN連接策略,使能DHCP客戶端,設(shè)置發(fā)射功率,設(shè)置電源管理策略。最后,初始化變量獲取SSID參數(shù),連接WLAN即可。當(dāng)無(wú)法進(jìn)入station模式時(shí),我們就要轉(zhuǎn)換模式,使系統(tǒng)重新進(jìn)入默認(rèn)狀態(tài)。
2.3 溫度傳感器TMP006的配置
溫度傳感器采用TMP006。TMP006為非接觸式溫度傳感器,具有2.2~5.5 V的輸入電壓范圍,8位可編程地址,本設(shè)計(jì)采用的TMP006地址默認(rèn)為0x41。工作時(shí)電流消耗僅為240 μA,通過(guò)I2C串行總線接口與CC3200通信[8]。I2C串行總線有兩根信號(hào)線,一根為雙向數(shù)據(jù)線SDA,另一根為時(shí)鐘線SCL。所有接到I2C總線設(shè)備上的串行數(shù)據(jù)SDA都接到總線的SDA上,各設(shè)備的時(shí)鐘線SCL接到總線的SCL上。
為正確讀取傳感器數(shù)據(jù),首先通過(guò)I2C接口函數(shù)對(duì)TMP006的MANUFAC_ID 和DEVICE_ID 進(jìn)行驗(yàn)證,驗(yàn)證通過(guò)才能讀取傳感器值,經(jīng)處理、計(jì)算后變?yōu)闇囟戎怠?/p>
2.4 HTTP Client初始化
數(shù)據(jù)要上傳到物聯(lián)網(wǎng)云平臺(tái)。物聯(lián)網(wǎng)云平臺(tái)是一種服務(wù)器,規(guī)定了數(shù)據(jù)的傳輸協(xié)議并給出了與數(shù)據(jù)交互相關(guān)的API,協(xié)議規(guī)定使用HTTP進(jìn)行連接和數(shù)據(jù)交互。要使用HTTP,需對(duì)HTTP Client進(jìn)行初始化操作。本設(shè)計(jì)中主要采用了GET和POST兩種方式對(duì)數(shù)據(jù)進(jìn)行操作。GET一般用于獲取/查詢資源信息,而POST一般用于更新資源信息。因此只需定義GET和 POST方式即可。
2.4.1 定義GET
在HTTP請(qǐng)求中,第一行必須是一個(gè)請(qǐng)求行(Request Line),用來(lái)說(shuō)明請(qǐng)求類型、要訪問(wèn)的資源以及使用的HTTP版本。緊接著是一個(gè)首部(Header)小節(jié),用來(lái)說(shuō)明服務(wù)器要使用的附加信息。在首部之后是一個(gè)空行,再此之后可以添加任意其他數(shù)據(jù),稱之為主體,HTTP請(qǐng)求后,服務(wù)器會(huì)對(duì)請(qǐng)求做出響應(yīng)。在請(qǐng)求之前,HTTP Client把這些信息封裝起來(lái),最后調(diào)用Socket通信接口發(fā)送給服務(wù)器。
2.4.2 定義 POST
POST同樣包含請(qǐng)求和響應(yīng),POST方式同時(shí)可把數(shù)據(jù)傳輸給服務(wù)器,本設(shè)計(jì)提交的數(shù)據(jù)為JSON格式,利用數(shù)組進(jìn)行存儲(chǔ)。POST的方式包含與GET方式相同的頭部信息,只是在最后把溫度數(shù)據(jù)信息封裝在BODY里[9]。
2.5 連接云平臺(tái)及數(shù)據(jù)交互
使用公共物聯(lián)網(wǎng)云平臺(tái)。該平臺(tái)傳輸?shù)臄?shù)據(jù)為JSON格式,平臺(tái)為用戶提供一些API,使用的API包括創(chuàng)建數(shù)據(jù)點(diǎn)和查看數(shù)據(jù)點(diǎn)。
2.5.1 創(chuàng)建數(shù)據(jù)點(diǎn)
對(duì)該URL的一個(gè)HTTP POST請(qǐng)求會(huì)為指定的傳感器創(chuàng)建一個(gè)新的數(shù)據(jù)點(diǎn),使用此API來(lái)為傳感器存儲(chǔ)歷史數(shù)據(jù)。數(shù)據(jù)格式為JSON,即一個(gè)datapoint是由key和value組成的鍵值對(duì),key為timestamp, value為數(shù)值,請(qǐng)求方式為POST,返回值為HTTP Headers Only,需要在HTTP Header中增加API Key來(lái)授權(quán)寫入操作。
2.5.2 查看數(shù)據(jù)點(diǎn)
對(duì)該URL的請(qǐng)求返回指定key的datapoint,若未指定key,則返回該sensor的最新數(shù)據(jù),請(qǐng)求方式為GET,返回值為請(qǐng)求的傳感器信息,返回值數(shù)據(jù)格式為JSON。在訪問(wèn)數(shù)據(jù)和創(chuàng)建數(shù)據(jù)之前,需要在物聯(lián)網(wǎng)云平臺(tái)注冊(cè)用戶,并創(chuàng)建設(shè)備和傳感器,這樣可以獲取對(duì)應(yīng)API Key。
2.6 執(zhí)行控制結(jié)果
在通過(guò)GET和POST方式請(qǐng)求信息之后,服務(wù)器都會(huì)返回對(duì)應(yīng)的信息,當(dāng)通信成功且被云平臺(tái)接受之后,服務(wù)器會(huì)返回具體的操作信息。上傳溫度數(shù)據(jù)之后服務(wù)器會(huì)確認(rèn)上傳成功。請(qǐng)求LED開關(guān)狀態(tài)之后,服務(wù)器返回LED的亮滅狀態(tài)。在本設(shè)計(jì)中,主要完成對(duì)LED狀態(tài)的控制,因此,板載LED顯示的狀態(tài)即為服務(wù)器上的狀態(tài)??刂贫耸褂肁ndroid App修改LED狀態(tài)信息,即可改變LED的亮滅??刂芁ED調(diào)用CC3200 GPIO修改IO口的輸出狀態(tài)。時(shí)序如圖3所示。
3 系統(tǒng)功能測(cè)試
系統(tǒng)功能測(cè)試包括上行測(cè)試和下行測(cè)試。上行主要為監(jiān)測(cè),指溫度傳感器數(shù)據(jù)從CC3200發(fā)往服務(wù)器,手機(jī)App從服務(wù)器下載數(shù)據(jù),然后以曲線形式表現(xiàn)出來(lái)。下行主要為控制,是指用戶通過(guò)手機(jī)App或電腦訪問(wèn)服務(wù)器,控制指示燈的開閉。
3.1 上行測(cè)試
首先通過(guò)USB對(duì)電路板供電,然后打開Android端Yeelink平臺(tái)并登錄,一段時(shí)間后查看,數(shù)據(jù)以曲線形式表示,如圖4所示。橫坐標(biāo)表示時(shí)間,縱坐標(biāo)表示溫度,曲線上每一個(gè)點(diǎn)都是對(duì)應(yīng)時(shí)刻室內(nèi)的溫度。此次測(cè)試是在夏季,我們選擇室內(nèi)環(huán)境,截取了早上7點(diǎn)到下午1點(diǎn)間得到的數(shù)據(jù)。
3.2 下行測(cè)試
通過(guò)手機(jī)App登錄Yeelink平臺(tái),規(guī)定在按下手機(jī)控制按鈕5 s之內(nèi)LED燈做出正確反應(yīng)則為成功,否則為失敗。經(jīng)過(guò)600次測(cè)試,控制過(guò)程基本準(zhǔn)確,統(tǒng)計(jì)數(shù)據(jù)見表2所列。
4 結(jié) 語(yǔ)
本文設(shè)計(jì)開發(fā)了基于CC3200的遠(yuǎn)程環(huán)境監(jiān)測(cè)與燈光控制系統(tǒng),在Yeelink平臺(tái)上實(shí)現(xiàn)了無(wú)線遠(yuǎn)程監(jiān)控,不論手機(jī)或電腦都可實(shí)現(xiàn)靈活操作。在系統(tǒng)架構(gòu)上,實(shí)現(xiàn)了參數(shù)的遠(yuǎn)程信息采集,以太網(wǎng)和3G移動(dòng)通信的接入方式,云計(jì)算和Web服務(wù)器發(fā)布數(shù)據(jù)及數(shù)據(jù)的監(jiān)控與共享。在此控制基礎(chǔ)上,還可以實(shí)現(xiàn)更多功能,如測(cè)空氣濕度、攝像頭監(jiān)控等,對(duì)工農(nóng)業(yè)的發(fā)展有實(shí)際意義。
參考文獻(xiàn)
[1]陳穎瑩.芯片上的網(wǎng)絡(luò)TI SimpleLink Wi-Fi讓聯(lián)網(wǎng)如此簡(jiǎn)單[J].電子技術(shù)應(yīng)用,2014,40(7):2.
[2] TI推出新型SimpleLink Wi-Fi CC3100和CC3200平臺(tái)[EB/OL].[2014-06-17]. http://products.eccn.com/products_2014061714321497.htm.
[3] Texas Instruments Inc. CC3200 SimpleLinkTM Wi-Fi? and Internet-of-Things solution, a single-chip wireless MCU [EB/OL].[2015-02-01].http://www.ti.com/lit/ds/symlink/cc3200.pdf.
[4]申斌,張桂青,汪明,等. 基于物聯(lián)網(wǎng)的智能家居設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化與儀表,2013,28(2):6-10.
[5] MARTIN T. The designers guide to the Cortex-M processor family: a tutorial approach[M]. Amsterdam: Elsevier Ltd,2013:109-131.
[6]郭書軍.ARM Cortex-M4 + Wi-Fi MCU 應(yīng)用指南[M].北京:電子工業(yè)出版社,2015.
[7]姚文祥.ARM Cortex-M3與Cortex-M4權(quán)威指南:第3版[M].吳常玉,等,譯.北京:清華大學(xué)出版社,2015.
[8] Texas Instruments Inc. CC3100/CC3200 SimpleLinkTM Wi-Fi? Internet-on-a-chip users guide[EB/OL].[2016-03-01].http://www.ti.com/lit/ug/swru368a/swru368a.pdf.
[9]耿興隆,張瑩,薛玉倩.PHP 基礎(chǔ)與案例開發(fā)詳解[M].北京:清華大學(xué)出版社,2015.endprint