郝 秀, 應(yīng) 駿
(上海師范大學(xué) 信息與機電工程學(xué)院,上海 200234)
通過調(diào)研發(fā)現(xiàn),在溫差電池的研發(fā)過程中,科研人員需要長期對溫差電池的冷熱源溫度及其電池產(chǎn)生的開路電壓,在不同季節(jié)、不同環(huán)境、不同時段進(jìn)行實時監(jiān)控以及數(shù)據(jù)記錄[12]。為了減小研究代價提高科研效率,功能完備的電池在線監(jiān)測系統(tǒng)顯得十分必要。因此,根據(jù)需求,本文設(shè)計融合多種通信方式、高精度、高靈活性的溫差電池在線監(jiān)測系統(tǒng)。系統(tǒng)由采樣模塊,通信模塊和相關(guān)軟件組成。在設(shè)計過程中,充分考慮到溫差電池在線監(jiān)測系統(tǒng)的智能化發(fā)展方向、遠(yuǎn)程集中管理和在線維護(hù)的發(fā)展趨勢[4,5]。
在線監(jiān)測系統(tǒng)的采集終端由單片機(microcontroller unit,MCU)主控,無線局域網(wǎng)(WiFi)通信模塊,信號橋接電路,電源模塊組成。搭建Openfile作為云服務(wù)器,并部署數(shù)據(jù)庫,監(jiān)測終端則有個人計算機(personal computer,PC)端Spark軟件或者安卓APK兩種選擇。前端信號為1路溫差片輸出電壓信號以及貼在溫差片兩側(cè)的Pt1000溫度傳感器通過惠斯通電橋轉(zhuǎn)換的電壓信號輸入STM32的SDADC。系統(tǒng)總體框架如圖1所示。
圖1 系統(tǒng)總體框圖
系統(tǒng)主控選用STM32F373,其SDADC的采樣精度達(dá)到16 bit高于普通MCU,高性能,資源豐富。WiFi采用安信可科技生產(chǎn)的高性價比,與物聯(lián)網(wǎng)領(lǐng)域應(yīng)用度很高的模塊ESP8266[6]。WiFi的電源受STM32控制,可以根據(jù)不同采樣傳輸頻率執(zhí)行不同的休眠策略,降低系統(tǒng)功耗。
在電源方面,除了給處理器供電,還需要產(chǎn)生精確的正負(fù)參考電壓Vref,模擬電壓部分原理如圖2所示,由于溫差電池的兩側(cè)溫度差可能出現(xiàn)反轉(zhuǎn),因此需要支持負(fù)電壓采樣(動態(tài)范圍-1~+1 V),故運算放大器SGM8552X88的輸入電壓為信號電壓Vin加上1.2Vref,STM32的SDADC分別對VolADC和1.2Vref進(jìn)行采樣之后再取差值,可以消除共模干擾[7]。
圖2 模擬電路原理
系統(tǒng)軟件主要包括ESP8266程序與STM32程序兩個部分。兩個芯片均搭載FreeRTOS實時操作系統(tǒng),模塊間的通信采用UART,并自定了AT_Command命令來作為信息交互協(xié)議[8]。在系統(tǒng)啟動時,STM32通過串口進(jìn)行配置ESP8266需要的目標(biāo)AP的信息,服務(wù)器的IP和Domain等信息。STM32軟件框架如圖3所示,主要功能包括:接收用戶通過串口配置網(wǎng)絡(luò)信息并將網(wǎng)絡(luò)信息寫進(jìn)Flash,開機上電對WiFi模塊進(jìn)行初始化,按照一定頻率采集溫度和電壓信息,將采集的信息通過通用非同步收發(fā)器(universal asynchronous receiver/transmitter,UART)傳輸給WiFi模塊,并接收來自遠(yuǎn)程客戶端的命令。命令包括采樣頻率的設(shè)置,實時查詢電壓和溫度值。
圖3 STM32軟件框圖
ESP8266軟件主要分為兩個線程,網(wǎng)絡(luò)線程以及消息處理線程,兩個線程之間通過消息隊列通信,當(dāng)UART收到主控消息或者網(wǎng)絡(luò)線程收到服務(wù)器的消息均通過消息隊列發(fā)送到消息處理線程集中處理。
網(wǎng)絡(luò)線程主要是負(fù)責(zé)保持WiFi連接以及與服務(wù)器的連接。Socket采用TCP/IP的方式,應(yīng)用層協(xié)議采用XMPP。該線程實現(xiàn)了XMPP登錄,添加好友請求處理,發(fā)送消息(message),發(fā)送狀態(tài)信息(presence),服務(wù)器心跳包處理等功能。線程采用阻塞方式讀取網(wǎng)絡(luò)數(shù)據(jù),設(shè)置讀取超時機制,由于服務(wù)器設(shè)置為每隔120 s客戶端(idle client)發(fā)送ping包,考慮網(wǎng)絡(luò)延時,故將讀取超時時間設(shè)置為150 s,如果超時則重新連接服務(wù)器[9]。讀取到數(shù)據(jù)之后,對數(shù)據(jù)進(jìn)行解析,如果是ping包或者添加好友請求則回復(fù)請求,自定義消息則發(fā)送到消息軟件流程如圖4所示[10]。
圖4 Esp8266軟件框圖
消息處理線程主要負(fù)責(zé)處理來自服務(wù)器的自定義命令,包括查詢軟件版本,查詢當(dāng)前溫度和電壓,設(shè)置采樣間隔等,以及處理來自UART的配置命令以及發(fā)送消息,發(fā)送狀態(tài)信息等請求,軟件流程如圖3所示。 ESP8266為整個系統(tǒng)的應(yīng)用消息收發(fā)中心,無論STM32還是遠(yuǎn)程客戶端與其通信均用同一種AT_Command命令,如果消息是WiFi模塊自身支持的命令則執(zhí)行,否則就轉(zhuǎn)發(fā)給MCU或者服務(wù)器。部分命令格式定義如下:
#define AP_INFO “AT+SET+SSID:%s;PWD:%s” ∥配置WiFi熱點信息命令
#define SET_IP “AT+SET+DOMAIN:%s;IP:%s” ∥配置服務(wù)器信息
#define SEND_MSG “AT+SET+MSG:%s” ∥發(fā)送消息已添加好友
#define CHANGE_PRE “AT+SET+PRE=%s” ∥改變設(shè)備狀態(tài)信息
#define GET+VOL “AT+GET+VOL” ∥獲取當(dāng)前電壓值
該監(jiān)測系統(tǒng)的測試環(huán)境是在浙江大學(xué)材料實驗室,溫差電池嵌入墻體,通過室內(nèi)外的溫度差來產(chǎn)生電壓,設(shè)計了監(jiān)控界面為PC端的Spark軟件,監(jiān)控賬號ID為Sensor,1#設(shè)備為采集設(shè)備的ID,其中狀態(tài)信息為WiFi模塊的16進(jìn)制介質(zhì)訪問控制(media access control,MAC)地址,用以區(qū)分設(shè)備,會話界面為采集設(shè)備每隔10 min上傳1次監(jiān)測信息,T1,T2分別為溫差電池兩側(cè)溫度,其中T2為室內(nèi)空調(diào)控制溫度,V為輸出電壓,該系統(tǒng)可以幫助科研人員分析不同的季節(jié)不同天氣不同時間段的數(shù)據(jù),大大減少測試和收集數(shù)據(jù)工作量。
如圖5所示,為一天各時段的數(shù)據(jù)信息,可見溫度之間差值大。
圖5 采集數(shù)據(jù)曲線
本文解決了溫差電池科研人員需要對電池的狀態(tài)進(jìn)行長期不間斷監(jiān)測,數(shù)據(jù)需要長期記錄的問題,設(shè)計了一種基于物聯(lián)網(wǎng)功能完備的高精度、高靈活性溫差電池在線監(jiān)測系統(tǒng)。遠(yuǎn)程監(jiān)控界面也大大減小了科研人員對于溫差電池的研究代價,提高科研效率。但目前的設(shè)計仍存在一定改進(jìn)之處,在目前的系統(tǒng)中,供電方式仍采用外部供電,如果功耗能達(dá)到一定的量級,采用溫差電池儲能的方式自供電,那么監(jiān)測系統(tǒng)的應(yīng)用會更具實用價值。