引言
傳統(tǒng)農(nóng)業(yè)需要消耗大量的勞動力,生產(chǎn)效率低,急需要向現(xiàn)代農(nóng)業(yè)的轉(zhuǎn)變。溫室技術(shù)作為現(xiàn)代農(nóng)業(yè)的重要代表將作物的生長從自然環(huán)境獨立出來,形成一個可以進行人工控制的半封閉系統(tǒng)。我國從20世紀(jì)90年代開始向溫室技術(shù)發(fā)達的荷蘭、美國等國學(xué)習(xí),但是由于我國農(nóng)業(yè)生產(chǎn)條件與國外情況不同,不能直接照搬國外的模式,而需要研發(fā)適合我國各地區(qū)生產(chǎn)條件的溫室控制系統(tǒng)。
針對上述情況設(shè)計了一套溫室的遠(yuǎn)程監(jiān)測和控制系統(tǒng)。由于在各個環(huán)境因素中,空氣溫濕度對作物的生長具有較大的影響,所以系統(tǒng)選擇對溫室內(nèi)空氣溫濕度進行監(jiān)測和控制。傳統(tǒng)的51系列單片機控制系統(tǒng)運算能力以及功能擴展能力差,PLC控制系統(tǒng)成本太高,所以選擇了外設(shè)豐富、擴展性強以及成本較低的STM32單片機作為溫室內(nèi)的控制器。
1、系統(tǒng)總體設(shè)計
文中開發(fā)了一套基于STM32的溫室遠(yuǎn)程監(jiān)測和控制系統(tǒng)。通過利用STM32單片機作為溫室內(nèi)的控制器以及MFC編寫的遠(yuǎn)程控制軟件可以實現(xiàn)對溫室內(nèi)溫濕度遠(yuǎn)程監(jiān)測和控制。在STM32控制器設(shè)計中加入ENC28J60模塊,使控制器可以接入網(wǎng)絡(luò),同時在STM32的程序設(shè)計中移植LwIP協(xié)議,使控制器可以通過TCP/IP協(xié)議與遠(yuǎn)程控制軟件進行數(shù)據(jù)通信。
STM32控制器直接控制DHT11傳感器和繼電器模塊,DHT11負(fù)責(zé)測量溫室內(nèi)溫濕度,繼電器模塊負(fù)責(zé)控制溫室內(nèi)的加熱系統(tǒng)和濕簾系統(tǒng),改變溫室內(nèi)的溫濕度。在VC6.0平臺下利用MFC設(shè)計了簡單易用的遠(yuǎn)程控制界面,可以遠(yuǎn)程監(jiān)測溫室內(nèi)的溫濕度,并對溫室內(nèi)設(shè)備進行控制,將控制過程中產(chǎn)生的數(shù)據(jù)保存到數(shù)據(jù)庫中,系統(tǒng)整體框架如圖1所示。
圖1系統(tǒng)整體框圖
2、系統(tǒng)硬件設(shè)計
2.1、核心處理器的選擇
STM32具有豐富的外圍設(shè)備,內(nèi)置64K的靜態(tài)RAM和512K字節(jié)的閃存存儲器,多達112個GPIO端口,可以按要求配置成輸入或輸出各四種模式,共有7路通用DMA,負(fù)責(zé)存儲器之間以及存儲器和外設(shè)之間的直接數(shù)據(jù)傳輸,內(nèi)嵌3個12位的模擬/數(shù)字轉(zhuǎn)換器,1條I2C總線連接控制器和外圍設(shè)備,2條SPI總線,負(fù)責(zé)一個主設(shè)備和多個從設(shè)備之間進行數(shù)據(jù)交換,可以外接以太網(wǎng)接口,3個USART串口,1個SDIO接口進行存儲器擴展以及1個JTAG接口可以用于連接計算機進行程序調(diào)試。
2.2、溫濕度傳感器的選擇
對于溫室內(nèi)的空氣溫濕度測量,本系統(tǒng)采用的是DHT11傳感器。DHT11中集成了數(shù)字采集模塊,包括1個測溫元件和1個電阻式感濕元件,它的抗干擾能力強、價格便宜、體積小、功耗低,使用方便,工作電壓為3.5V。其主要參數(shù)如表1所示。
DHT11采用的是單總線數(shù)據(jù)格式,可以通過一個引腳進行數(shù)據(jù)的發(fā)送和命令的接收,本次設(shè)計采用STM32的GPIO_Pin_7引腳來連接DHT11。在STM32中央控制器向DHT11發(fā)送開始信號以后,DHT11從低功耗模式喚醒,進入高速模式狀態(tài),并對STM32的開始信號進行響應(yīng),雙方確認(rèn)以后,DHT11把測得的數(shù)據(jù)封裝在數(shù)據(jù)包中發(fā)送到STM32控制器,發(fā)送完以后會觸發(fā)采集信號繼續(xù)進行數(shù)據(jù)的采集。在STM32中央控制器向DHT11發(fā)送結(jié)束信號后,DHT11停止測量數(shù)據(jù),重新進入低功耗模式,DHT11和STM32之間通信一次的時間最大為3ms左右。
2.3、繼電器模塊的設(shè)計
設(shè)計中執(zhí)行設(shè)備的狀態(tài)是“二位”形式,即只有“打開”和“關(guān)閉”2種狀態(tài),可以通過繼電器進行控制。本次設(shè)計采用的是電磁繼電器,型號為歐姆龍G2R-1A-E。電磁繼電器的組成部分有鐵芯、線圈、銜鐵和簧片,利用電磁效應(yīng)通過在線圈兩端加電壓產(chǎn)生電流繼而產(chǎn)生電磁力,對銜鐵產(chǎn)生吸引力,控制開關(guān)。本次設(shè)計為每個執(zhí)行設(shè)備連接一個電磁繼電器。
2.4、網(wǎng)絡(luò)接口設(shè)計
設(shè)計中采用STM32外接以太網(wǎng)控制器ENC28J60與遠(yuǎn)程控制軟件進行通信。ENC28J60是美國微芯科技公司開發(fā)的,共有28個引腳,體積小、使用方便,價格便宜[9]。該芯片帶有SPI接口,可以通過SPI接口與STM32控制器進行連接。ENC28J60的工作頻率是25MHz,工作電壓為3.3V。ENC28J60中的存儲器以靜態(tài)RAM方式實現(xiàn)。STM32通過使用SPI接口對ENC28J60芯片的寄存器寫入控制參數(shù)和接收數(shù)據(jù),實現(xiàn)以太網(wǎng)功能。
3、系統(tǒng)軟件設(shè)計
3.1、LwIP協(xié)議的移植
LwIP協(xié)議是一種主要應(yīng)用于嵌入式系統(tǒng)中的輕量級的TCP/IP協(xié)議。LwIP協(xié)議源碼開放,在保持了TCP/IP協(xié)議的基本功能的前提下代碼盡量精簡、占用內(nèi)存小、方便裁剪和調(diào)試[10,11]。LwIP在STM32上的移植工作主要包含2方面內(nèi)容:一是修改文件ethernetif.c和文件sys_arch.c;二是編寫網(wǎng)絡(luò)驅(qū)動程序。
設(shè)計中采用ENC28J60在LwIP中用netif結(jié)構(gòu)體來描述網(wǎng)絡(luò)接口,通過對netif結(jié)構(gòu)體中的各個成員進行賦值來實現(xiàn)網(wǎng)。netif結(jié)構(gòu)體中定義了指向下個網(wǎng)絡(luò)接口的指針、IP地址、網(wǎng)絡(luò)掩碼、網(wǎng)關(guān)以及用于實現(xiàn)以太網(wǎng)接收、發(fā)送數(shù)據(jù)包的函數(shù)等內(nèi)容。在驅(qū)動中所要完成的任務(wù)就是實現(xiàn)網(wǎng)絡(luò)的初始化、數(shù)據(jù)的接收發(fā)送以及終端等任務(wù),最終通過硬件接口函數(shù)可以實現(xiàn)對硬件的驅(qū)動。
3.2、測量程序的設(shè)計
DHT11發(fā)送的數(shù)據(jù)包大小為40bit,包括測得的空氣溫度的整數(shù)部分8bit,空氣溫度小數(shù)部分為8bit,空氣濕度整數(shù)部分8bit,空氣濕度小數(shù)部分8bit,還有8bit是進行數(shù)據(jù)校驗,大小為前面4個字節(jié)的和。
當(dāng)DHT11進行接收主機命令和向主機發(fā)送數(shù)據(jù)時,GPIO_Pin_7引腳分別被配置成和上拉輸入模式和推挽輸入模式。其中STM32從DHT11讀取數(shù)據(jù)的程序如下所示。
8DHT11_Read_Data(u8*temp,u8*humi)
{
u8buf[5];
8i;
DHT11_Rst();
if(DHT11_Check()==0)
{
for(i=0;i<5;i++)
buf[i]=DHT11_Read_Byte();
if((buf[0]+buf[1]+buf[2]+buf[3])=
=buf[4])
{
*humi=buf[0];
*temp=buf[2];
}
}
elsereturn1;
return0;
}
3.3、控制程序的設(shè)計
加熱系統(tǒng)和濕簾系統(tǒng)通過繼電器控制通斷,兩個繼電器分別通過GPIOB的7和8兩個引腳進行控制。引腳的輸出模式配置為通用推挽輸出模式,速率配置為2MHz。GPIO_SetBits函數(shù)使引腳輸出高電平,繼電器導(dǎo)通,控制相應(yīng)的執(zhí)行設(shè)備運行,GPIO_ResetBits函數(shù)使引腳輸出低電平,將繼電器斷開,控制相應(yīng)的執(zhí)行設(shè)備關(guān)閉。STM32中的程序執(zhí)行過程如圖2所示。
圖2 ?STM32程序執(zhí)行過程
3.4、遠(yuǎn)程控制軟件的設(shè)計
文中設(shè)計的遠(yuǎn)程控制軟件是在美國微軟公司發(fā)行的VC6.0平臺上利用MFC進行開發(fā)的,設(shè)計的主控制界面如圖3所示。
圖3主控制界面
從圖3中可以看出主控界面主要包括實時監(jiān)測模塊和設(shè)備控制模塊兩大部分,實時監(jiān)測模塊主要包括對溫室內(nèi)溫濕度進行上限和下限的設(shè)置,以及STM32控制器傳送的實時數(shù)據(jù)的顯示,可以選擇將測得的數(shù)據(jù)保存到數(shù)據(jù)庫中,并進行歷史數(shù)據(jù)的查詢。設(shè)備控制模塊的主要功能是對溫室內(nèi)進行環(huán)境調(diào)節(jié)的執(zhí)行設(shè)備進行控制,可以選擇手動控制和自動控制2種模式。遠(yuǎn)程控制軟件與STM32F103VET6中央控制器之間采用TCP/IP協(xié)議進行通信,規(guī)定了設(shè)備之間進行數(shù)據(jù)傳輸?shù)臉?biāo)準(zhǔn)格式。2個設(shè)備在進行數(shù)據(jù)傳輸時會建立起一條虛擬的網(wǎng)絡(luò)通道,數(shù)據(jù)和控制命令封裝成數(shù)據(jù)包的形式在這條通道上進行傳輸。遠(yuǎn)程控制軟件與STM32通信的過程如圖4所示。
圖4 遠(yuǎn)程控制軟件與STM32通信過程
設(shè)計中采用SQLSever2008數(shù)據(jù)庫保存系統(tǒng)運行過程中產(chǎn)生的溫室環(huán)境數(shù)據(jù)和執(zhí)行設(shè)備控制信息等數(shù)據(jù)。用戶可以對數(shù)據(jù)庫中的數(shù)據(jù)進行保存、查詢、刪除和維護操作,準(zhǔn)確快速地獲取所需要的數(shù)據(jù)。
4、結(jié)束語
文中利用STM32單片機作為溫室內(nèi)的控制器,實現(xiàn)了通過網(wǎng)絡(luò)對溫室內(nèi)溫濕度的遠(yuǎn)程測量和控制。由于溫室內(nèi)的CO2濃度和光照強度對植物的生長也有影響,所以可以對系統(tǒng)進行功能擴展,控制更多的環(huán)境變量,使系統(tǒng)可以更好地營造植物生長的環(huán)境。
評論