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