周玉博
(華北科技學(xué)院電子信息工程學(xué)院,廊坊 065201)
在隧道凍結(jié)法挖掘隧道的過程中,對隧道凍結(jié)層溫度的實(shí)時(shí)監(jiān)測對于隧道挖掘工程的穩(wěn)定運(yùn)行至關(guān)重要。然而,傳統(tǒng)的有線溫度監(jiān)測方法存在著諸多問題,如安裝維護(hù)困難、需要布設(shè)大量的傳感器、數(shù)據(jù)線和電源線、設(shè)備成本高昂等[1]。鑒于隧道測溫工程的溫度采集周期較短,采用無線傳感技術(shù)實(shí)現(xiàn)隧道凍結(jié)層溫度監(jiān)測早已成為了一種新的選擇[2-3]。藍(lán)牙5.0無線技術(shù)具有高速傳輸、遠(yuǎn)距離傳輸和低能耗的特點(diǎn)[4]。與當(dāng)前測溫系統(tǒng)主流的ZigBee 無線技術(shù)相比,藍(lán)牙5.0 無線技術(shù)具有更低的功耗、更長的通信距離、更快的傳輸速度和更大的數(shù)據(jù)載量[5],能夠更好地適應(yīng)隧道環(huán)境的特殊需求。因此,藍(lán)牙5.0 無線技術(shù)在隧道凍結(jié)層測溫中具有明顯的優(yōu)勢。
目前,針對于隧道測溫應(yīng)用場景來說較為先進(jìn)的測溫方式是光纖測溫法。光纖測溫抗干擾能力強(qiáng)、抗腐蝕性強(qiáng)、傳輸距離遠(yuǎn),但由于光速度為3×108m/s,導(dǎo)致需要頻率極快的處理芯片進(jìn)行配合,而芯片工作頻率和價(jià)格成正比,故光纖測溫法系統(tǒng)整體成本過高。對于此應(yīng)用場景,需要使用一種簡單且可靠的方式,DS18B20 單總線測溫是一個(gè)非常合適的選擇,該方式使用單總線技術(shù)實(shí)現(xiàn)多個(gè)DS18B20 傳感器在同一總線上工作,方便實(shí)現(xiàn)大規(guī)模溫度監(jiān)控;采用低功耗設(shè)計(jì),通信時(shí)只需要短暫控制總線電平,完全符合本系統(tǒng)的應(yīng)用需求。
本系統(tǒng)硬件分為三部分,分別是溫度采集終端、藍(lán)牙主機(jī)網(wǎng)關(guān)和儀表顯示端。溫度采集終端由多個(gè)低功耗的采集終端進(jìn)行溫度數(shù)據(jù)采集,將數(shù)據(jù)無線轉(zhuǎn)發(fā)給網(wǎng)關(guān),網(wǎng)關(guān)通過串口將數(shù)據(jù)發(fā)送給儀表顯示控制終端。系統(tǒng)模塊結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)模塊結(jié)構(gòu)圖
該終端以nRF52832為主控,是一款由Nordic公司研發(fā)的低功耗藍(lán)牙SOC 芯片,內(nèi)置32 位ARM Cortex-M4F處理器,支持藍(lán)牙5.0、NFC-A、NFC-B 和NFC-F 等多種無線通信協(xié)議,可運(yùn)行在-40°C~85°C 的溫度范圍、5%~95%的濕度范圍等[6]。該終端使用官方藍(lán)牙5.0 協(xié)議棧進(jìn)行開發(fā),配置為低功耗藍(lán)牙從機(jī)。由電池供電,集成單總線驅(qū)動電路對單總線上多個(gè)DS18B20進(jìn)行控制,具備定時(shí)監(jiān)測、數(shù)據(jù)存儲轉(zhuǎn)發(fā)等功能,測溫終端的結(jié)構(gòu)圖如圖2所示。
圖2 測溫終端的結(jié)構(gòu)圖
圖3 從機(jī)設(shè)備廣播包
DS18B20 采用寄生供電模式,多個(gè)傳感器共同掛載在單總線上,使用單總線驅(qū)動電路提高電壓驅(qū)動能力,進(jìn)而能驅(qū)動單總線上的全部傳感器設(shè)備。
網(wǎng)關(guān)同樣以nRF52832 為主控,使用Nordic官方藍(lán)牙5.0 協(xié)議棧進(jìn)行開發(fā),配置為主機(jī),使用一主多從模式,可同時(shí)連多個(gè)測溫終端設(shè)備,形成一個(gè)星型網(wǎng)絡(luò)通訊結(jié)構(gòu)。該網(wǎng)關(guān)與STM32主控共同構(gòu)成儀表端這個(gè)整體,可被看作為儀表端的藍(lán)牙模塊,直連儀表端主控芯片的串口,與儀表端主控芯片通過串口協(xié)議進(jìn)行通訊。
儀表端以STM32F429 為主控芯片,是一款基于ARM Cortex-M4內(nèi)核的微控制器,最高工作頻率達(dá)180 MHz,內(nèi)置DMA2D 外設(shè)配合LTDC外設(shè)來提高RGB 觸摸屏的刷新率。DMA2D 是STM32 系列微控制器中的硬件加速器,它提供了高效的2D 圖像處理能力,并且能夠以非常高的速度處理圖像數(shù)據(jù)。LTDC 是一種專門設(shè)計(jì)用于控制TFT 液晶顯示器的圖形控制器,主要用于實(shí)現(xiàn)高性能、高品質(zhì)的圖像和視頻顯示。
DMA2D 主要作用是將大量的像素?cái)?shù)據(jù)以極高的速度搬運(yùn)至指定的內(nèi)存區(qū)域,即使這些區(qū)域在內(nèi)存中實(shí)際是不連續(xù)的[7]。LTDC 作用就是不停地將指定內(nèi)存區(qū)域的像素?cái)?shù)據(jù)轉(zhuǎn)換成像素點(diǎn),輸出到液晶顯示屏上,實(shí)現(xiàn)圖像的顯示。由于DMA2D 和LTDC 初始化后便自己運(yùn)行不會占用CPU 資源,對于圖像處理來說,這兩個(gè)外設(shè)配合會大大減輕CPU 的負(fù)擔(dān)并實(shí)現(xiàn)高效的圖形界面設(shè)計(jì)和顯示[8],從而通過減少可視化界面的操作卡頓來提升用戶體驗(yàn)感。
儀表端主控部分通過串口連接網(wǎng)關(guān)模塊,兩者使用JSON 數(shù)據(jù)格式進(jìn)行通信,由電池供電,使用SD 卡存儲溫度數(shù)據(jù),使用RGB 觸摸屏進(jìn)行可視化操作。
2.1.1 通訊程序設(shè)計(jì)
本系統(tǒng)測溫終端等待連接時(shí)將自身的信息以廣播包的形式發(fā)出去,廣播包的主要內(nèi)容是設(shè)備MAC 地址和31 字節(jié)的自定義數(shù)據(jù),自定義廣播數(shù)據(jù)為Flag(3 字節(jié))+128 位UUID(18 字節(jié))+設(shè)備名稱:“華北科技學(xué)院”拼音首字母大寫(8字節(jié))。
前市場上的絕大部分藍(lán)牙電子產(chǎn)品都采用mac地址連接方案,其優(yōu)點(diǎn)是適配各種藍(lán)牙設(shè)備連接,缺點(diǎn)是連接時(shí)需要在主機(jī)端操作,輸入密鑰使雙方設(shè)備進(jìn)行配對。針對本工程應(yīng)用場景:從機(jī)數(shù)量多、測溫系統(tǒng)獨(dú)立性和專用性,本系統(tǒng)采用UUID 過濾連接方案,測溫終端將某私有服務(wù)的128位UUID 寫入自定義31字節(jié)的數(shù)據(jù)包,主機(jī)通過掃描廣播包過濾到該UUID 并發(fā)起連接,此方案具備以下優(yōu)點(diǎn):
(1)所有從機(jī)設(shè)備共用同一個(gè)128 位UUID,保證了設(shè)備連接的統(tǒng)一性。
(2)自定義128 位UUID 極小可能會和別的設(shè)備UUID沖突。
(3)主機(jī)自動掃描所有符合條件的測溫終端并自動建立連接。
(4)使用靜態(tài)密鑰加密,防止其他設(shè)備配對。
2.1.2 低功耗程序設(shè)計(jì)
該測溫終端整個(gè)工程期都要連接DS18B20總線,設(shè)定每隔一段時(shí)間對總線進(jìn)行一次測溫并存儲。由于本系統(tǒng)采用電池供電,為了實(shí)現(xiàn)長時(shí)間穩(wěn)定運(yùn)行和延長電池壽命,此終端采用低功耗技術(shù)。藍(lán)牙5.0 繼承自藍(lán)牙BLE 的低功耗特性,藍(lán)牙BLE 擁有兩種低功耗模式,一種是System on 下的低功耗模式,該模式平均電流是3 μA,在系統(tǒng)空閑情況下會自動進(jìn)入,可通過任何事件脫離低功耗模式并進(jìn)入運(yùn)行狀態(tài)(自動廣播等);另外一種低功耗模式是System off 睡眠模式,由于這個(gè)模式的設(shè)備只能外部喚醒,不符合本系統(tǒng)需求,故不作概述。
對于藍(lán)牙、ZigBee 等低功耗無線產(chǎn)品來說,其工作期間消耗的電流主要來自于主從之間信息交互。分別為設(shè)備連接前的廣播和連接時(shí)的通訊。經(jīng)分析得出,在測溫終端等待其他設(shè)備連接的時(shí)候,最大的功耗就是瞬間發(fā)送的廣播,針對此情景,設(shè)計(jì)使用運(yùn)行在協(xié)議棧上的軟件定時(shí)器為廣播定時(shí),該軟件定時(shí)器是一段程序,不屬于外設(shè),所以對此終端的功耗幾乎不會產(chǎn)生影響。程序內(nèi)設(shè)置終端在一天的某個(gè)時(shí)間段開啟廣播,供網(wǎng)關(guān)設(shè)備進(jìn)行掃描連接,其余時(shí)間通過關(guān)閉廣播進(jìn)入低功耗模式來節(jié)約電量,終端程序流程如圖4所示。
圖4 測溫終端程序流程圖
2.1.3 單總線程序設(shè)計(jì)
單總線上掛載多個(gè)DS18B20 溫度傳感器設(shè)備,我們可以通過指定讀取總線上某個(gè)傳感器溫度進(jìn)而確定某位置的溫度。每個(gè)DS18B20 傳感器都有一個(gè)唯一的64位ROM 代碼,用于在多個(gè)傳感器存在的情況下區(qū)分它們。DS18B20 使用單總線通信協(xié)議(1-Wire 協(xié)議),該協(xié)議提供了ROM 搜索算法,該搜索算法采用的是二叉樹型結(jié)構(gòu),搜索過程沿各分節(jié)點(diǎn)進(jìn)行,直到找到器件的ROM 碼,即葉子為止;后續(xù)的搜索操作沿著節(jié)點(diǎn)上的其它路徑進(jìn)行,按照同樣的方式直到找到總線上的所有器件代碼。為避免每次測溫前都要搜索傳感器ROM,本系統(tǒng)程序設(shè)定為系統(tǒng)初始化時(shí)進(jìn)行ROM 搜索,并將搜索到的ROM 值通過FDS 文件系統(tǒng)存儲到芯片片內(nèi)FLASH,以便以后測溫直接調(diào)用。
網(wǎng)關(guān)設(shè)定為藍(lán)牙主機(jī),配置為一主多從模式,理論上最多可連接20 個(gè)藍(lán)牙從機(jī)(測溫終端)。該模式連接分為以下步驟:
(1)主機(jī)初始化完成后便開啟廣播包的掃描,每接收到任意廣播包后便解析廣播包內(nèi)是否有正確的128 位UUID 值,若UUID 正確主機(jī)便發(fā)起連接。
(2)建立連接后,主機(jī)分配連接句柄給從機(jī),從機(jī)接收后保存,之后主機(jī)通過與從機(jī)的連接句柄進(jìn)行從機(jī)設(shè)備的區(qū)分。對于不同主機(jī)的相同服務(wù),例如測溫服務(wù),主機(jī)創(chuàng)建一個(gè)測溫服務(wù)數(shù)組,將不同從機(jī)句柄作為數(shù)據(jù)的不同下標(biāo),以此區(qū)分不同從機(jī)的不同服務(wù),隨后發(fā)現(xiàn)并記錄該服務(wù)的特征值UUID和描述符。
(3)連接完成后,主機(jī)開始定時(shí)發(fā)送連接心跳包保持連接,并且繼續(xù)掃描其他從機(jī)設(shè)備。連接的從機(jī)設(shè)備停止發(fā)送廣播包,開始定時(shí)發(fā)送回復(fù)心跳包,之后繼續(xù)進(jìn)行其他設(shè)備廣播包的解析。主機(jī)停止掃描的條件有兩個(gè),一是連接達(dá)到規(guī)定數(shù)量的從機(jī)設(shè)備,二是到達(dá)設(shè)定的掃描時(shí)長。
如圖5所示,主機(jī)同時(shí)連接兩個(gè)從機(jī),根據(jù)連接的順序從0 開始分配連接句柄,連接后將mac地址和對應(yīng)連接句柄通過串口打印出來。
圖5 一主多從連接句柄
儀表端主控通過連接的網(wǎng)關(guān)間接對溫度采集端進(jìn)行數(shù)據(jù)的收發(fā),移植FATFS 文件系統(tǒng)配合SD 卡對溫度數(shù)據(jù)進(jìn)行模塊化存儲,移植LVGL開源圖形庫并配合RGB觸摸屏來對設(shè)備信息、溫度數(shù)據(jù)、SD 卡讀取數(shù)據(jù)等相關(guān)參數(shù)進(jìn)行顯示,移植FreeRTOS 操作系統(tǒng)來對圖形顯示任務(wù)、數(shù)據(jù)存儲任務(wù)、RTC 實(shí)時(shí)任務(wù)進(jìn)行實(shí)時(shí)調(diào)度并配合信號量、消息隊(duì)列等相關(guān)量實(shí)現(xiàn)一個(gè)實(shí)時(shí)顯示系統(tǒng)。儀表端程序流程如圖6所示。
圖6 儀表端程序流程圖
為了實(shí)現(xiàn)功耗最小化,在測溫終端等待連接的時(shí)候,將系統(tǒng)中使用的ADC、IO 口等外設(shè)統(tǒng)統(tǒng)關(guān)閉,用軟件定時(shí)器定時(shí)開啟和關(guān)閉廣播,連接到網(wǎng)關(guān)后進(jìn)行電量采集和溫度采集等服務(wù),斷開連接后繼續(xù)進(jìn)行低功耗模式。
經(jīng)測溫實(shí)驗(yàn)分析得出,睡眠階段單位時(shí)間工作電流為2.83 μA,測溫期間的單位時(shí)間的工作電流是6.91 mA,按照工程需求經(jīng)計(jì)算得出,此測溫終端平均每天的電量消耗約為2 mAh,結(jié)合圖4 的各個(gè)狀態(tài)電流消耗情況計(jì)算得出使用210 mAh的紐扣電池能供能三個(gè)月之久,由此得出此測溫終端功耗符合該工程的需求。工作期間各階段電流如圖7所示。
圖7 工作期間各階段電流
儀表通過解析串口連接的藍(lán)牙主機(jī)網(wǎng)關(guān)發(fā)送過來的JSON 格式數(shù)據(jù),將連接的測溫度端信息顯示為設(shè)備列表,可通過單獨(dú)點(diǎn)擊設(shè)備列表進(jìn)行指定采集端指令的發(fā)送和數(shù)據(jù)接收。儀表端將存儲的溫度數(shù)組通過LVGL圖形庫的圖表顯示出來,幫助工作人員更直接地進(jìn)行溫度數(shù)據(jù)分析,借此來制定工程的下一步計(jì)劃。
本系統(tǒng)能對隧道凍結(jié)層溫度進(jìn)行定時(shí)采集、無線傳輸和圖形化顯示,通過對無線和便攜式的兩個(gè)特性的開發(fā)對整個(gè)測溫系統(tǒng)最大程度地進(jìn)行了結(jié)構(gòu)的簡化,僅僅使用若干測溫總線連接低功耗溫度采集終端配合便攜儀表顯示端即解決凍結(jié)層測溫問題,解決了傳統(tǒng)有線測溫布線復(fù)雜和無線測溫功耗高的問題,完善了凍結(jié)層測溫系統(tǒng)的功能。