任 莎,姚凱學(xué),李路里,王凱鵬
(貴州大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽 550025)
在國家“四化同步”發(fā)展戰(zhàn)略的背景下,積極推進(jìn)農(nóng)業(yè)物聯(lián)網(wǎng)的應(yīng)用發(fā)展,對促進(jìn)農(nóng)業(yè)信息化和農(nóng)業(yè)現(xiàn)代化的融合具有重大意義[1-2]。農(nóng)業(yè)墑情站主要的功能是運(yùn)用各種傳感器設(shè)備對農(nóng)業(yè)墑情數(shù)據(jù)進(jìn)行采集,再通過GPRS無線通信技術(shù)將采集到的農(nóng)業(yè)墑情數(shù)據(jù)傳輸?shù)胶笈_綜合管理系統(tǒng)進(jìn)行農(nóng)業(yè)環(huán)境數(shù)據(jù)的統(tǒng)計與分析[3-5]。它能夠?qū)r(nóng)作物生長環(huán)境進(jìn)行全方位的檢測,在農(nóng)業(yè)生產(chǎn)和農(nóng)業(yè)環(huán)境的調(diào)節(jié)中起到科技保障的作用,促進(jìn)精準(zhǔn)農(nóng)業(yè)的發(fā)展[6]。但是農(nóng)業(yè)墑情站大多數(shù)用于田間野外,采用太陽能系統(tǒng)進(jìn)行供電,由于太陽能供電系統(tǒng)[7]受天氣變化影響較大,連續(xù)陰天可能會造成設(shè)備供電不足,無法正常使用,特別是貴州地區(qū)的陰雨天氣比較頻繁,更易出現(xiàn)此類情況。
持久的陰雨天氣會使得太陽能供電系統(tǒng)充電少于放電,導(dǎo)致農(nóng)業(yè)墑情站因斷電而無法工作,實(shí)驗(yàn)室農(nóng)業(yè)墑情站項(xiàng)目運(yùn)行至今,已經(jīng)在清鎮(zhèn)茶園基地、貴州省水稻研究所等地方投入使用兩年之久,均遇到過此類問題,因此研究農(nóng)業(yè)墑情站的功耗問題顯得尤為重要。文中提出了一款基于農(nóng)業(yè)墑情站的多路功耗采集系統(tǒng)[8-12],能夠?qū)崟r測量墑情站中各個模塊的功耗,為后續(xù)研究農(nóng)業(yè)墑情站的功耗優(yōu)化問題打下基礎(chǔ)。
本系統(tǒng)是在實(shí)驗(yàn)室所研發(fā)的農(nóng)業(yè)墑情站設(shè)備的基礎(chǔ)上所設(shè)計的,要求滿足以下條件:
(1)能夠采集墑情站各個模塊的功耗數(shù)據(jù)(電流、電壓數(shù)據(jù))。
(2)能夠?qū)崟r傳送所采集到的數(shù)據(jù)幀。
(3)由于功耗研究也包括了對墑情站中供電系統(tǒng)的研究,因此需要能夠同時采集光照強(qiáng)度數(shù)據(jù)及電池電壓數(shù)據(jù)。
(4)制定相應(yīng)的通信協(xié)議,完成與PC端的通訊。
系統(tǒng)主要由五部分組成:以STM32F103ZET6為核心的數(shù)據(jù)處理模塊、電流電壓檢測模塊、GPRS傳輸模塊、光照傳感器模塊以及供電模塊。系統(tǒng)的總體框圖如圖1所示。

圖1 系統(tǒng)總體框圖
系統(tǒng)的具體工作流程為:電流電壓檢測模塊將檢測到的多個墑情站模塊的電流電壓數(shù)據(jù)通過STM32F103ZET6芯片中的ADC(analog-to-digital converter,模數(shù)轉(zhuǎn)換器)進(jìn)行采集,并將采集到的電流電壓數(shù)據(jù)和光照數(shù)據(jù)按照通信協(xié)議進(jìn)行幀封裝,再通過GPRS模塊將封裝好的數(shù)據(jù)幀發(fā)送至PC端進(jìn)行顯示。由于光照傳感器的供電電壓為12 V,因此,直接使用12 V電池為系統(tǒng)進(jìn)行供電,采用降壓模塊將12 V電壓轉(zhuǎn)化為5 V電壓為STM32F103ZET6芯片及電壓檢測模塊提供電源。
系統(tǒng)的硬件設(shè)計主要分為數(shù)據(jù)處理模塊、電流檢測模塊、電壓檢測模塊、光照傳感器模塊、通信模塊以及供電模塊。系統(tǒng)硬件實(shí)物圖如圖2所示。
數(shù)據(jù)處理模塊采用STM32F103ZET6芯片作為主控MCU,主要實(shí)現(xiàn)對數(shù)據(jù)的采集和發(fā)送。STM32F103ZET6芯片中的ADC有18個通道,可以測量16個外部信號源和2個內(nèi)部信號源。使能ADC的掃描模式和連續(xù)轉(zhuǎn)換模式,通過DMA(direct memory access,直接存儲器存取)循環(huán)將每個通道測量的數(shù)據(jù)傳輸?shù)絻?nèi)存,再通過串口傳輸出數(shù)據(jù)。光照強(qiáng)度數(shù)據(jù)是通過485串口通訊的方式進(jìn)行傳輸。

圖2 系統(tǒng)硬件實(shí)物圖
測量電流選用了基于霍爾感應(yīng)原理的電流檢測專用芯片——ACS712ELCTR-05B-T[13],該芯片對應(yīng)的量程為±5 A。它是由Allegro公司推出的一種線性電流傳感器,器件內(nèi)置了精確的低偏置的線性霍爾傳感器電路,能夠輸出與檢測的交流或直流電流成正比的電壓。此芯片有很高的輸出靈敏度,響應(yīng)時間也很快,性比價高,使用方便。ACS712ELCTR-05B-T芯片采用小型的SOIC8封裝,其引腳分布如圖3所示,芯片需要5 V電源電壓進(jìn)行供電。各引腳的功能介紹如表1所示。

圖3 ACS712引腳圖

表1 ACS712引腳功能描述
ACS712ELCTR-05B-T芯片中含有一個緩沖放大器和一個電阻,能夠通過芯片的引腳6外接簡單的RC低通濾波電路降低輸出噪聲,也可以通過RC低通濾波電路來提高低電流的精確度。ACS712ELCTR-05B-T芯片具體的工作原理是通過靠近芯片表面銅制電流路徑施加的電流所生成的磁場,被芯片內(nèi)的集成霍爾IC所感應(yīng)并將其轉(zhuǎn)化為成比例的電壓,所測電流與電壓之間的對應(yīng)關(guān)系為線性,取電源電壓Vcc為5 V,則輸出電壓的計算公式為:
Vout=2.5+0.185*Ip
其中,Ip是指被測電流,當(dāng)Ip為0 A時,也就是沒有輸入被測電流的時候,對應(yīng)的輸出電壓為電源電壓的一半,即2.5 V,其中的0.185為該對應(yīng)關(guān)系的斜率,單位為V/A。
將芯片引腳5、引腳7、引腳8與STM32F103ZET6最小系統(tǒng)板對應(yīng)的引腳相連,根據(jù)農(nóng)業(yè)墑情站各個模塊的接口,設(shè)計了相應(yīng)的接線模式,方便系統(tǒng)測量功耗數(shù)據(jù)。因ACS712ELCTR-05B-T芯片輸出的數(shù)據(jù)為電壓數(shù)據(jù),所以具體的電流測量是通過STM32F103ZET6芯片的內(nèi)部ADC進(jìn)行采集,經(jīng)過數(shù)據(jù)處理后將所采集到的電壓數(shù)據(jù)轉(zhuǎn)化為電流數(shù)據(jù),再通過通訊協(xié)議進(jìn)行幀封裝,便于直觀顯示。
系統(tǒng)使用STM32F103ZET6芯片的內(nèi)部ADC進(jìn)行電壓采集,由于輸入ADC的電壓要小于3.3 V,而系統(tǒng)需測量的電壓遠(yuǎn)大于3.3 V,因此選用了能夠?qū)⑤斎腚妷褐悼s小5倍的電壓檢測芯片,它是基于電阻分壓原理設(shè)計的,其測量范圍為0 V~25 V,能夠滿足系統(tǒng)的需求。在測量時,芯片的兩個端子分別接被測電壓的正極和負(fù)極,引腳“+”接STM32最小系統(tǒng)板的3.3 V,引腳“-”接GND,引腳“s”接STM32F103ZET6芯片的AD引腳,芯片將檢測到的電壓數(shù)據(jù)通過引腳“s”輸出至STM32F103ZET6芯片的ADC。
為了研究光照強(qiáng)度和電池充電之間的關(guān)系,系統(tǒng)對光照強(qiáng)度數(shù)據(jù)進(jìn)行了采集。本系統(tǒng)選用的光照傳感器為實(shí)驗(yàn)室自己研發(fā)的傳感器,通過485串口通訊方式傳輸光照強(qiáng)度數(shù)據(jù),因此,需要RS485轉(zhuǎn)TTL芯片以實(shí)現(xiàn)光照傳感器與STM32F103ZET6芯片之間的正常通信。
為利于后期墑情站功耗優(yōu)化的研究,所以采用GPRS模塊來傳輸數(shù)據(jù)。本系統(tǒng)使用SIM800C作為通信模塊[14],SIM800C是一款四頻GSM/GPRS模塊,其性能穩(wěn)定、外觀小巧、性比價高,通過AT命令控制可以低功耗實(shí)現(xiàn)數(shù)據(jù)信息的傳輸[15]。SIM800C模塊突破了WIFI模塊只能在固定無線網(wǎng)絡(luò)范圍內(nèi)的距離局限,也打破了藍(lán)牙模塊短距離的傳輸瓶頸,只需要通過單片機(jī)連接SIM800C模塊,在有移動網(wǎng)絡(luò)信號覆蓋的環(huán)境下就能與服務(wù)器端進(jìn)行基于TCP/IP協(xié)議的點(diǎn)對點(diǎn)數(shù)據(jù)傳輸,實(shí)現(xiàn)不限距離的遠(yuǎn)程控制。SIM800C使用AT指令進(jìn)行GPRS建立TCP遠(yuǎn)程連接,AT指令過程如表2所示。

表2 建立TCP遠(yuǎn)程連接過程
為了保證光照傳感器的正常工作,供電模塊選用了可充電的12 V電源為光照傳感器進(jìn)行供電,再通過12 V轉(zhuǎn)5 V的降壓模塊為系統(tǒng)的數(shù)據(jù)處理模塊、電流檢測模塊以及通信模塊提供5 V的電源電壓。
系統(tǒng)軟件由C語言進(jìn)行編寫,具體的軟件設(shè)計流程是首先在系統(tǒng)上電后進(jìn)行一系列的初始化,主要為初始化GPIO口、鐵電、串口、定時器、中斷、GPRS等。初始化結(jié)束后,需要判斷GPRS是否聯(lián)網(wǎng)成功,如果沒有聯(lián)網(wǎng)成功,需重新配置GPRS,建立TCP遠(yuǎn)程通信,如果GPRS聯(lián)網(wǎng)成功,則進(jìn)行下一步,判斷鐵電是否清零(在上電后,鐵電所存的上一次數(shù)據(jù)可能會影響到下一次所采集到的數(shù)據(jù),因此需要將鐵電中的數(shù)據(jù)清零,準(zhǔn)備接收數(shù)據(jù),所以當(dāng)鐵電內(nèi)還存有數(shù)據(jù)時,要將鐵電中的數(shù)據(jù)清零),當(dāng)鐵電中的數(shù)據(jù)已經(jīng)清零后進(jìn)行ADC多通道采集電壓數(shù)據(jù)(因?yàn)樗杉碾娏鲾?shù)據(jù)轉(zhuǎn)化為了電壓數(shù)據(jù)進(jìn)行采集,因此只需要采集電壓數(shù)據(jù),后期再計算回電流即可),然后通過串口5采集光照傳感器數(shù)據(jù),采集數(shù)據(jù)結(jié)束后將所采集到的電壓以及光照強(qiáng)度數(shù)據(jù)按所制定的通訊協(xié)議進(jìn)行存儲,判斷數(shù)據(jù)是否存儲成功,若沒有則報錯,若存儲成功則將數(shù)據(jù)幀從鐵電中讀出通過GPRS發(fā)送后臺(PC端)進(jìn)行接收,判斷數(shù)據(jù)是否上傳(接收)成功,如果沒有成功則發(fā)送報錯指令。總體的軟件設(shè)計流程如圖4所示。

圖4 系統(tǒng)軟件流程
系統(tǒng)采集到的數(shù)據(jù),通過GPRS轉(zhuǎn)發(fā)給上位機(jī)進(jìn)行顯示,為保證數(shù)據(jù)無誤、可靠地傳送,需要制定通信協(xié)議,使系統(tǒng)實(shí)現(xiàn)總體功能。通信協(xié)議的介紹如下:
數(shù)據(jù)采用串行傳輸?shù)姆绞剑虼诵枰粋€特定的起始符來表示該串?dāng)?shù)據(jù)幀為系統(tǒng)上位機(jī)要接收的數(shù)據(jù)信息,具體的數(shù)據(jù)幀格式如表3所示。

表3 數(shù)據(jù)幀格式
START起始符標(biāo)識一幀數(shù)據(jù)的開始,大小為一個字節(jié),值固定為E1H;DATA數(shù)據(jù)域存放采集到的有效數(shù)據(jù),根據(jù)數(shù)據(jù)來改變字節(jié)的大小,其中需定義傳感器類型,如01H為電流傳感器1,02H為電壓傳感器1,03H為電流傳感器2等等;LENGTH為長度域,標(biāo)識有效數(shù)據(jù)的總字節(jié)數(shù);CRC校驗(yàn)碼采用CRC-16循環(huán)冗余校驗(yàn),大小為2個字節(jié),由LENGTH長度域到DATA數(shù)據(jù)域生成CRC校驗(yàn)碼;END結(jié)束符大小為一個字節(jié),標(biāo)識一幀數(shù)據(jù)的結(jié)束,值固定為EFH。
本系統(tǒng)測試主要為系統(tǒng)與花生殼及網(wǎng)絡(luò)調(diào)試助手進(jìn)行聯(lián)調(diào),系統(tǒng)上電后,GPRS成功聯(lián)網(wǎng),將采集到的數(shù)據(jù)實(shí)時發(fā)送至服務(wù)器,用網(wǎng)絡(luò)調(diào)試助手接收數(shù)據(jù),具體的測試結(jié)果如圖5所示。

圖5 測試結(jié)果
通過測試,系統(tǒng)能夠穩(wěn)定地傳輸采集數(shù)據(jù),每條數(shù)據(jù)間隔為0.5秒,所測得的電壓及電流值誤差為1.5%左右,能夠滿足系統(tǒng)的需求。
介紹了多路功耗采集系統(tǒng)的設(shè)計與實(shí)現(xiàn),基于墑情站的基礎(chǔ)上設(shè)計測量模塊的接口,通過STM32F103ZET6芯片中的ADC采集墑情站各模塊的功耗數(shù)據(jù)(即電流電壓檢測模塊所檢測到的電流電壓數(shù)據(jù)),按照自定義的通信協(xié)議將數(shù)據(jù)進(jìn)行幀封裝,再由GPRS模塊上傳至PC端進(jìn)行顯示。系統(tǒng)測試結(jié)果表明,該系統(tǒng)運(yùn)行穩(wěn)定,具有實(shí)時性好、響應(yīng)時間短、結(jié)構(gòu)簡單、使用方便等優(yōu)點(diǎn),具有較好的使用價值。