程長(zhǎng)流,田倩
(杭州寶葉環(huán)境建設(shè)有限公司,浙江杭州,311100)
物聯(lián)網(wǎng)作為智能化的核心,在農(nóng)業(yè)、工業(yè)、制造業(yè)等方面取得廣泛而深入的發(fā)展,隨著工業(yè)4.0的進(jìn)一步的發(fā)展,人們步入了智能化時(shí)代,萬(wàn)物互聯(lián)互通,一切感知單元像一個(gè)一個(gè)神經(jīng)元一樣接入物聯(lián)網(wǎng),開(kāi)啟了感知萬(wàn)物,遠(yuǎn)程操控及集群計(jì)算為特征的智能化時(shí)代。窄帶物聯(lián)網(wǎng)NB-IOT(Narrow Band -Internet of Things)是構(gòu)建物聯(lián)網(wǎng)的基礎(chǔ),它是因應(yīng)時(shí)代而生的新一代蜂窩網(wǎng)絡(luò),兼具接入容量大,超低功耗,接入成本低等優(yōu)點(diǎn)?;贜B-IOT技術(shù)構(gòu)建低功耗設(shè)備系統(tǒng)在各個(gè)領(lǐng)域廣泛應(yīng)用。與傳統(tǒng)2G網(wǎng)絡(luò)相比,具有高達(dá)1Gbps的峰值速率,意味著基于蜂窩物聯(lián)網(wǎng)的設(shè)備更多的連接數(shù)和單位設(shè)備容積率,功耗方面NB-IOT網(wǎng)絡(luò)提供了三種工作模式:DRX、eDRx和PSM,本方案選用工作在DRX模式。
本文提出一種基于NB-IOT遠(yuǎn)程環(huán)境監(jiān)測(cè)系統(tǒng)方案,方案從系統(tǒng)級(jí)別上整體考慮,在電源的引入上拋棄傳統(tǒng)的交流供電方式,采用易于就地取材的太陽(yáng)能電池板和鉛蓄電池的組合,實(shí)現(xiàn)電能的轉(zhuǎn)化與存儲(chǔ),再由轉(zhuǎn)換效率較高DCDC電源電路組成分布式的電壓拓?fù)浣Y(jié)構(gòu)供給各功能單元電路,從能源的引入到數(shù)據(jù)采集處理,再到數(shù)據(jù)的間隔發(fā)送與休眠的配合,實(shí)現(xiàn)全過(guò)程的低功耗設(shè)計(jì)。
為了實(shí)現(xiàn)方案的低功耗、綠色環(huán)保的需求,系統(tǒng)終端節(jié)點(diǎn)采用STM32L100C6為主控制器,結(jié)合太陽(yáng)能控制器、土壤溫濕度傳感器、土壤酸堿度傳感器以及電源分布控制MOS開(kāi)關(guān)芯片AMP4953K采集數(shù)據(jù),并通過(guò)NB-IOT模塊部件發(fā)送到服務(wù)端,實(shí)現(xiàn)設(shè)備長(zhǎng)期低功耗運(yùn)行,即使極端天氣情況下,連續(xù)的陰雨天氣時(shí)間長(zhǎng)達(dá)一個(gè)月以上,系統(tǒng)利用鉛蓄電池的儲(chǔ)存的電能穩(wěn)定的工作,為此系統(tǒng)低功耗設(shè)計(jì)需要以下兩方面的要求:
(1)在硬件選型方面使用低功耗設(shè)計(jì),MCU使用運(yùn)行時(shí)更低工作電流的低功耗芯片以降低處理器自身耗能,對(duì)除主控器以外的電路在設(shè)備休眠期間切斷供電電源,降低待機(jī)功耗。加大使能控制電路的阻抗降低運(yùn)行功耗。
(2)軟件方面的低功耗設(shè)計(jì),利用主控器內(nèi)嵌RTC建立時(shí)鐘系統(tǒng),每天定時(shí)從休眠狀態(tài)轉(zhuǎn)為正常運(yùn)行狀態(tài),打開(kāi)傳感器電源,采集土壤溫濕度、PH值等,通過(guò)NB-IOT模塊發(fā)送數(shù)據(jù),數(shù)據(jù)發(fā)送結(jié)束關(guān)閉除主控制器以外的所有外設(shè)電源,然后轉(zhuǎn)換為休眠狀態(tài)。
數(shù)據(jù)采集終端采用NB模塊SIM7020C、MCU芯片STM32L100C6構(gòu)成整個(gè)系統(tǒng)采集控制發(fā)送中心,通過(guò)工業(yè)RS485總線連接土壤溫濕度傳感器、土壤酸堿度傳感器以及噪聲傳感器,并通過(guò)MOS開(kāi)關(guān)芯片電路對(duì)外部傳感器設(shè)備供電,方案設(shè)計(jì)如圖1所示。
圖1 整體方案圖
為了適配土壤溫濕度、PH值傳感器的電壓,選用12V鉛蓄電池作為電源輸入,作為MCU芯片和RS485接口電路則需要3.3V的電源供應(yīng),在電源拓?fù)渖喜捎弥绷麟妷鹤儞QDCDC結(jié)合低壓差LDO電壓變換輸出,可以有效提高電源芯片的效率,降低不必要的熱功耗,實(shí)驗(yàn)驗(yàn)證電源的效率極大影響系統(tǒng)的功耗,特別是直流降壓BUCK開(kāi)關(guān)芯片在低負(fù)載、空負(fù)載輸出時(shí)效率的提高。DCDC降壓型BUCK原理如2所示。
圖2 降壓型BUCK原理圖
在BUCK建立穩(wěn)態(tài)后,電感充放電的電流是相等的,Δt=T*D是充電的時(shí)間,T*(1-D)是放電的時(shí)間,即穩(wěn)態(tài)時(shí):
T為開(kāi)關(guān)周期,D為占空比,即是開(kāi)關(guān)導(dǎo)通時(shí)間占整個(gè)周期的百分比。
根據(jù)BUCK降壓原理對(duì)電源系統(tǒng)低功耗設(shè)計(jì)有以下兩個(gè)方面值得注意的是:
(1)在低負(fù)載和空負(fù)載的情況下,電感值的大小對(duì)DCDC降壓芯片的效率較大的影響,斷開(kāi)負(fù)載情況下測(cè)試,電源系統(tǒng)的靜態(tài)電流22mA,顯然效率太低不符合系統(tǒng)要求,通過(guò)測(cè)試調(diào)整BUCK電路的電感值不斷變大,靜態(tài)電流不斷降低,最終電感值為150μH,靜態(tài)電流為35μA,此后電感值增大,靜態(tài)電流穩(wěn)定不變。
(2)對(duì)降壓芯片的周邊電路元件的要求,選擇阻值的大的電阻,可以降低電源使能輸入電流,對(duì)降低整個(gè)電源系統(tǒng)的靜態(tài)電流有一定作用,電源使能腳電阻選擇在1MΩ。
本方案低功耗設(shè)計(jì)不僅要求主控制器作為系統(tǒng)核心,能提供豐富的接口、高速的處理能力,而且要求主控器有極低靜態(tài)功耗和運(yùn)行功耗,所以選擇ST公司的超低功耗系列芯片STM32L100C6作為主控制器,該控制器是意法半導(dǎo)體公司產(chǎn)品線中高性能32-bit Cortex?-M3核心的處理器,操作頻率高達(dá)32 MHz (33.3 DMIPS),具有128K 字節(jié)flash空間,高達(dá)10K字節(jié)的內(nèi)存RAM空間,而且包含標(biāo)準(zhǔn)的通信接口:兩個(gè)I2C接口、 兩個(gè)SPI接口、三個(gè) USART接口和一個(gè) USB接口,同時(shí)包含一個(gè)片上RTC時(shí)鐘和一組備份寄存器,使芯片在待機(jī)模式下(Standby mode)以極低功耗繼續(xù)計(jì)數(shù),保持時(shí)鐘計(jì)時(shí)器的穩(wěn)定運(yùn)行與喚醒。STM32L1系列最大優(yōu)勢(shì)兼顧性能的前提下功耗進(jìn)一步降低,靜態(tài)功耗僅為0.3μA (no RTC) ,喚醒時(shí)間小于8μs。
在MCU核心電路設(shè)計(jì)方面,由于使用了片內(nèi)RTC單元,該單元需要外部接入32.768kHz晶振,對(duì)該部分電路謹(jǐn)慎選擇晶振以及起振電容,以免造成晶振不起振RTC時(shí)鐘失效的風(fēng)險(xiǎn)。從以下兩方面注意:(1)晶振選用低負(fù)載高精度晶振。(2)晶振外接的匹配電容,由于PCB層數(shù)、材質(zhì)以及走線的影響,實(shí)際選用時(shí)12.5pF電容并不能穩(wěn)定工作,經(jīng)過(guò)測(cè)試匹配電容選擇5pF時(shí),晶振電路能穩(wěn)定正常工作。
本設(shè)計(jì)選用SP3485作為RS485總線收發(fā)器控制器,工作在半雙工模式,收發(fā)切換控制通過(guò)一個(gè)簡(jiǎn)單三級(jí)管電路實(shí)現(xiàn)自動(dòng)收發(fā)控制,節(jié)省了IO接口資源也減少了軟件控制的難度。土壤溫濕度傳感器、土壤PH傳感器和噪聲傳感器等作為從設(shè)備掛接在總線上,通過(guò)設(shè)備地址響應(yīng)主設(shè)備數(shù)據(jù)請(qǐng)求。RS485接口電路設(shè)計(jì)如圖3所示。
圖3 RS485接口電路
本方案低功耗的要求系統(tǒng)對(duì)供電網(wǎng)絡(luò)進(jìn)行分配與管理,根據(jù)不同功能的電路劃分,可以分為核心主控器模塊、無(wú)線網(wǎng)絡(luò)供電模塊、傳感器采集供電模塊以及RS485總線接口供電模塊,相應(yīng)的電源需求分別是+12V、+5V、+3.3V和+3.3VA,由+12V輸入電壓經(jīng)過(guò)降壓型DCDC芯片MP1591為核心及外圍阻容組成的電路變壓到+5V,+5V再經(jīng)過(guò)兩路低壓差LDO變換到為主控器模塊供電的+3.3V,以及為RS485總線接口模塊和無(wú)線網(wǎng)絡(luò)模塊供電的+3.3VA,其中+5V作為電壓轉(zhuǎn)換的中間件不提供輸出使用,這樣設(shè)計(jì)可以避免由+12V電壓直接變換到+3.3V的電源效率降低,而造成熱功耗的增加;另一方面,開(kāi)關(guān)直流電壓變換再結(jié)合低壓差LDO的方式,為控制器模塊和網(wǎng)絡(luò)發(fā)送模塊提供了低噪聲電源,增加硬件系統(tǒng)的穩(wěn)定性。電源電路如圖4所示。
圖4 電源電路
硬件系統(tǒng)上電初始時(shí),傳感器模塊和+3.3VA的電源在使能為低狀態(tài)下處于關(guān)閉狀態(tài),系統(tǒng)中唯一的+3.3V電源為主控制器模塊供電,主控制器模塊完成初始化后,首先通過(guò)一個(gè)簡(jiǎn)單二極管電路打開(kāi)網(wǎng)絡(luò)模塊和RS485總線模塊的供電LDO使能端,然后初始化網(wǎng)絡(luò)模塊,最后打開(kāi)MOS開(kāi)關(guān)電路,經(jīng)過(guò)一段時(shí)間的延時(shí)等待傳感器模塊的電源穩(wěn)定后,主控制器模塊通過(guò)485總線發(fā)送采集數(shù)據(jù)命令并填充協(xié)議數(shù)據(jù)結(jié)構(gòu)中上傳到云平臺(tái)服務(wù)器,完成上述操作后,依次關(guān)閉傳感器和網(wǎng)絡(luò)模塊的電源并進(jìn)入休眠狀態(tài),此時(shí)主控制器模塊的功耗即是整個(gè)系統(tǒng)靜態(tài)功耗,在主控制器被定時(shí)鬧鐘喚醒后重復(fù)硬件系統(tǒng)上電初始化相同的電源時(shí)序,如此反復(fù)循環(huán)。電源管理流程圖如圖5所示。
圖5 電源管理流程圖
為了實(shí)現(xiàn)系統(tǒng)低功耗設(shè)計(jì),在軟件設(shè)計(jì)實(shí)現(xiàn)方面也兼顧功耗節(jié)約機(jī)制,軟件系統(tǒng)工作分為初始化、環(huán)境數(shù)據(jù)采集、數(shù)據(jù)發(fā)送以及低功耗處理程序。通過(guò)自定義的UDP協(xié)議,設(shè)備終端可以把采集到土壤溫濕度數(shù)據(jù)、PH值數(shù)據(jù)打包成數(shù)據(jù)幀發(fā)送到云平臺(tái)。
軟件設(shè)計(jì)上,采用模塊化設(shè)計(jì),按照功能和程序執(zhí)行的順序,把整個(gè)軟件系統(tǒng)分為系統(tǒng)初始化模塊、IOT網(wǎng)絡(luò)初始化模塊、數(shù)據(jù)采集模塊、協(xié)議填充發(fā)送模塊和低功耗處理模塊。初始化模塊完成單片機(jī)的時(shí)鐘配置、IO口配置和UART通信接口配置初始化操作,以及關(guān)閉空閑的部件的時(shí)鐘,對(duì)于空閑的IO口設(shè)置為浮空輸入,以節(jié)約系統(tǒng)能耗。初始化完成后,在程序流控制下完成IOT網(wǎng)絡(luò)初始化,首先打開(kāi) IOT網(wǎng)絡(luò)模塊的電源,然后通過(guò)串口發(fā)送AT命令,完成一系列網(wǎng)絡(luò)初始化設(shè)置,確認(rèn)網(wǎng)絡(luò)粘接成功后,循環(huán)等待獲取模塊主動(dòng)發(fā)送的網(wǎng)絡(luò)時(shí)間,獲取的網(wǎng)絡(luò)時(shí)間寫入RTC寄存器,完成自動(dòng)校時(shí)功能,同時(shí)寫入備份寄存器一個(gè)字節(jié)的標(biāo)記,記錄已完成時(shí)間校準(zhǔn),下次開(kāi)機(jī)喚醒將自動(dòng)跳過(guò)校時(shí)程序,校時(shí)程序在系統(tǒng)喚醒中起到重要的作用,也是和后臺(tái)服務(wù)器同步的基礎(chǔ)。
IOT網(wǎng)絡(luò)初始化后,程序控制打開(kāi)傳感器電源,等待電源穩(wěn)定后,開(kāi)始采集傳感器數(shù)據(jù),傳感器通道采樣周期為1s,采樣間隔為100ms,采集的數(shù)據(jù)采用平均濾波法處理。數(shù)據(jù)采集結(jié)束后,程序讀取RTC的當(dāng)前的時(shí)間與采集處理后的數(shù)據(jù)以及設(shè)備ID填充到協(xié)議的數(shù)據(jù)結(jié)構(gòu)中,然后通過(guò)AT命令控制數(shù)據(jù)包發(fā)送到云平臺(tái)的服務(wù)器。低功耗處理模塊主要完成關(guān)閉除主控制器供電模塊以外的功能模塊的電源,控制單片機(jī)進(jìn)入待機(jī)模式,此模式下整個(gè)系統(tǒng)處于休眠狀態(tài),等待設(shè)定的定時(shí)時(shí)間后自動(dòng)喚醒進(jìn)入采集發(fā)送狀態(tài),軟件設(shè)計(jì)實(shí)現(xiàn)流程如圖6所示。
圖6 軟件設(shè)計(jì)實(shí)現(xiàn)流程圖
低功耗設(shè)計(jì)中,通常由特定喚醒源控制流程,從而喚醒系統(tǒng)完成指定的操作,可以從方式上分為外部喚醒與定時(shí)喚醒,外部喚醒與單片機(jī)的特性相關(guān),設(shè)定某一管腳輸入為觸發(fā)源喚醒芯片切換工作模式;嵌入式系統(tǒng)一般工作在無(wú)人照管的區(qū)域,多采用定時(shí)喚醒來(lái)切換系統(tǒng)工作狀態(tài),在達(dá)到系統(tǒng)設(shè)置的時(shí)間后時(shí)鐘定時(shí)器觸發(fā)中斷跳出休眠狀態(tài),進(jìn)入正常的運(yùn)行工作狀態(tài)。
在軟件設(shè)計(jì)中,數(shù)據(jù)包中時(shí)間戳尤為關(guān)鍵不但記錄數(shù)據(jù)發(fā)送的時(shí)刻,還為硬件系統(tǒng)的鬧鐘定時(shí)喚醒提供基準(zhǔn)。本設(shè)計(jì)中利用了IOT通信模塊開(kāi)機(jī)主動(dòng)發(fā)送網(wǎng)絡(luò)時(shí)間的特性,在模塊開(kāi)機(jī)后軟件循環(huán)檢測(cè)收到網(wǎng)絡(luò)時(shí)間并與寫入RTC記錄中完成時(shí)間校準(zhǔn),在此基礎(chǔ)上可以設(shè)置設(shè)備每次數(shù)據(jù)發(fā)送時(shí)刻與每天數(shù)據(jù)上報(bào)的頻次。
系統(tǒng)中主控制STM32內(nèi)部有三種復(fù)位方式,分別是系統(tǒng)復(fù)位、上電復(fù)位、備份區(qū)域復(fù)位。無(wú)論哪一種復(fù)位模式,主控器電源被切斷情況下,只要保持VBAT供電,備份寄存器數(shù)據(jù)都不會(huì)被清除,所以可以利用備份寄存器保存應(yīng)用程序數(shù)據(jù)與RTC校準(zhǔn),復(fù)位后,對(duì)備份寄存器和RTC的訪問(wèn)被禁止,以防止可能存在的意外地寫操作。通過(guò)使能對(duì)備份寄存器的控制位恢復(fù)RTC的訪問(wèn),首先,設(shè)置寄存器RCC_APB1ENR的PWREN和BKPEN位來(lái)打開(kāi)電源和后備接口的時(shí)鐘,然后,電源控制寄存器(PWR_CR)的DBP位來(lái)使能對(duì)后備寄存器和RTC的訪問(wèn),系統(tǒng)在休眠模式下,備份寄存器在RTC時(shí)鐘作用下,對(duì)時(shí)鐘秒計(jì)數(shù)累加,保證了喚醒時(shí)的時(shí)間的連續(xù)性,這是系統(tǒng)長(zhǎng)期穩(wěn)定運(yùn)行的基礎(chǔ)。
本方案系統(tǒng)中,使用可擴(kuò)展的工業(yè)總線即RS485總線接口采集數(shù)據(jù),采用主從結(jié)構(gòu)訪問(wèn)總線上各個(gè)傳感器節(jié)點(diǎn),為防止采集到無(wú)效數(shù)據(jù),在程序完成初始化之后首先打開(kāi)傳感器電源,這樣等其他操作完成傳感器早已進(jìn)入了穩(wěn)定工作狀態(tài),然后再采用平均濾波算法對(duì)傳感器數(shù)據(jù)進(jìn)行處理,在1s內(nèi)完成所有的傳感器的輪詢多次采集與處理,保證了系統(tǒng)數(shù)據(jù)的精確度與實(shí)時(shí)性。
物聯(lián)網(wǎng)終端設(shè)備與服務(wù)器之間多采用TCP/IP協(xié)議,綜合考慮功耗、接入方便性等,本方案的硬件系統(tǒng)與服務(wù)器平臺(tái)采用UDP協(xié)議通信,協(xié)議采用字符串格式,具體包含協(xié)議頭($)、設(shè)備ID、數(shù)據(jù)發(fā)送時(shí)間、傳感器數(shù)據(jù)字符串集、除協(xié)議頭以外的字符串校驗(yàn)和??紤]到UDP是非握手性質(zhì)的協(xié)議,采用相同數(shù)據(jù)傳輸3次重復(fù)發(fā)送的方式避免單次傳輸可能丟包的風(fēng)險(xiǎn),經(jīng)驗(yàn)證后臺(tái)數(shù)據(jù)穩(wěn)定接收完整較好。
系統(tǒng)部件包括太陽(yáng)能板和控制器連接安裝完畢,實(shí)驗(yàn)實(shí)物圖如7所示,實(shí)驗(yàn)條件是無(wú)光照情況下,采用高精度數(shù)字萬(wàn)用表VC9801A+,該儀表串接在系統(tǒng)電源輸入端,顯示記錄系統(tǒng)實(shí)時(shí)的電流值。為了清晰地觀察系統(tǒng)整體功耗,設(shè)計(jì)了如下實(shí)驗(yàn),在實(shí)際的網(wǎng)絡(luò)環(huán)境下,采集終端設(shè)備每30秒上傳一次數(shù)據(jù),記錄11個(gè)周期的電流值,功耗分布如圖8所示。綜合實(shí)驗(yàn)數(shù)據(jù)可知采集終端設(shè)備上傳數(shù)據(jù)時(shí)最大工作電流85mA,休眠狀態(tài)下的電流為10mA。
圖7 實(shí)驗(yàn)實(shí)物圖
圖8 功耗分布圖
在無(wú)光照情況下實(shí)驗(yàn)是在模擬連續(xù)陰天情況下功耗大小,主要分析思路如下:首先,選取一個(gè)數(shù)據(jù)上傳周期根據(jù)實(shí)驗(yàn)數(shù)據(jù)計(jì)算出正常工作期間的平均電流和功耗,然后,計(jì)算出實(shí)際的使用情況下一天的功耗大小。具體步驟:(1)選取圖7的第5周期,可知一個(gè)數(shù)據(jù)上傳周期的時(shí)間為30s,休眠的時(shí)間為20s,正常工作時(shí)間里初始化系統(tǒng)時(shí)間為5s,電流大小為24mA,數(shù)據(jù)發(fā)送占用時(shí)間為5s,電流大小為85mA可以計(jì)算出正常工作平均電流為54.5mA,一次數(shù)據(jù)發(fā)送的功耗為0.15mAH。(2)硬件采集終端實(shí)際使用時(shí)一天發(fā)送兩次數(shù)據(jù),上午下午各發(fā)送一次數(shù)據(jù),發(fā)送數(shù)據(jù)的功耗為0.3mAH,設(shè)備休眠時(shí)間為23小時(shí)59分40秒,休眠期的功耗為239.9mAH,一天的總功耗為240.2mAH。
鉛蓄電池選擇12V 9000mAH的規(guī)格,設(shè)備采集終端數(shù)據(jù)上傳頻次設(shè)置為一天兩次,蓄電池放電截止電壓為10.16V,可以算出系統(tǒng)在連續(xù)陰天狀態(tài)下,沒(méi)有電量補(bǔ)充的情況下可以連續(xù)工作37.5天(9000/239.9)以上。采用的18V/10W的太陽(yáng)能板,實(shí)際的發(fā)電功率約為8W左右,實(shí)際測(cè)出充電電流為0.45A,在陽(yáng)光充足情況下20個(gè)小時(shí)即可充滿蓄電池。
本方案設(shè)計(jì)實(shí)現(xiàn)了低功耗清潔能源供電的環(huán)境采集系統(tǒng),硬件上采取了降低靜態(tài)功耗的設(shè)計(jì),特別是在電源設(shè)計(jì)與元件的參數(shù)選型上,提高了DCDC開(kāi)關(guān)降壓芯片低負(fù)載和空負(fù)載情況下的轉(zhuǎn)換效率,降低供電系統(tǒng)的自身功耗;軟件設(shè)計(jì)上配合硬件電路,在休眠狀態(tài)關(guān)閉了傳感器和發(fā)送數(shù)據(jù)模塊電源,并通過(guò)定時(shí)喚醒功能切換正常工作狀態(tài),保證系統(tǒng)低功耗下完成長(zhǎng)期的環(huán)境監(jiān)測(cè)任務(wù)。