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