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