陳雨利,王曉峰
(1.北京信息科技大學(xué) 儀器科學(xué)與光電工程學(xué)院,北京 100192;2.清華大學(xué),北京 100084)
無線傳感器網(wǎng)絡(luò)[1]由大量無線傳感器節(jié)點(diǎn)組成,是一種可以實(shí)時(shí)監(jiān)測(cè)、感知和采集環(huán)境數(shù)據(jù),并通過遠(yuǎn)距離無線通信方式傳輸數(shù)據(jù)的數(shù)據(jù)信息采集技術(shù),被廣泛應(yīng)用于環(huán)境監(jiān)測(cè)、智慧城市、航空航天探測(cè)等領(lǐng)域。由于無線傳感器節(jié)點(diǎn)一般分布在人跡罕至、環(huán)境惡劣的地區(qū),或者是處于工作人員不便隨時(shí)更換電池的場(chǎng)景,所以多采用環(huán)境能量收集系統(tǒng)作為傳感器節(jié)點(diǎn)的主要供能模塊[2]。能量收集系統(tǒng)能夠?qū)⑻柲?、風(fēng)能、溫差能、振動(dòng)能等多種形式的環(huán)境能量進(jìn)行收集并轉(zhuǎn)換成電能,再將其存儲(chǔ)到鋰電池中等待后續(xù)使用。偏遠(yuǎn)地區(qū)主要以太陽能作為重要的能量收集來源,然而在黑夜或者長(zhǎng)期陰天等無法采集太陽能的情況下,便只能依靠?jī)?chǔ)存電量的鋰電池供電從而維持能量收集系統(tǒng)正常工作。一旦鋰電池電量耗盡,便需要維護(hù)人員及時(shí)更換電池,維持電量收集系統(tǒng)正常工作,否則可能造成電量收集系統(tǒng)所供電的無線傳感網(wǎng)絡(luò)出現(xiàn)不可預(yù)估的問題。所以設(shè)計(jì)一個(gè)可以在偏遠(yuǎn)地區(qū)監(jiān)測(cè)電池狀態(tài)并在遠(yuǎn)端實(shí)時(shí)顯示電池荷電狀態(tài)即剩余電量(SOC)的電池狀態(tài)監(jiān)測(cè)系統(tǒng)是十分重要的。此系統(tǒng)可以在電量耗盡前發(fā)出警告,從而提示工作人員及時(shí)更換電池,保證無線傳感網(wǎng)絡(luò)正常運(yùn)行。
傳統(tǒng)的電池管理系統(tǒng)存在本地存儲(chǔ)電池?cái)?shù)據(jù)有限和無法遠(yuǎn)程傳輸數(shù)據(jù)等問題,導(dǎo)致無法遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè)電池狀態(tài)[3]。而目前對(duì)能量收集系統(tǒng)的狀態(tài)監(jiān)測(cè)主要是實(shí)現(xiàn)電池的充放電過程控制、MPPT控制分析[4],以及通過對(duì)光伏電池板的工作電壓、電流、溫度、光照強(qiáng)度等數(shù)據(jù)進(jìn)行分析來檢測(cè)電池板是否正常工作[5-6],缺乏對(duì)電池電量的監(jiān)測(cè)。一般儲(chǔ)能鋰電池的電量監(jiān)測(cè)系統(tǒng)通常直連上位機(jī),或者利用WiFi、ZigBee等短距離通信技術(shù)進(jìn)行電池?cái)?shù)據(jù)的傳輸[7],存在傳輸距離有限等缺點(diǎn),無法滿足偏遠(yuǎn)地區(qū)電池狀態(tài)監(jiān)測(cè)的要求。因此,如何實(shí)現(xiàn)電池狀態(tài)的遠(yuǎn)距離實(shí)時(shí)監(jiān)測(cè),從而保證無線傳感節(jié)點(diǎn)正常工作,成了亟需解決的問題。
隨著物聯(lián)網(wǎng)概念的提出,多種物聯(lián)網(wǎng)技術(shù)得到快速發(fā)展,物聯(lián)網(wǎng)技術(shù)的應(yīng)用也成為了學(xué)術(shù)界與工業(yè)界的熱點(diǎn)[8]。窄帶物聯(lián)網(wǎng)(Narrow Band-Internet of Things, NB-IoT)是物聯(lián)網(wǎng)領(lǐng)域的新興技術(shù),相比傳統(tǒng)物聯(lián)網(wǎng)技術(shù)如WiFi、藍(lán)牙、ZigBee等存在數(shù)據(jù)通信距離短、通信覆蓋能力有限等問題,其具有廣域覆蓋、海量連接的優(yōu)點(diǎn),因而得到更廣泛的應(yīng)用。NB-IoT技術(shù)基于蜂窩數(shù)據(jù),理論上在有運(yùn)營(yíng)商網(wǎng)絡(luò)信號(hào)的地方就可以實(shí)現(xiàn)傳輸,無需自建網(wǎng)絡(luò),非常適合遠(yuǎn)距離數(shù)據(jù)傳輸[9]。此外,NB-IoT還具有超低功耗特性,非常適合作為低功耗設(shè)備的數(shù)據(jù)傳輸手段。結(jié)合NB-IoT的技術(shù)特性以及目前電池監(jiān)測(cè)系統(tǒng)存在的問題,我們提出了一種基于NBIoT技術(shù)的遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè)電池狀態(tài)的方法,將各傳感器采集的環(huán)境數(shù)據(jù)以及電池?cái)?shù)據(jù)通過NB-IoT技術(shù)傳輸?shù)皆破脚_(tái),并利用物聯(lián)網(wǎng)云平臺(tái)作為數(shù)據(jù)庫存儲(chǔ)海量歷史數(shù)據(jù),在自設(shè)計(jì)的手機(jī)端程序上實(shí)現(xiàn)工作環(huán)境數(shù)據(jù)和電池狀態(tài)數(shù)據(jù)的可視化,完成了超遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè)電池狀態(tài)。此設(shè)計(jì)能夠降低能量收集系統(tǒng)的運(yùn)維成本,保證系統(tǒng)正常工作,具有實(shí)際工程意義。
本系統(tǒng)主要由數(shù)據(jù)采集端、數(shù)據(jù)傳輸端、數(shù)據(jù)存儲(chǔ)端及數(shù)據(jù)可視化端組成。系統(tǒng)總體框架如圖1所示。
圖1 系統(tǒng)總體框架
數(shù)據(jù)采集端基于STM32主控芯片,利用溫濕度采集模塊、鋰電池電壓數(shù)據(jù)采集模塊、電流轉(zhuǎn)電壓信號(hào)模塊采集能量收集系統(tǒng)中鋰電池的電壓、電流數(shù)據(jù),以及采集設(shè)備所處環(huán)境中的溫濕度數(shù)據(jù),在STM32嵌入式系統(tǒng)中設(shè)計(jì)SOC算法計(jì)算得出電池電量數(shù)據(jù)。
數(shù)據(jù)傳輸端設(shè)計(jì)采用NB-IoT通信模塊,通過STM32芯片控制NB-IoT通信模塊與阿里云物聯(lián)網(wǎng)平臺(tái)建立通信連接,STM32讀取采集模塊的數(shù)據(jù)并通過串口傳輸?shù)絅B-IoT模塊再將其發(fā)送到云平臺(tái)存儲(chǔ)、展示。設(shè)計(jì)了串口轉(zhuǎn)USB通信模塊,可以在電腦串口調(diào)試助手打印輸出信息,方便系統(tǒng)調(diào)試。
數(shù)據(jù)存儲(chǔ)端采用阿里云物聯(lián)網(wǎng)平臺(tái)搭建了云端數(shù)據(jù)庫,建立規(guī)則引擎將設(shè)備上傳的數(shù)據(jù)轉(zhuǎn)發(fā)到阿里云數(shù)據(jù)庫進(jìn)行存儲(chǔ)。云數(shù)據(jù)庫可以可靠地存儲(chǔ)海量數(shù)據(jù),也更便于后續(xù)開發(fā)的手機(jī)端小程序接入。
數(shù)據(jù)可視化端則是基于阿里云物聯(lián)網(wǎng)平臺(tái)存儲(chǔ)設(shè)備傳輸?shù)奈锬P蛿?shù)據(jù)接口,設(shè)計(jì)了微信小程序接入阿里云平臺(tái),開發(fā)了當(dāng)前數(shù)據(jù)展示界面歷史數(shù)據(jù)折線圖界面及用戶登錄系統(tǒng),實(shí)現(xiàn)了遠(yuǎn)程、實(shí)時(shí)、在線監(jiān)測(cè)電池狀態(tài)。
本系統(tǒng)的數(shù)據(jù)采集模塊能夠采集電池兩端的開路電壓,本研究中還需要測(cè)量剩余電量SOC,因此需要在系統(tǒng)中設(shè)計(jì)電池電量的估算方法,這也是電池狀態(tài)監(jiān)測(cè)系統(tǒng)中最核心的部分[10]。電池剩余電量即SOC,是指電池剩余電量占額定電池容量的比值[11],如式(1)所示:
式中:Qremain為電池剩余可用電量;Qrated為電池額定的電荷容量。
由于無線傳感器的能量收集系統(tǒng)電壓變化范圍相對(duì)較小,而且要實(shí)現(xiàn)在單片機(jī)上實(shí)時(shí)檢測(cè)并計(jì)算得出電池SOC,故需選擇一種相對(duì)廣泛的SOC計(jì)算方法。查閱文獻(xiàn),對(duì)比了各種估算方法,由于電池的開路電壓(OCV)與SOC存在對(duì)應(yīng)關(guān)系[11-14],因此可以選擇開路電壓法來進(jìn)行SOC估算。這種方法首先要進(jìn)行電池開路電壓測(cè)試實(shí)驗(yàn),通過實(shí)驗(yàn)獲得電池開路電壓和SOC的對(duì)應(yīng)數(shù)據(jù),并通過數(shù)據(jù)擬合得到OCV-SOC曲線及函數(shù)關(guān)系式。當(dāng)電池靜置足夠長(zhǎng)的時(shí)間后,再次檢測(cè)電池端電壓值,通過對(duì)擬合后的OCV-SOC對(duì)應(yīng)關(guān)系計(jì)算得到電池SOC估算值。
系統(tǒng)需實(shí)現(xiàn)采集環(huán)境溫濕度數(shù)據(jù)、電池狀態(tài)數(shù)據(jù),再無線傳輸數(shù)據(jù)的功能。硬件電路主要由兩部分組成:數(shù)據(jù)采集端、數(shù)據(jù)傳輸端。
本系統(tǒng)擬采集環(huán)境溫濕度數(shù)據(jù)、電池電壓和電流數(shù)據(jù)并計(jì)算出電池SOC,因此設(shè)計(jì)了一系列數(shù)據(jù)采集電路。數(shù)據(jù)采集端電路設(shè)計(jì)包括STM32主控芯片系統(tǒng)設(shè)計(jì)、溫濕度傳感器模塊設(shè)計(jì)、鋰電池?cái)?shù)據(jù)采集電路設(shè)計(jì),數(shù)據(jù)采集端電路原理如圖2所示。由于設(shè)備應(yīng)用場(chǎng)景是對(duì)無線傳感節(jié)點(diǎn)能量收集系統(tǒng)的電源狀態(tài)進(jìn)行檢測(cè),因此需滿足低功耗要求。主控芯片采用意法半導(dǎo)體出品的STM32L151RCT6超低功耗MCU,該系列芯片運(yùn)行頻率為32 MHz,具有性能優(yōu)越的ARM Cortex-M3+32位RISC內(nèi)核,還有多種I/O及外部接口,以及內(nèi)存保護(hù)單元、高速嵌入式存儲(chǔ)器。時(shí)鐘電路是單片機(jī)的心臟,由晶振、電容、電阻組成,可控制單片機(jī)的工作時(shí)序。電源電路用于提供單片機(jī)正常工作的電源電壓,由6個(gè)去耦電容組成。由電容、開關(guān)、電阻組成的復(fù)位電路,其低電平為復(fù)位有效電平。SWD模式下載電路用于單片機(jī)燒錄程序,相比JTAG模式接線更簡(jiǎn)單,且具有在線仿真調(diào)試功能。單片機(jī)的UART2與CH340連接,實(shí)現(xiàn)串口轉(zhuǎn)USB輸出功能,可以在電腦串口調(diào)試助手打印輸出信息,方便系統(tǒng)調(diào)試。
圖2 數(shù)據(jù)采集端電路原理
溫濕度數(shù)據(jù)采集模塊選擇DHT11數(shù)字溫濕度傳感器,這是一款溫濕度復(fù)合傳感器,可以同時(shí)測(cè)量溫濕度數(shù)據(jù)。并且已經(jīng)校準(zhǔn)了數(shù)字信號(hào)輸出,無需額外經(jīng)過A/D轉(zhuǎn)換即可被單片機(jī)讀取。工作電壓范圍為3.3~5 V,溫度測(cè)量范圍可達(dá)0~50 ℃,濕度測(cè)量范圍為20%RH~95%RH。內(nèi)部設(shè)計(jì)采用一個(gè)電阻式感濕元件用于測(cè)量濕度,溫度測(cè)量則采用一個(gè)NTC測(cè)溫元件,二者再與一個(gè)性能出色的8位單片機(jī)相連接,高集成度的系統(tǒng)使用起來更加簡(jiǎn)易快捷。DHT11的VCC引腳接3.3 V,GND引腳接地,DATA引腳接入STM32芯片的PB8管腳即可直傳數(shù)據(jù)。
由于單片機(jī)自身只能采集0~3.3 V的電壓,而鋰電池最大電壓為4.32 V,設(shè)計(jì)采用飛利浦公司出品的PCF8591芯片采集電池電壓數(shù)據(jù)。PCF8591芯片是一個(gè)支持外部4路電壓輸入采集(電壓輸入范圍0~5 V),由單一電源供電的8位A/D轉(zhuǎn)換低功耗數(shù)據(jù)獲取芯片。被測(cè)電池正極接PCF8591的AIN0作為電壓輸入,芯片的SCL和SDA分別為I2C的時(shí)鐘引腳和數(shù)據(jù)引腳,通過I2C總線接口與STM32芯片通信。
系統(tǒng)還需要采集電流數(shù)據(jù),但由于單片機(jī)只能采集電壓信號(hào),因此電路采用由LM358運(yùn)算放大器和ICL7660芯片組成的電流采集模塊。LM358運(yùn)放實(shí)現(xiàn)電流檢測(cè)放大功能,ICL7660為運(yùn)放提供負(fù)電源,最終將采集的電流信號(hào)轉(zhuǎn)為電壓信號(hào)被單片機(jī)讀取。設(shè)計(jì)還利用2A升壓板作為穩(wěn)壓電源模塊,通過USB或者太陽能電池板為模塊供電。
在數(shù)據(jù)采集端將數(shù)據(jù)測(cè)出來之后還需要通過數(shù)據(jù)傳輸端進(jìn)行傳輸,數(shù)據(jù)傳輸端設(shè)計(jì)主要是NB-IoT網(wǎng)絡(luò)通信模塊外設(shè)電路設(shè)計(jì),包括模塊串口通信連接、NB-IoT天線座連接、USIM卡座連接、電源開關(guān)、復(fù)位、網(wǎng)絡(luò)指示燈等電路設(shè)計(jì)。
NB-IoT無線通信模塊是無線數(shù)據(jù)采集器與物聯(lián)網(wǎng)云平臺(tái)的連接紐帶,主要包括NB-IoT模組芯片、UART串口接口、復(fù)位、電源、射頻天線、USIM卡座、網(wǎng)絡(luò)指示燈等。為了兼容更多頻段,選擇移遠(yuǎn)多模NB-IoT模塊BC26,其支持多種主流協(xié)議[15],可滿足不同的網(wǎng)絡(luò)需求,本系統(tǒng)的BC26模塊與阿里云平臺(tái)通信選擇MQTT協(xié)議。
STM32芯片需要通過UART串口控制BC26模塊,將BC26的TXD和RXD接口與STM32的主串口相連,即可通過UART主串口通信并傳輸數(shù)據(jù)。設(shè)計(jì)PWRKEY電源開關(guān)及RESET復(fù)位電路,可以通過按鍵拉低引腳電平實(shí)現(xiàn)開機(jī)及復(fù)位功能。PSM模式是模塊省電模式,當(dāng)模塊處于省電模式時(shí)網(wǎng)絡(luò)處于斷連狀態(tài),通過拉低PSM_EINT引腳電平可將模塊喚醒。為實(shí)現(xiàn)網(wǎng)絡(luò)連接功能,還需設(shè)計(jì)射頻天線及USIM卡座等外設(shè)電路。BC26模塊原理如圖3所示。
圖3 BC26模塊原理
本系統(tǒng)軟件部分首先完成了NB-IoT模塊與阿里云平臺(tái)通信程序的設(shè)計(jì),實(shí)現(xiàn)了數(shù)據(jù)傳輸功能。數(shù)據(jù)傳輸完成后,需要對(duì)采集的數(shù)據(jù)進(jìn)行可視化處理,便于維護(hù)人員隨時(shí)隨地監(jiān)測(cè)電池狀態(tài)。因此,我們還設(shè)計(jì)了一個(gè)手機(jī)端微信小程序?qū)崿F(xiàn)數(shù)據(jù)的可視化功能。
開發(fā)環(huán)境使用Keil μVision5,采用C語言編程,使用庫函數(shù)及模塊化方式編寫代碼。NB-IoT模塊與云平臺(tái)通過AT命令交互,程序控制模塊有序發(fā)送AT命令進(jìn)行注冊(cè)設(shè)備、登錄并連接到阿里云物聯(lián)網(wǎng)平臺(tái)、訂閱Topic等,完成模塊初始化、設(shè)備接入云平臺(tái)的操作。本系統(tǒng)設(shè)計(jì)的代碼采用字符串匹配方法,確保返回字符串完全匹配才發(fā)送下一AT命令。NB-IoT模塊連接上云代碼流程如圖4所示。
圖4 NB-IoT模塊連接上云代碼流程
主程序在完成GPIO、串口、I2C、ADC_DMA等一系列配置后,使能各傳感器模塊,開啟NB-IoT模塊初始化連接定時(shí)器,循環(huán)讀取采集數(shù)據(jù)并存入Buffer緩存數(shù)組,通過串口發(fā)送到NB-IoT模塊。本系統(tǒng)NB-IoT模塊設(shè)計(jì)使用MQTT協(xié)議將數(shù)據(jù)發(fā)送到阿里云,在阿里云的物模型數(shù)據(jù)界面可實(shí)時(shí)查看上傳的數(shù)據(jù)。主程序流程如圖5所示。
圖5 主程序流程
本系統(tǒng)采用阿里云物聯(lián)網(wǎng)平臺(tái)進(jìn)行數(shù)據(jù)的接收、存儲(chǔ)及轉(zhuǎn)發(fā)。阿里云物聯(lián)網(wǎng)平臺(tái)是阿里云面向萬物互聯(lián)時(shí)代所搭建的云管理平臺(tái),提供云服務(wù)器計(jì)算服務(wù),用戶無需自建網(wǎng)絡(luò),利用兼容各種主流網(wǎng)絡(luò)協(xié)議的設(shè)備即可接入。本系統(tǒng)選擇阿里云物聯(lián)網(wǎng)平臺(tái)的主要原因是其具有低代碼、性能可靠、運(yùn)算快、安全性高的優(yōu)勢(shì),可以更好地對(duì)設(shè)備物理數(shù)據(jù)進(jìn)行分析和可視化展示。
在阿里云物聯(lián)網(wǎng)平臺(tái)上注冊(cè)產(chǎn)品及設(shè)備,獲取設(shè)備的三元組(ProductKey、DeviceName、DeviceSecret)并記錄。本系統(tǒng)還定義了云平臺(tái)數(shù)據(jù)上傳Topic和轉(zhuǎn)發(fā)接口,使得云平臺(tái)能正確解析上傳的數(shù)據(jù),便于后續(xù)微信小程序使用阿里云API讀取云平臺(tái)的物模型數(shù)據(jù),具體流程如圖6所示。
圖6 云平臺(tái)設(shè)計(jì)流程
在云平臺(tái)建立規(guī)則引擎,設(shè)置云產(chǎn)品數(shù)據(jù)流轉(zhuǎn),還可以將設(shè)備上傳的數(shù)據(jù)存儲(chǔ)到阿里云數(shù)據(jù)庫中。云數(shù)據(jù)庫不受硬件容量限制,可存儲(chǔ)海量歷史數(shù)據(jù)。
為了更清晰直觀地展示阿里云平臺(tái)存儲(chǔ)的物模型數(shù)據(jù),本文設(shè)計(jì)了一個(gè)手機(jī)端數(shù)據(jù)可視化小程序。數(shù)據(jù)可視化小程序的開發(fā)環(huán)境結(jié)合Vscode與微信開發(fā)者工具,利用HTML、CSS語言設(shè)計(jì)系統(tǒng)界面樣式,通過JavaScript語言實(shí)現(xiàn)客戶端與服務(wù)器端資源通信、數(shù)據(jù)可視化、數(shù)據(jù)業(yè)務(wù)處理等功能。開發(fā)采用B/S架構(gòu)(Browser/Server),阿里云物聯(lián)網(wǎng)平臺(tái)作為服務(wù)器端,小程序作為客戶端,云平臺(tái)與小程序通過TCP三次握手建立連接,程序發(fā)起HTTP請(qǐng)求獲取資源[16]。本系統(tǒng)使用了封裝在阿里云SDK包內(nèi)的請(qǐng)求方法,簡(jiǎn)化了使用原生Ajax請(qǐng)求的方法,大大提高了開發(fā)效率。請(qǐng)求內(nèi)容具體包括請(qǐng)求參數(shù)(請(qǐng)求動(dòng)作Action、阿里云設(shè)備三元組)、請(qǐng)求方法(POST方法)、請(qǐng)求成功或失敗的回調(diào)函數(shù)。云平臺(tái)響應(yīng)并返回一個(gè)JSON對(duì)象數(shù)據(jù)資源及狀態(tài)碼,狀態(tài)碼為200則表示成功,小程序解析JSON對(duì)象并渲染到頁面展示。原理如圖7所示。
圖7 阿里云與小程序連接原理
小程序設(shè)計(jì)了3個(gè)tab界面:第一個(gè)界面展示當(dāng)前時(shí)刻的電池?cái)?shù)據(jù)與環(huán)境溫濕度數(shù)據(jù);第二個(gè)界面是歷史數(shù)據(jù)可視化界面,引入了Echarts組件庫,用折線圖動(dòng)態(tài)表示歷史時(shí)刻的數(shù)據(jù)變化;第三個(gè)界面是用戶登錄中心,驗(yàn)證用戶身份信息后才將數(shù)據(jù)展示??傮w設(shè)計(jì)框圖如圖8所示。
圖8 小程序總體設(shè)計(jì)框圖
實(shí)驗(yàn)簡(jiǎn)單模擬了電池狀態(tài)監(jiān)測(cè)系統(tǒng)的實(shí)際使用場(chǎng)景,選取了太陽能作為能量收集系統(tǒng)的單一輸入,實(shí)驗(yàn)采用18650三元鋰離子電池作為能量收集系統(tǒng)的儲(chǔ)能鋰電池,對(duì)鋰電池進(jìn)行電池狀態(tài)監(jiān)測(cè),并觀測(cè)其在數(shù)據(jù)可視化系統(tǒng)上的顯示情況。
將各數(shù)據(jù)采集模塊、NB-IoT通信模塊、簡(jiǎn)單能量收集系統(tǒng)和鋰電池按照?qǐng)D9方式正確連接,并將移動(dòng)物聯(lián)網(wǎng)卡插入SIM卡槽,系統(tǒng)上電,對(duì)系統(tǒng)進(jìn)行數(shù)據(jù)傳輸、數(shù)據(jù)顯示測(cè)試。由于本文擬設(shè)計(jì)一個(gè)能夠進(jìn)行超遠(yuǎn)距離電池狀態(tài)監(jiān)測(cè)的系統(tǒng),因此本實(shí)驗(yàn)還測(cè)試了不同場(chǎng)景的數(shù)據(jù)傳輸情況。
圖9 系統(tǒng)實(shí)物連接
在上位機(jī)利用串口調(diào)試助手對(duì)NB-IoT模塊收發(fā)數(shù)據(jù)進(jìn)行測(cè)試,實(shí)現(xiàn)NB-IoT物聯(lián)網(wǎng)通信模塊與阿里云的通信連接。串口調(diào)試界面如圖10所示。
圖10 串口調(diào)試界面
本系統(tǒng)中阿里云物聯(lián)網(wǎng)平臺(tái)作為數(shù)據(jù)接收并存儲(chǔ)數(shù)據(jù)的平臺(tái),經(jīng)過測(cè)試,設(shè)備顯示在線,可以正常接收并顯示上傳的物模型數(shù)據(jù),阿里云平臺(tái)可以及時(shí)響應(yīng)接收設(shè)備上傳的電池?cái)?shù)據(jù)并存儲(chǔ)。阿里云展示界面如圖11所示。
圖11 阿里云展示界面
本系統(tǒng)設(shè)計(jì)了微信小程序作為遠(yuǎn)程即時(shí)監(jiān)測(cè)數(shù)據(jù)可視化端,經(jīng)過測(cè)試,微信小程序可以與阿里云平臺(tái)實(shí)時(shí)同步更新物模型數(shù)據(jù),當(dāng)前數(shù)據(jù)界面如圖12(a)所示。歷史數(shù)據(jù)折線圖每隔兩個(gè)小時(shí)記錄一次數(shù)據(jù),歷史數(shù)據(jù)界面如圖12(b)所示。
圖12 微信小程序數(shù)據(jù)界面
先將18650三元鋰電池充滿電,利用放電儀對(duì)鋰電池進(jìn)行第一次放電測(cè)試實(shí)驗(yàn),利用萬用表、庫侖計(jì)對(duì)電池各個(gè)電壓點(diǎn)的SOC數(shù)據(jù)進(jìn)行記錄,所得開路電壓與SOC值作為標(biāo)定值,并對(duì)數(shù)據(jù)進(jìn)行擬合得到OCV-SOC曲線,此后的電池SOC估算值在程序中通過擬合得到的關(guān)系進(jìn)行計(jì)算。將電池充滿電再次進(jìn)行放電實(shí)驗(yàn),取20個(gè)采樣點(diǎn)數(shù)據(jù),測(cè)試數(shù)據(jù)與實(shí)際值的對(duì)比如圖13(a)所示,插圖為電壓范圍在4.0~4.2 V區(qū)間的放大圖。表1所列為實(shí)驗(yàn)數(shù)據(jù)分析。利用美德時(shí)工業(yè)級(jí)溫濕度計(jì)對(duì)環(huán)境溫濕度進(jìn)行測(cè)量并作為實(shí)際溫濕度值。本文設(shè)計(jì)的系統(tǒng)采集所得溫濕度數(shù)據(jù)作為測(cè)量值,取10個(gè)采樣點(diǎn),測(cè)試結(jié)果與實(shí)際值曲線如圖13(b),圖13(c)所示。實(shí)驗(yàn)結(jié)果表明,實(shí)際SOC與估算SOC最大誤差不超過6%,溫度誤差最大不超過3.08%,濕度誤差最大不超過7.69%,滿足系統(tǒng)要求。
圖13 實(shí)驗(yàn)數(shù)據(jù)曲線
表1 SOC數(shù)據(jù)分析%
此外,還測(cè)試了不同場(chǎng)景下的電池狀態(tài)顯示情況,實(shí)驗(yàn)場(chǎng)景分別為:室內(nèi)、地下室、戶外。實(shí)驗(yàn)結(jié)果顯示,系統(tǒng)在有蜂窩網(wǎng)絡(luò)的場(chǎng)景下均能正確傳輸和顯示環(huán)境和電池?cái)?shù)據(jù),不受距離影響。測(cè)試結(jié)果如圖14所示。
圖14 不同場(chǎng)景下的測(cè)試結(jié)果
本文提出了一種基于NB-IoT和STM32的遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè)電池狀態(tài)的系統(tǒng),并設(shè)計(jì)了手機(jī)端小程序?qū)崿F(xiàn)數(shù)據(jù)可視化。實(shí)驗(yàn)測(cè)試結(jié)果表明,設(shè)計(jì)的系統(tǒng)可以準(zhǔn)確采集電池狀態(tài)數(shù)據(jù)以及環(huán)境溫濕度數(shù)據(jù),通過NB-IoT模塊可以穩(wěn)定可靠地將數(shù)據(jù)超遠(yuǎn)距離傳輸?shù)桨⒗镌莆锫?lián)網(wǎng)平臺(tái)存儲(chǔ),手機(jī)端的微信小程序也可以遠(yuǎn)程實(shí)時(shí)查看采集的數(shù)據(jù)。該系統(tǒng)彌補(bǔ)了當(dāng)前能量收集系統(tǒng)缺乏電池電量監(jiān)測(cè)的不足以及傳統(tǒng)電池狀態(tài)監(jiān)測(cè)系統(tǒng)數(shù)據(jù)傳輸距離有限的問題,極大降低了對(duì)無線傳感器能量收集系統(tǒng)的運(yùn)維成本,確保傳感器節(jié)點(diǎn)的可持續(xù)工作。