楊歡歡,秦會斌,金步平
(杭州電子科技大學 電子信息學院,浙江 杭州 310018)
基于STM32的溫室遠程監測和控制系統
楊歡歡,秦會斌,金步平
(杭州電子科技大學 電子信息學院,浙江 杭州 310018)
針對目前溫室控制中的網絡化程度不足,設計了以測量和控制溫室內溫濕度為目的溫室遠程監測和控制系統。系統采用STM32單片機作為溫室內的控制器,通過溫濕度傳感器DHT11測量溫室內的空氣溫濕度,并通過繼電器模塊控制溫室內的加熱系統和濕簾系統,實現對溫室內溫濕度的調節。在STM32控制器的設計中加入ENC28J60模塊,并在STM32上進行LwIP協議的移植,使STM32控制器可以接入網絡。利用MFC編寫的遠程控制軟件可以通過TCP/IP協議與STM32進行通信,進行數據的接收、處理以及存儲,實現對溫室內溫濕度的遠程監測和控制。
STM32控制器;溫濕度傳感器;LwIP協議;溫室遠程控制
傳統農業需要消耗大量的勞動力,生產效率低,急需要向現代農業的轉變。溫室技術作為現代農業的重要代表將作物的生長從自然環境獨立出來,形成一個可以進行人工控制的半封閉系統[1-3]。我國從20世紀90年代開始向溫室技術發達的荷蘭、美國等國學習,但是由于我國農業生產條件與國外情況不同,不能直接照搬國外的模式[4,5],而需要研發適合我國各地區生產條件的溫室控制系統。
針對上述情況設計了一套溫室的遠程監測和控制系統。由于在各個環境因素中,空氣溫濕度對作物的生長具有較大的影響,所以系統選擇對溫室內空氣溫濕度進行監測和控制。傳統的51系列單片機控制系統運算能力以及功能擴展能力差,PLC控制系統成本太高,所以選擇了外設豐富、擴展性強以及成本較低的STM32單片機作為溫室內的控制器。
文中開發了一套基于STM32的溫室遠程監測和控制系統。通過利用STM32單片機作為溫室內的控制器以及MFC編寫的遠程控制軟件可以實現對溫室內溫濕度遠程監測和控制。在STM32控制器設計中加入ENC28J60模塊,使控制器可以接入網絡,同時在STM32的程序設計中移植LwIP協議,使控制器可以通過TCP/IP協議與遠程控制軟件進行數據通信。STM32控制器直接控制DHT11傳感器和繼電器模塊,DHT11負責測量溫室內溫濕度,繼電器模塊負責控制溫室內的加熱系統和濕簾系統,改變溫室內的溫濕度。在VC 6.0平臺下利用MFC設計了簡單易用的遠程控制界面,可以遠程監測溫室內的溫濕度,并對溫室內設備進行控制,將控制過程中產生的數據保存到數據庫中,系統整體框架如圖1所示。

圖1 系統整體框圖
2.1 核心處理器的選擇
STM32控制器是基于Cortex-M3內核的處理器,具有功耗低、中斷延時時間短、門數少、成本低和調試簡單等眾多優點[6]。STM32在運行模式時即使最大時鐘下,電流也僅有27 mA。在待機模式下功耗更是極低,典型的耗電電流僅為2 μA。STM32各個模式之間切換速度很快,從待機模式切換到運行狀態只需55 μS,從停機模式下喚醒僅需7 μS,大大提高了單片機的性能。STM32的工作電壓為2.0~3.6 V,設有上電/掉電復位電路,具有可編程電壓監測器,最高72 MHz的工作頻率。
STM32具有豐富的外圍設備,內置64 K的靜態RAM和512K字節的閃存存儲器,多達112個GPIO端口,可以按要求配置成輸入或輸出各四種模式,共有7路通用DMA,負責存儲器之間以及存儲器和外設之間的直接數據傳輸,內嵌3個12位的模擬/數字轉換器,1條I2C總線連接控制器和外圍設備,2條SPI總線,負責一個主設備和多個從設備之間進行數據交換,可以外接以太網接口[7],3個USART串口,1個SDIO接口進行存儲器擴展以及1個JTAG接口可以用于連接計算機進行程序調試。
2.2 溫濕度傳感器的選擇
對于溫室內的空氣溫濕度測量,本系統采用的是DHT11傳感器。DHT11中集成了數字采集模塊,包括1個測溫元件和1個電阻式感濕元件,它的抗干擾能力強、價格便宜、體積小、功耗低,使用方便,工作電壓為3.5 V[8]。其主要參數如表1所示。

表1 DHT11主要參數
DHT11采用的是單總線數據格式,可以通過一個引腳進行數據的發送和命令的接收,本次設計采用STM32的GPIO_Pin_7引腳來連接DHT11。在STM32中央控制器向DHT11發送開始信號以后,DHT11從低功耗模式喚醒,進入高速模式狀態,并對STM32的開始信號進行響應,雙方確認以后,DHT11把測得的數據封裝在數據包中發送到STM32控制器,發送完以后會觸發采集信號繼續進行數據的采集。在STM32中央控制器向DHT11發送結束信號后,DHT11停止測量數據,重新進入低功耗模式,DHT11和STM32之間通信一次的時間最大為3 ms左右。
2.3 繼電器模塊的設計
設計中執行設備的狀態是“二位”形式,即只有“打開”和“關閉”2種狀態,可以通過繼電器進行控制。本次設計采用的是電磁繼電器,型號為歐姆龍G2R-1A-E。電磁繼電器的組成部分有鐵芯、線圈、銜鐵和簧片,利用電磁效應通過在線圈兩端加電壓產生電流繼而產生電磁力,對銜鐵產生吸引力,控制開關。本次設計為每個執行設備連接一個電磁繼電器。
2.4 網絡接口設計
設計中采用STM32外接以太網控制器ENC28J60與遠程控制軟件進行通信。ENC28J60是美國微芯科技公司開發的,共有28個引腳,體積小、使用方便,價格便宜[9]。該芯片帶有SPI接口,可以通過SPI接口與STM32控制器進行連接。ENC28J60的工作頻率是25 MHz,工作電壓為3.3 V。ENC28J60中的存儲器以靜態RAM方式實現。STM32通過使用SPI接口對ENC28J60芯片的寄存器寫入控制參數和接收數據,實現以太網功能。
3.1 LwIP協議的移植
LwIP協議是一種主要應用于嵌入式系統中的輕量級的TCP/IP協議。LwIP協議源碼開放,在保持了TCP/IP協議的基本功能的前提下代碼盡量精簡、占用內存小、方便裁剪和調試[10,11]。LwIP在STM32上的移植工作主要包含2方面內容:一是修改文件ethernetif.c和文件sys_arch.c;二是編寫網絡驅動程序。
ethernetif.c文件是LwIP協議棧和STM32網絡驅動程序之間的接口,主要工作就是對文件中的函數進行修改及編寫。其中low_level_init函數設定了網卡的物理地址和每幀最大傳輸字節數該函數對netif結構體的MAC成員neitif->hwaddr賦值為macaddress數組的值,對netif->flags賦值使其可以使用廣播地址、使能ARP功能。low_level_output函數負責向上層發送數據,以pbuf結構體作為參數,利用for循環調用memcpy函數把q->payload鏈表中的數據都取出來存放在數組中,最后調用驅動函數將數據發送出去。
sys_arch.c文件在移植時只需要對各個功能函數進行修改即可。sys_mbox_new是使用μC/OS-Ⅱ提供的消息隊列機制創建一個空的消息隊列,sys_ mbox_free函數的功能是進行隊列的刪除工作,當該隊列中還有未被取出的消息時,該函數會報錯,并向應用程序發出通知。sys_mbox_post函數用于將消息發送至消息隊列中,如果消息沒有發送,該函數會進入阻塞狀態。sys_mbox_trypost用于嘗試將某個消息發送至消息隊列中,如果消息被成功發送返回成功,否則返回失敗。sys_arch_mbox_fetch用于從消息隊列中取出一條消息,若調用該函數的線程在指定時間內未取到消息會發生阻塞,當超過指定時間以后恢復至就緒狀態。sys_arch_mbox_tryfetch嘗試從消息隊列中取出消息。
設計中采用ENC28J60在LwIP中用netif結構體來描述網絡接口,通過對netif結構體中的各個成員進行賦值來實現網。netif結構體中定義了指向下個網絡接口的指針、IP地址、網絡掩碼、網關以及用于實現以太網接收、發送數據包的函數等內容[12]。在驅動中所要完成的任務就是實現網絡的初始化、數據的接收發送以及終端等任務,最終通過硬件接口函數可以實現對硬件的驅動。
3.2 測量程序的設計
DHT11發送的數據包大小為40 bit,包括測得的空氣溫度的整數部分8 bit,空氣溫度小數部分為8 bit,空氣濕度整數部分8 bit,空氣濕度小數部分8 bit,還有8 bit是進行數據校驗,大小為前面4個字節的和。
當DHT11進行接收主機命令和向主機發送數據時,GPIO_Pin_7引腳分別被配置成和上拉輸入模式和推挽輸入模式。其中STM32從DHT11讀取數據的程序如下所示。


其中參數temp表示測量的溫度值,范圍為0℃~50℃,參數humi表示測量的濕度值,范圍為20%~90%。DHT11_Rst是DHT11的復位函數,DHT11_Check函數檢測DHT11是否連接好,若連接好則進行數據的讀取。
3.3 控制程序的設計
加熱系統和濕簾系統通過繼電器控制通斷,兩個繼電器分別通過GPIOB的7和8兩個引腳進行控制。引腳的輸出模式配置為通用推挽輸出模式,速率配置為2 MHz。GPIO_SetBits函數使引腳輸出高電平,繼電器導通,控制相應的執行設備運行,GPIO_ResetBits函數使引腳輸出低電平,將繼電器斷開,控制相應的執行設備關閉。STM32中的程序執行過程如圖2所示。

圖2 STM32程序執行過程
3.4 遠程控制軟件的設計
文中設計的遠程控制軟件是在美國微軟公司發行的VC 6.0平臺上利用MFC進行開發的[13],設計的主控制界面如圖3所示。

圖3 主控制界面
從圖3中可以看出主控界面主要包括實時監測模塊和設備控制模塊兩大部分,實時監測模塊主要包括對溫室內溫濕度進行上限和下限的設置,以及STM32控制器傳送的實時數據的顯示,可以選擇將測得的數據保存到數據庫中,并進行歷史數據的查詢。設備控制模塊的主要功能是對溫室內進行環境調節的執行設備進行控制,可以選擇手動控制和自動控制2種模式。遠程控制軟件與STM32F103VET6中央控制器之間采用TCP/IP協議進行通信,規定了設備之間進行數據傳輸的標準格式。2個設備在進行數據傳輸時會建立起一條虛擬的網絡通道,數據和控制命令封裝成數據包的形式在這條通道上進行傳輸。遠程控制軟件與STM32通信的過程如圖4所示。

圖4 遠程控制軟件與STM32通信過程
設計中采用SQL Sever 2008數據庫保存系統運行過程中產生的溫室環境數據和執行設備控制信息等數據。用戶可以對數據庫中的數據進行保存、查詢、刪除和維護操作,準確快速地獲取所需要的數據。
將設計好的程序燒寫到STM32單片機中,調試成功以后將STM32通過ENC28J60接入網絡。在遠程控制軟件上通過IP地址和端口號與STM32建立連接,在控制軟件上可以直接獲取溫室內的溫濕度數據,并可以設置溫濕度的上下限范圍,當溫濕度超過設置的范圍時,可以直接在控制軟件上控制加熱系統和濕簾系統的通斷,來改變溫室內的溫濕度,達到適合作物生長的環境。
文中利用STM32單片機作為溫室內的控制器,實現了通過網絡對溫室內溫濕度的遠程測量和控制。由于溫室內的CO2濃度和光照強度對植物的生長也有影響,所以可以對系統進行功能擴展,控制更多的環境變量,使系統可以更好地營造植物生長的環境。
[1]汪建春,胡曉進.智能溫室的遠程控制設計[J].計算機光盤軟件與應用,2013(03):179-180.
[2]郭炳輝,李進京,江啟峰.溫室智能測控儀發展現狀與前景展望[J].農業裝備技術,2003(03):15-17.
[3]楊學坤,蔣曉,諸剛.溫室環境控制技術的研究現狀與發展趨勢[J].中國農機化學報,2013(4):16-18.
[4]譚靜芳,劉成勛.淺談溫室自動控制技術的發展概況[J].農業裝備技術,2005(5):21-23.
[5]高靜.溫室大棚環境監控系統研究[J].中國新技術新產品,2014(2):150-154.
[6]劉軍.例說STM32[M].北京:北京航空航天大學出版社,2011:2-8.
[7]殷云志,解建偉.基于傳感器協作網絡的信號監測技術研究[J].無線電工程,2014,44(7):15-18.
[8]張冬林,李鑫,戴梅,等.基于DHT11的低成本蠶室溫濕度自動控制系統的設計[J].現代農業科技,2010(18):14-15.
[9]陳奎,吳愛國,游洲.用ENC28J60和FPGA設計通用以太網控制器[J].電子產品世界,2005(21):94-95.
[10]梁凱鵬,王建偉,肖剛,等.面向服務的網絡管理運控系統設計與實現[J].無線電工程,2011,41(2):7-9,15.
[11]張齊,勞熾元.輕量級協議棧LWIP的分析與改進[J].計算機工程與設計,2010.31(10):2169-2171.
[12]崔弘珂.一種空間環境下的TCP傳輸技術研究[J].無線電通信技術,2011,37(4):21-24.
[13]辛長安,王顏國.Visual C++權威剖析—MFC的原理、機制與開發實例[M].北京:清華大學出版社,2008:8-10.
Design of Remote Monitoring and Control System for Greenhouse Based on STM32
YANG Huan-huan,QIN Hui-bin,JIN Bu-ping
(School of Electronic Information,HangzhouDianzi University,Hangzhou Zhejiang 310018,China)
According to the low networking degree of greenhouse control,a remote monitoring and control system is designed to measure and control the temperature and humidity in greenhouse.This system uses the STM32 as the controller,uses the temperature and humidity sensor DHT11 to measure temperature and humidity and the relay to control the heating and cooling system in the greenhouse,which achieve temperature and humidity regulation in the greenhouse.The ENC28J60 module is added into the design of STM32 controller,which can access the network by transplanting LwIP protocol.The remote control software designed by MFC communicates with the STM32 by TCP/IP protocol for data reception,processing and storage to achieve remote monitoring and control of the temperature and humidity in the greenhouse.
STM32 controller;temperature and humidity sensor;LwIP protocol;remote control
TP277
A
1003-3114(2015)05-77-4
10.3969/j.issn.1003-3114.2015.05.21
楊歡歡,秦會斌,金步平.基于STM32的溫室遠程監測和控制系統[J].無線電通信技術,2015,41(5):77-80.
2015-04-20
楊歡歡(1988—),男,碩士研究生,主要研究方向:嵌入式開發與應用。秦會斌(1961—),男,教授,博士生導師,主要研究方向:新型電子器件及ASIC設計。