劉靜琦,阮煜婕,吳 勝,時 飛,周振虎,劉靜波
(南京工程學院,江蘇 南京 211167)
溫濕度是倉儲場所的重要環(huán)境參數(shù),對溫濕度的測量一般選用傳感器進行單點靜態(tài)測量[1],或在某一個區(qū)域內(nèi)布置多個節(jié)點,采用無線網(wǎng)絡方式實現(xiàn)多點溫濕度測量[2],也有采用一組總線下掛載多個傳感器進行測量的方式[3]。這些方法運行成本高,測量點布置工作量大,有線測量方式后期維護改造困難,無線組網(wǎng)多點方式則需要配置若干個無線組網(wǎng)模塊與處理器單元,特別是測量點數(shù)較多時,造價較高。因此,本系統(tǒng)采用WiFi智能小車作為載具,搭載溫濕度傳感器,遠程控制小車運行,可實時測量數(shù)據(jù),并將數(shù)據(jù)遠程傳輸至OneNET云平臺。系統(tǒng)具備遠程與超聲波避障兩種運行模式,可實現(xiàn)對倉儲場所動態(tài)多點循環(huán)測量,把傳統(tǒng)靜態(tài)測量轉(zhuǎn)變?yōu)橐欢ǚ秶鷥?nèi)的多點動態(tài)測量。系統(tǒng)選用OneNET物聯(lián)網(wǎng)云平臺,使小車具備遠程控制與數(shù)據(jù)測量傳輸功能[4],拓寬其應用范圍。
系統(tǒng)由智能小車部分及OneNET物聯(lián)網(wǎng)云平臺控制和數(shù)據(jù)傳輸部分組成。
智能小車部分采用STM32F103RCT6作為主控,借助溫濕度傳感器HDC1080測量溫濕度數(shù)據(jù)。小車組件包括底盤、電機和車輪等。電機驅(qū)動采用L298N模塊,超聲波模塊安裝于舵機控制單元,實現(xiàn)左、中、右三個方向的避障距離測量。智能小車與云平臺之間通過ESP8266模塊實現(xiàn)遠程控制與數(shù)據(jù)傳輸。
OneNET是較成熟的物聯(lián)網(wǎng)云平臺,本系統(tǒng)采用OneNET云平臺提供的網(wǎng)頁應用控件、命令下發(fā)控件等實現(xiàn)了數(shù)據(jù)接收和遠程指令下發(fā)等應用。通過網(wǎng)頁端和手機APP端的同步應用,可快速方便地構(gòu)建遠程、移動多點智能小車溫濕度測量系統(tǒng)。系統(tǒng)運行時,智能小車在遠程指令的控制下,實現(xiàn)前進、后退、轉(zhuǎn)彎,同時還會測量溫濕度數(shù)據(jù),并以間隔5 s的時間傳輸至云平臺,網(wǎng)頁和手機APP接收數(shù)據(jù)。小車動態(tài)運行,對倉儲場所實現(xiàn)多點測量。通過發(fā)送指令,可以將小車切換為超聲波避障模式,還可優(yōu)化避障程序,使小車具有更好的適應性。圖1所示為系統(tǒng)結(jié)構(gòu)。
圖1 系統(tǒng)結(jié)構(gòu)
OneNET是中國移動推出的物聯(lián)網(wǎng)開放平臺,該平臺屏蔽了復雜的技術細節(jié),提供多種協(xié)議類型,支持多種智能硬件的接入和大數(shù)據(jù)服務。用戶按照OneNET云平臺的規(guī)范接入平臺,上傳數(shù)據(jù),實現(xiàn)數(shù)據(jù)傳輸與存儲管理功能,同時平臺還支持MQTT、EDP、HTTP等接入?yún)f(xié)議[5]。用戶在官網(wǎng)注冊賬號后即可進入云平臺創(chuàng)建項目。數(shù)據(jù)上傳完成后,用戶可以在網(wǎng)頁和手機APP端查看數(shù)據(jù)和對應的變化曲線,也可以下發(fā)控制指令,控制智能設備的運行。系統(tǒng)硬件接口電路如圖2所示。
圖2 系統(tǒng)硬件接口電路
針對智能小車的分層結(jié)構(gòu),硬件設計采取模塊化設計方法。智能小車系統(tǒng)硬件分為微控制器主控單元、四驅(qū)電機驅(qū)動模塊、舵機模塊、超聲波單元模塊、溫濕度測量模塊和WiFi模塊。圖2表示了各單元與主控單元的連接,根據(jù)不同模塊的應用特點,合理分配主控單元的外設資源,實現(xiàn)對智能小車的硬件資源配置。
智能小車微控制器采用STM32F103RCT6,這是基于Cortex-M3架構(gòu)的高性能處理器[6],主頻達72 MHz,具備48 KB SRAM,256 KB FLASH,2個基本定時器,4個通用定時器,2個高級定時器,5個串口及51個通用I/O口,同時還具有ADC、SPI、DMA控制器等資源,滿足了智能小車的應用需求。高級定時器TIME8有4個通道(CH1~CH4)的PWM波形輸出,非常適用于智能小車的四輪驅(qū)動速度控制。此外,STM32F103RCT6其他定時器也為舵機驅(qū)動和超聲波信號的產(chǎn)生奠定了基礎。
ESP8266是一款高集成度的WiFi模塊,其本身是一個32位的MCU單元,可以獨立訪問網(wǎng)絡,也可以搭配其他主控芯片,幫助主控芯片接入互聯(lián)網(wǎng)[7]。ESP8266提供串口與主控芯片進行數(shù)據(jù)交換。ESP8266允許配置為熱點(AP)、客戶端(STA),熱點+客戶端(AP+STA)等三種模式,本系統(tǒng)把ESP8266配置為STA模式,連接主控芯片的串口2。該模塊通過路由器接入網(wǎng)絡,實現(xiàn)遠程控制與數(shù)據(jù)傳輸。
小車車輪電機驅(qū)動采用L298N模塊,內(nèi)含兩組雙H橋驅(qū)動器,每個L298N模塊可以驅(qū)動兩組電機,電機驅(qū)動的輸入信號由使能端EN,輸入端IN1和IN2組成。EN端一般接入主控輸出的PWM波形,控制電機的轉(zhuǎn)速,IN1和IN2接主控的2個I/O口,控制電機的正反轉(zhuǎn)。因此,選擇TIME8高級定時器的CH1~CH4通道配置4個PWM波形,PC6~PC9分別接入L298N四組EN端,電機正反轉(zhuǎn)信號接到主控芯片的I/O端口,如圖2表示。舵機接入PA8,這是TIME1的CH1通道輸出接口,輸出PWM波形控制舵機的運行。
HDC1080溫濕度傳感器具有高精度、低功耗等特點,可同時進行溫度與濕度測量,溫度精度為±0.2℃,濕度精度為±2%,采用I2C總線方式與主控芯片連接,SDA和SCL分別接主控芯片的PB11和PB10,其設備地址為0x80(寫)和0x81(讀)。
智能小車與OneNET間通過MQTT協(xié)議傳輸數(shù)據(jù),該協(xié)議支持數(shù)據(jù)雙向傳輸,實時性高,具有長時間穩(wěn)定連接等優(yōu)點[8],是為物聯(lián)網(wǎng)場景而設計的基于TCP的一種輕量級發(fā)布/訂閱消息傳輸協(xié)議??捎糜谟嬎隳芰τ邢?,低帶寬且不可靠的網(wǎng)絡遠程傳感器和控制設備[9]。設備登錄OneNET平臺后,選擇在此協(xié)議下創(chuàng)建“智能小車”產(chǎn)品,添加設備后,對智能小車的數(shù)據(jù)流進行規(guī)劃。數(shù)據(jù)流是設備屬性,可為設備單項數(shù)據(jù)屬性,也可為設備屬性的組合。本系統(tǒng)數(shù)據(jù)流根據(jù)數(shù)據(jù)傳輸方向分為兩類:
(1)上行數(shù)據(jù)流,即智能小車測量的數(shù)據(jù),主要包括連接于主控芯片I2C接口上的溫濕度傳感器HDC1080測得的溫度和濕度數(shù)據(jù)。
(2)下行數(shù)據(jù)流,即網(wǎng)頁和手機APP端發(fā)出的控制指令,通過OneNET云平臺發(fā)送給智能小車,控制小車的運行。包括前進、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止,以及運行模式的改變。這些數(shù)據(jù)流封裝為完整的數(shù)據(jù)包,通過ESP8266發(fā)送至OneNET云平臺。OneNET為數(shù)據(jù)流的封裝提供了多種形式,本系統(tǒng)采用數(shù)據(jù)類型3(TYPE=3,JSON格式)模式。
程序首先對智能小車系統(tǒng)各模塊初始化,包括串口初始化、溫濕度傳感器I2C接口初始化、電機和舵機端口初始化、電機和舵機PWM波初始化。之后,經(jīng)串口2發(fā)送AT指令給ESP8266模塊,設置ESP8266為STA模式,連接WiFi后,等待接收OneNET云平臺的回應信號,確認連接OneNET服務器。程序按照MQTT協(xié)議TYPE3格式對數(shù)據(jù)流數(shù)據(jù)進行封裝,每5 s便將測量的溫濕度數(shù)據(jù)傳輸至云平臺,同時對接收的云平臺控制指令進行解析并執(zhí)行,控制小車運行。當接收到小車運行模式改變?yōu)槌暡ū苷夏J降闹噶詈?,智能小車?zhí)行避障程序。系統(tǒng)主流程如圖3所示,數(shù)據(jù)解析流程如圖4所示,超聲波避障流程如圖5所示。
圖3 系統(tǒng)主流程
圖4 接收數(shù)據(jù)解析流程
圖5 超聲波避障流程
HDC1080的測量數(shù)據(jù)程序按照I2C協(xié)議編寫。測量函數(shù)為u8 Measure_Hdc1080(u8 mode,u16 *temp_value,u16 *humi_value),在調(diào)用此函數(shù)時,mode為模式參數(shù),mode=0x00時表示轉(zhuǎn)換開始。
完整測量溫濕度的過程:啟動總線、發(fā)送設備寫地址0x80、檢測器件應答是否正常、發(fā)送觸發(fā)測量命令字(mode)、檢測器件應答是否正常、重新啟動總線、發(fā)送設備讀地址0x81、檢測器件應答正否正常、讀高8位溫度字節(jié)、主機應答、讀低8位溫度字節(jié)、主機應答、讀高8位濕度字節(jié)、主機應答、讀低8位濕度字節(jié)、主機非應答、結(jié)束總線,最后把讀取的字節(jié)組合為完整的溫度*temp_value和濕度*humi_value。溫濕度字節(jié)數(shù)據(jù)讀取后,可以得到實際溫濕度數(shù)值,具體代碼和注釋(wendu和shidu是全局變量,用于存放讀取的溫濕度數(shù)據(jù))如下所示:
OneNET平臺為用戶提供了數(shù)據(jù)可視化應用,用戶可通過OneNET提供的可視化工具[10],根據(jù)自身需求設計用戶操作界面。OneNET創(chuàng)建的產(chǎn)品含有應用管理編輯功能,用戶可將儀表盤、折線圖、開關、命令框等控件拖拽至頁面,對每個控件的屬性和樣式進行編輯,特別是對屬性中的數(shù)據(jù)流刷新頻率、數(shù)值設置等進行配置??丶c數(shù)據(jù)流建立關聯(lián),待產(chǎn)品創(chuàng)建完成后保存并發(fā)布,用戶就可在網(wǎng)頁和手機APP端訪問OneNET平臺,接收數(shù)據(jù)并發(fā)送控制指令。本系統(tǒng)創(chuàng)建的可視化應用網(wǎng)頁端界面和手機APP端界面分別如圖6和圖7所示。
圖6 網(wǎng)頁端可視化界面
圖7 手機APP端可視化界面
智能小車的軟硬件系統(tǒng)經(jīng)過調(diào)試,搭建完成后,打開OneNET網(wǎng)頁端和手機APP端進行聯(lián)合運行,小車通過WiFi連接,登錄OneNET云平臺即可看到設備由離線狀態(tài)轉(zhuǎn)為在線狀態(tài)。此時,小車將測量的溫濕度數(shù)據(jù)上傳到網(wǎng)頁端和手機APP端。
智能小車的模式選擇由“模式選擇”開關控制,每按一次開關,智能小車切換一次運行模式。系統(tǒng)開機后,默認為遠程控制模式。當切換到超聲波避障模式時,小車在舵機的控制下,分別測量左、中、右三個方向是否有障礙物,并測量相應的距離,按照最優(yōu)程序方法選擇避開障礙。測試結(jié)果表明,傳感器采集數(shù)據(jù)準確,網(wǎng)頁和手機APP控制端運行穩(wěn)定,數(shù)據(jù)接收和指令下發(fā)功能正常??梢暬缑婵捎墒褂谜咦孕芯庉?、設計、發(fā)布,內(nèi)容簡潔,顯示效果良好。
本系統(tǒng)在智能小車上搭載溫濕度傳感器HDC1080測量數(shù)據(jù),通過ESP8266上傳數(shù)據(jù)到OneNET云平臺,構(gòu)建了遠程多點、可移動的溫濕度測量系統(tǒng)。通過OneNET云平臺創(chuàng)建了可視化應用界面,使得數(shù)據(jù)接收和下發(fā)控制指令的遠程控制變得簡單易操作。系統(tǒng)運行穩(wěn)定,功能正常,可適用于不同的場合。