徐鵬飛,馬國(guó)林,蘭光澤,員玉良
(青島農(nóng)業(yè)大學(xué)機(jī)電工程學(xué)院,山東 青島 266109)
多通道數(shù)據(jù)采集通常采用較為成熟的數(shù)據(jù)采集卡[1-2]來(lái)實(shí)現(xiàn)。然而,數(shù)據(jù)采集卡價(jià)格高昂,中小型企業(yè)難以承受。而且,該方法需要上位機(jī)的聯(lián)機(jī)支持,靈活性較差,捷帶不便,不適用于復(fù)雜的實(shí)際工程環(huán)境。因此,目前已經(jīng)開(kāi)始采用單片機(jī)作為主控器[3-4],配合外部模擬數(shù)字轉(zhuǎn)換器(analog to digital converter,ADC)進(jìn)行數(shù)據(jù)采集。其中,外部ADC器件的接口有并口方式[5]和串口方式[6]。并口方式可提高數(shù)據(jù)的讀取效率,但需要占用較多的處理器接口。串口方式可節(jié)省處理器的接口資源,但數(shù)據(jù)讀取的耗時(shí)較長(zhǎng)。常見(jiàn)串口方式有串行外設(shè)接口(serial peripheral interface,SPI)、集成電路總線(inter-integrated circuit,I2C)、通用異步收發(fā)器接口(universal asynchronous receiver/transmitter,UART)等。
本文設(shè)計(jì)了一種基于STM32F7的多通道通用數(shù)據(jù)采集器,充分利用STM32F7微處理器的資源,采用片內(nèi)ADC及多種協(xié)議接口,轉(zhuǎn)換結(jié)果通過(guò)直接存儲(chǔ)器訪問(wèn)(direct memory access,DMA)[7-9]數(shù)據(jù)流方式存儲(chǔ)至外設(shè)靜態(tài)隨機(jī)存取存儲(chǔ)器(static random access memory,SRAM),有效解決了接口資源占用與轉(zhuǎn)換數(shù)據(jù)讀取效率之間的矛盾。DMA控制器可在外設(shè)寄存器與存儲(chǔ)器之間,以及在存儲(chǔ)器與存儲(chǔ)器之間提供高速數(shù)據(jù)傳輸,在數(shù)據(jù)傳輸過(guò)程中無(wú)需處理器操作控制,能在實(shí)現(xiàn)數(shù)據(jù)高速傳輸?shù)耐瑫r(shí)節(jié)省片內(nèi)資源,提升了處理器的執(zhí)行效率。
多通道通用數(shù)據(jù)采集器最大的特點(diǎn)是實(shí)時(shí)性與普適性,可同時(shí)實(shí)時(shí)采集、傳輸、顯示不同協(xié)議下的通道數(shù)據(jù)。多通道通用數(shù)據(jù)采集器由微處理器、SD卡存儲(chǔ)模塊、顯示模塊、4G通信模塊和云端服務(wù)器等部分構(gòu)成。多通道通用數(shù)據(jù)采集器結(jié)構(gòu)如圖1所示。

圖1 多通道通用數(shù)據(jù)采集器結(jié)構(gòu)圖
微處理器采用STM32F767ZIT6芯片。微處理器首先采集ADC通道、CAN、SPI、I2C等通信協(xié)議數(shù)據(jù),然后將采集到的數(shù)據(jù)通過(guò)DMA傳輸緩存至SRAM,進(jìn)行編碼后利用文件分配表(file allocation table,FAT)文件系統(tǒng)存入SD卡,并定時(shí)將SD卡的數(shù)據(jù)通過(guò)4G模塊發(fā)送到云端服務(wù)器。云端服務(wù)器對(duì)接收到的編碼信息進(jìn)行解析顯示,同時(shí)將解析完的各通道數(shù)據(jù)導(dǎo)出為文本文檔。微處理器通過(guò)USART1連接4G通信模塊,通過(guò)USART2連接顯示模塊,與SD卡通信采用安全數(shù)字輸入輸出(secure digital input and output,SDIO)協(xié)議。
微處理器STM32F767ZIT6主頻可達(dá)216 MHz,片內(nèi)集成多路ADC、I2C、通用同步異步收發(fā)器(universal synchronous/asynchronous receiver/transmitter,USART)等常見(jiàn)外設(shè),內(nèi)置兩個(gè)DMA控制器。豐富的內(nèi)部資源可充分滿足系統(tǒng)設(shè)計(jì)需要。DMA支持外設(shè)到存儲(chǔ)器模式和存儲(chǔ)器到外設(shè)模式。采集通道數(shù)據(jù)選擇外設(shè)到存儲(chǔ)器模式。存儲(chǔ)數(shù)據(jù)和發(fā)送數(shù)據(jù)選擇存儲(chǔ)器到外設(shè)模式。DMA原理如圖2所示。

圖2 DMA原理圖
4G通信采用穩(wěn)恒科技的WH_LTE_7S4模塊[10]。該模塊屬于二次開(kāi)發(fā)模塊,內(nèi)部集成了4G通信芯片,支持高速接入移動(dòng)、聯(lián)通、電信4G。本設(shè)計(jì)中,將工作模式設(shè)置為網(wǎng)絡(luò)透?jìng)髂J剑⑻幚砥髋c4G模塊之間采用串口通信。模塊支持兩路Socket連接,只有發(fā)送數(shù)據(jù)時(shí)才會(huì)和服務(wù)器建立連接。如果在一定時(shí)間內(nèi)停止數(shù)據(jù)傳輸,則會(huì)因超時(shí)而斷開(kāi)連接。
存儲(chǔ)模塊電路如圖3所示。

圖3 存儲(chǔ)模塊電路
為了防止因網(wǎng)絡(luò)連接不穩(wěn)定而引起數(shù)據(jù)丟失或錯(cuò)亂,系統(tǒng)定時(shí)向SD卡中寫(xiě)入數(shù)據(jù),并實(shí)時(shí)將SD卡中的數(shù)據(jù)發(fā)送到上位機(jī),對(duì)采集到的數(shù)據(jù)進(jìn)行雙重保護(hù)。本設(shè)計(jì)選取容量為8 GB的SD卡。該卡采用SDIO4 bit接口模式讀寫(xiě),文件讀取速度最高可達(dá)20 Mbit/s。
圖3中,SDI0_D0、SDIO_D1、SDIO_D2、SDIO_D3是四位并行雙向數(shù)據(jù)線,SDIO_CK為SD卡的時(shí)鐘線,SDIO_CMD為指令線。微處理器向SD卡儲(chǔ)存數(shù)據(jù):通過(guò)指令線向SD卡發(fā)送一個(gè)指令,SD卡隨即返回一個(gè)應(yīng)答信號(hào); 下一個(gè)時(shí)鐘周期開(kāi)始由數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,直到數(shù)據(jù)傳輸結(jié)束;微處理器發(fā)送一個(gè)結(jié)束指令,即完成一次操作。
采集器提供三種電壓源,分別為+3.3 V、+5 V和+12 V。通過(guò)AC-DC將220 V交流電轉(zhuǎn)換為+12 V直流電,給4G通信模塊、風(fēng)速傳感器和光照度傳感器供電。同時(shí),+12 V電壓通過(guò)LM2596S-ADI調(diào)節(jié)至+5 V,給莖稈直徑傳感器、土壤濕度傳感器和SD存儲(chǔ)模塊供電。+5 V電壓通過(guò)AMS1117調(diào)節(jié)至+3.3 V,給微處理器和溫濕度模塊供電。同時(shí),采用不間斷電源模塊,可實(shí)現(xiàn)市電和鋰電池應(yīng)急切換,保證系統(tǒng)的穩(wěn)定、可靠運(yùn)行。
采集器主程序使用STM32CubeMX工具和Keil μVision5集成開(kāi)發(fā)環(huán)境進(jìn)行程序開(kāi)發(fā)調(diào)試。初始化子程序包括片內(nèi)ADC、DMA、4G通信模塊和SD卡的初始化。
上電后,首先進(jìn)行系統(tǒng)初始化,判斷是否到達(dá)數(shù)據(jù)的采集時(shí)間。如果沒(méi)有,則直接進(jìn)入睡眠狀態(tài);反之,則啟動(dòng)各數(shù)據(jù)通道,采集相關(guān)數(shù)據(jù),并讀取采樣時(shí)刻。數(shù)據(jù)采集完畢后,關(guān)閉采集通道,使其進(jìn)入空閑狀態(tài),直至下次采集時(shí)再打開(kāi)通道。啟動(dòng)DMA將數(shù)據(jù)發(fā)送至外部SRAM緩沖區(qū),并通過(guò)FAT文件系統(tǒng)存入SD卡。如果檢測(cè)到網(wǎng)絡(luò)已連接,則還需將SD卡中的數(shù)據(jù)通過(guò)4G通信模塊發(fā)送給遠(yuǎn)程服務(wù)器。
主程序流程如圖4所示。

圖4 主程序流程圖
2020年11月在青島城陽(yáng)區(qū)(120°39′64′E,36°31′95′N(xiāo))進(jìn)行試驗(yàn)。試驗(yàn)對(duì)象為隨機(jī)選取的兩株茄子樣本,播種時(shí)間為2020年7月初。對(duì)兩株茄子樣本分別安裝一套溫室作物水分無(wú)創(chuàng)檢測(cè)系統(tǒng)。
試驗(yàn)現(xiàn)場(chǎng)如圖5所示。

圖5 試驗(yàn)現(xiàn)場(chǎng)示意圖
采集器所用傳感器配置如下:溫濕度傳感器采用單總線協(xié)議;大氣壓強(qiáng)傳感器采用I2C協(xié)議;光照度傳感器為RS-485輸出;風(fēng)速、莖稈直徑微變[11]、土壤濕度傳感器為模擬0~5 V輸出。
傳感器參數(shù)如表1所示。

表1 傳感器參數(shù)
根據(jù)11月8~18日在試驗(yàn)現(xiàn)場(chǎng)測(cè)得的數(shù)據(jù)繪制微環(huán)境因子變化曲線,如圖6所示。由圖6可知:溫室內(nèi)的光合有效輻射量與飽和水汽壓差每天都會(huì)發(fā)生周期性變化。

圖6 微環(huán)境因子變化曲線
茄子樣本主要參數(shù)變化曲線如圖7所示。

圖7 茄子樣本主要參數(shù)變化曲線
11月10日上午10點(diǎn)對(duì)樣本進(jìn)行了澆灌,澆水量為1 L。由圖7(a)可以看出,土壤相對(duì)濕度明顯變高。
澆水前,天氣狀況良好,土壤相對(duì)濕度小于20%。此時(shí),茄子樣本已經(jīng)不能從土壤中獲得足夠的水分來(lái)維持正常的蒸騰作用,出現(xiàn)了一定的干旱現(xiàn)象,造成莖稈出現(xiàn)大幅收縮。澆水后,莖稈得到了有效的水分補(bǔ)充。莖稈直徑變化基本穩(wěn)定,并略有增長(zhǎng)。
由圖7(b)可知,每天早上8點(diǎn),光合有效輻射量開(kāi)始增大,樣本莖稈開(kāi)始收縮。至中午前后,光合有效輻射量達(dá)到最大值,莖稈直徑達(dá)到最小值。之后,莖稈逐漸膨脹變粗,一直持續(xù)到次日凌晨,達(dá)到最大值。如此反復(fù),茄子樣本的莖稈直徑每日呈周期性變化,同時(shí)茄子樣本的莖稈直徑每天還有小幅度增長(zhǎng)。11月8~17日,莖稈直徑大約增長(zhǎng)了1.5 mm。
11月13日,茄子樣本的莖稈直徑與光合有效輻射量變化曲線如圖8所示。

圖8 11月13日茄子樣本的莖稈直徑與光合有效輻射量變化曲線
由圖8可知,光合有效輻射量在上午10點(diǎn)和下午1點(diǎn)前后出現(xiàn)波動(dòng)。其原因是溫室結(jié)構(gòu)支柱遮擋了太陽(yáng)。
通過(guò)連續(xù)長(zhǎng)時(shí)間的測(cè)量驗(yàn)證,多通道通用數(shù)據(jù)采集器能夠高速、準(zhǔn)確地測(cè)量出作物莖桿直徑、溫度、濕度、光照度和土壤濕度等信息,具有較高的可靠性與普適性。
本文基于STM32F7的多通道通用數(shù)據(jù)采集器,實(shí)現(xiàn)了多通道、多協(xié)議的高速數(shù)據(jù)采集。將其應(yīng)用于溫室作物無(wú)創(chuàng)水分檢測(cè)系統(tǒng)中,可實(shí)現(xiàn)對(duì)作物莖桿直徑、溫度、濕度、光照度和土壤濕度等信息進(jìn)行遠(yuǎn)程監(jiān)控。試驗(yàn)結(jié)果表明,該采集器具有性能高、功耗小等優(yōu)點(diǎn),在保證高速采集多路數(shù)據(jù)的同時(shí),極大地降低了硬件成本。該采集器運(yùn)行穩(wěn)定、可靠,實(shí)用性強(qiáng),具有較高的推廣應(yīng)用價(jià)值。