楊歡歡,秦會斌,金步平
(杭州電子科技大學(xué) 電子信息學(xué)院,浙江 杭州 310018)
基于STM32的溫室遠程監(jiān)測和控制系統(tǒng)
楊歡歡,秦會斌,金步平
(杭州電子科技大學(xué) 電子信息學(xué)院,浙江 杭州 310018)
針對目前溫室控制中的網(wǎng)絡(luò)化程度不足,設(shè)計了以測量和控制溫室內(nèi)溫濕度為目的溫室遠程監(jiān)測和控制系統(tǒng)。系統(tǒng)采用STM32單片機作為溫室內(nèi)的控制器,通過溫濕度傳感器DHT11測量溫室內(nèi)的空氣溫濕度,并通過繼電器模塊控制溫室內(nèi)的加熱系統(tǒng)和濕簾系統(tǒng),實現(xiàn)對溫室內(nèi)溫濕度的調(diào)節(jié)。在STM32控制器的設(shè)計中加入ENC28J60模塊,并在STM32上進行LwIP協(xié)議的移植,使STM32控制器可以接入網(wǎng)絡(luò)。利用MFC編寫的遠程控制軟件可以通過TCP/IP協(xié)議與STM32進行通信,進行數(shù)據(jù)的接收、處理以及存儲,實現(xiàn)對溫室內(nèi)溫濕度的遠程監(jiān)測和控制。
STM32控制器;溫濕度傳感器;LwIP協(xié)議;溫室遠程控制
傳統(tǒng)農(nóng)業(yè)需要消耗大量的勞動力,生產(chǎn)效率低,急需要向現(xiàn)代農(nóng)業(yè)的轉(zhuǎn)變。溫室技術(shù)作為現(xiàn)代農(nóng)業(yè)的重要代表將作物的生長從自然環(huán)境獨立出來,形成一個可以進行人工控制的半封閉系統(tǒng)[1-3]。我國從20世紀(jì)90年代開始向溫室技術(shù)發(fā)達的荷蘭、美國等國學(xué)習(xí),但是由于我國農(nóng)業(yè)生產(chǎn)條件與國外情況不同,不能直接照搬國外的模式[4,5],而需要研發(fā)適合我國各地區(qū)生產(chǎn)條件的溫室控制系統(tǒng)。
針對上述情況設(shè)計了一套溫室的遠程監(jiān)測和控制系統(tǒng)。由于在各個環(huán)境因素中,空氣溫濕度對作物的生長具有較大的影響,所以系統(tǒng)選擇對溫室內(nèi)空氣溫濕度進行監(jiān)測和控制。傳統(tǒng)的51系列單片機控制系統(tǒng)運算能力以及功能擴展能力差,PLC控制系統(tǒng)成本太高,所以選擇了外設(shè)豐富、擴展性強以及成本較低的STM32單片機作為溫室內(nèi)的控制器。
文中開發(fā)了一套基于STM32的溫室遠程監(jiān)測和控制系統(tǒng)。通過利用STM32單片機作為溫室內(nèi)的控制器以及MFC編寫的遠程控制軟件可以實現(xiàn)對溫室內(nèi)溫濕度遠程監(jiān)測和控制。在STM32控制器設(shè)計中加入ENC28J60模塊,使控制器可以接入網(wǎng)絡(luò),同時在STM32的程序設(shè)計中移植LwIP協(xié)議,使控制器可以通過TCP/IP協(xié)議與遠程控制軟件進行數(shù)據(jù)通信。STM32控制器直接控制DHT11傳感器和繼電器模塊,DHT11負(fù)責(zé)測量溫室內(nèi)溫濕度,繼電器模塊負(fù)責(zé)控制溫室內(nèi)的加熱系統(tǒng)和濕簾系統(tǒng),改變溫室內(nèi)的溫濕度。在VC 6.0平臺下利用MFC設(shè)計了簡單易用的遠程控制界面,可以遠程監(jiān)測溫室內(nèi)的溫濕度,并對溫室內(nèi)設(shè)備進行控制,將控制過程中產(chǎn)生的數(shù)據(jù)保存到數(shù)據(jù)庫中,系統(tǒng)整體框架如圖1所示。
圖1 系統(tǒng)整體框圖
2.1 核心處理器的選擇
STM32控制器是基于Cortex-M3內(nèi)核的處理器,具有功耗低、中斷延時時間短、門數(shù)少、成本低和調(diào)試簡單等眾多優(yōu)點[6]。STM32在運行模式時即使最大時鐘下,電流也僅有27 mA。在待機模式下功耗更是極低,典型的耗電電流僅為2 μA。STM32各個模式之間切換速度很快,從待機模式切換到運行狀態(tài)只需55 μS,從停機模式下喚醒僅需7 μS,大大提高了單片機的性能。STM32的工作電壓為2.0~3.6 V,設(shè)有上電/掉電復(fù)位電路,具有可編程電壓監(jiān)測器,最高72 MHz的工作頻率。
STM32具有豐富的外圍設(shè)備,內(nèi)置64 K的靜態(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)接口[7],3個USART串口,1個SDIO接口進行存儲器擴展以及1個JTAG接口可以用于連接計算機進行程序調(diào)試。
2.2 溫濕度傳感器的選擇
對于溫室內(nèi)的空氣溫濕度測量,本系統(tǒng)采用的是DHT11傳感器。DHT11中集成了數(shù)字采集模塊,包括1個測溫元件和1個電阻式感濕元件,它的抗干擾能力強、價格便宜、體積小、功耗低,使用方便,工作電壓為3.5 V[8]。其主要參數(shù)如表1所示。
表1 DHT11主要參數(shù)
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之間通信一次的時間最大為3 ms左右。
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與遠程控制軟件進行通信。ENC28J60是美國微芯科技公司開發(fā)的,共有28個引腳,體積小、使用方便,價格便宜[9]。該芯片帶有SPI接口,可以通過SPI接口與STM32控制器進行連接。ENC28J60的工作頻率是25 MHz,工作電壓為3.3 V。ENC28J60中的存儲器以靜態(tài)RAM方式實現(xiàn)。STM32通過使用SPI接口對ENC28J60芯片的寄存器寫入控制參數(shù)和接收數(shù)據(jù),實現(xiàn)以太網(wǎng)功能。
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ū)動程序。
ethernetif.c文件是LwIP協(xié)議棧和STM32網(wǎng)絡(luò)驅(qū)動程序之間的接口,主要工作就是對文件中的函數(shù)進行修改及編寫。其中l(wèi)ow_level_init函數(shù)設(shè)定了網(wǎng)卡的物理地址和每幀最大傳輸字節(jié)數(shù)該函數(shù)對netif結(jié)構(gòu)體的MAC成員neitif->hwaddr賦值為macaddress數(shù)組的值,對netif->flags賦值使其可以使用廣播地址、使能ARP功能。low_level_output函數(shù)負(fù)責(zé)向上層發(fā)送數(shù)據(jù),以pbuf結(jié)構(gòu)體作為參數(shù),利用for循環(huán)調(diào)用memcpy函數(shù)把q->payload鏈表中的數(shù)據(jù)都取出來存放在數(shù)組中,最后調(diào)用驅(qū)動函數(shù)將數(shù)據(jù)發(fā)送出去。
sys_arch.c文件在移植時只需要對各個功能函數(shù)進行修改即可。sys_mbox_new是使用μC/OS-Ⅱ提供的消息隊列機制創(chuàng)建一個空的消息隊列,sys_ mbox_free函數(shù)的功能是進行隊列的刪除工作,當(dāng)該隊列中還有未被取出的消息時,該函數(shù)會報錯,并向應(yīng)用程序發(fā)出通知。sys_mbox_post函數(shù)用于將消息發(fā)送至消息隊列中,如果消息沒有發(fā)送,該函數(shù)會進入阻塞狀態(tài)。sys_mbox_trypost用于嘗試將某個消息發(fā)送至消息隊列中,如果消息被成功發(fā)送返回成功,否則返回失敗。sys_arch_mbox_fetch用于從消息隊列中取出一條消息,若調(diào)用該函數(shù)的線程在指定時間內(nèi)未取到消息會發(fā)生阻塞,當(dāng)超過指定時間以后恢復(fù)至就緒狀態(tài)。sys_arch_mbox_tryfetch嘗試從消息隊列中取出消息。
設(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)容[12]。在驅(qū)動中所要完成的任務(wù)就是實現(xiàn)網(wǎng)絡(luò)的初始化、數(shù)據(jù)的接收發(fā)送以及終端等任務(wù),最終通過硬件接口函數(shù)可以實現(xiàn)對硬件的驅(qū)動。
3.2 測量程序的設(shè)計
DHT11發(fā)送的數(shù)據(jù)包大小為40 bit,包括測得的空氣溫度的整數(shù)部分8 bit,空氣溫度小數(shù)部分為8 bit,空氣濕度整數(shù)部分8 bit,空氣濕度小數(shù)部分8 bit,還有8 bit是進行數(shù)據(jù)校驗,大小為前面4個字節(jié)的和。
當(dāng)DHT11進行接收主機命令和向主機發(fā)送數(shù)據(jù)時,GPIO_Pin_7引腳分別被配置成和上拉輸入模式和推挽輸入模式。其中STM32從DHT11讀取數(shù)據(jù)的程序如下所示。
其中參數(shù)temp表示測量的溫度值,范圍為0℃~50℃,參數(shù)humi表示測量的濕度值,范圍為20%~90%。DHT11_Rst是DHT11的復(fù)位函數(shù),DHT11_Check函數(shù)檢測DHT11是否連接好,若連接好則進行數(shù)據(jù)的讀取。
3.3 控制程序的設(shè)計
加熱系統(tǒng)和濕簾系統(tǒng)通過繼電器控制通斷,兩個繼電器分別通過GPIOB的7和8兩個引腳進行控制。引腳的輸出模式配置為通用推挽輸出模式,速率配置為2 MHz。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 遠程控制軟件的設(shè)計
文中設(shè)計的遠程控制軟件是在美國微軟公司發(fā)行的VC 6.0平臺上利用MFC進行開發(fā)的[13],設(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種模式。遠程控制軟件與STM32F103VET6中央控制器之間采用TCP/IP協(xié)議進行通信,規(guī)定了設(shè)備之間進行數(shù)據(jù)傳輸?shù)臉?biāo)準(zhǔn)格式。2個設(shè)備在進行數(shù)據(jù)傳輸時會建立起一條虛擬的網(wǎng)絡(luò)通道,數(shù)據(jù)和控制命令封裝成數(shù)據(jù)包的形式在這條通道上進行傳輸。遠程控制軟件與STM32通信的過程如圖4所示。
圖4 遠程控制軟件與STM32通信過程
設(shè)計中采用SQL Sever 2008數(shù)據(jù)庫保存系統(tǒng)運行過程中產(chǎn)生的溫室環(huán)境數(shù)據(jù)和執(zhí)行設(shè)備控制信息等數(shù)據(jù)。用戶可以對數(shù)據(jù)庫中的數(shù)據(jù)進行保存、查詢、刪除和維護操作,準(zhǔn)確快速地獲取所需要的數(shù)據(jù)。
將設(shè)計好的程序燒寫到STM32單片機中,調(diào)試成功以后將STM32通過ENC28J60接入網(wǎng)絡(luò)。在遠程控制軟件上通過IP地址和端口號與STM32建立連接,在控制軟件上可以直接獲取溫室內(nèi)的溫濕度數(shù)據(jù),并可以設(shè)置溫濕度的上下限范圍,當(dāng)溫濕度超過設(shè)置的范圍時,可以直接在控制軟件上控制加熱系統(tǒng)和濕簾系統(tǒng)的通斷,來改變溫室內(nèi)的溫濕度,達到適合作物生長的環(huán)境。
文中利用STM32單片機作為溫室內(nèi)的控制器,實現(xiàn)了通過網(wǎng)絡(luò)對溫室內(nèi)溫濕度的遠程測量和控制。由于溫室內(nèi)的CO2濃度和光照強度對植物的生長也有影響,所以可以對系統(tǒng)進行功能擴展,控制更多的環(huán)境變量,使系統(tǒng)可以更好地營造植物生長的環(huán)境。
[1]汪建春,胡曉進.智能溫室的遠程控制設(shè)計[J].計算機光盤軟件與應(yīng)用,2013(03):179-180.
[2]郭炳輝,李進京,江啟峰.溫室智能測控儀發(fā)展現(xiàn)狀與前景展望[J].農(nóng)業(yè)裝備技術(shù),2003(03):15-17.
[3]楊學(xué)坤,蔣曉,諸剛.溫室環(huán)境控制技術(shù)的研究現(xiàn)狀與發(fā)展趨勢[J].中國農(nóng)機化學(xué)報,2013(4):16-18.
[4]譚靜芳,劉成勛.淺談溫室自動控制技術(shù)的發(fā)展概況[J].農(nóng)業(yè)裝備技術(shù),2005(5):21-23.
[5]高靜.溫室大棚環(huán)境監(jiān)控系統(tǒng)研究[J].中國新技術(shù)新產(chǎn)品,2014(2):150-154.
[6]劉軍.例說STM32[M].北京:北京航空航天大學(xué)出版社,2011:2-8.
[7]殷云志,解建偉.基于傳感器協(xié)作網(wǎng)絡(luò)的信號監(jiān)測技術(shù)研究[J].無線電工程,2014,44(7):15-18.
[8]張冬林,李鑫,戴梅,等.基于DHT11的低成本蠶室溫濕度自動控制系統(tǒng)的設(shè)計[J].現(xiàn)代農(nóng)業(yè)科技,2010(18):14-15.
[9]陳奎,吳愛國,游洲.用ENC28J60和FPGA設(shè)計通用以太網(wǎng)控制器[J].電子產(chǎn)品世界,2005(21):94-95.
[10]梁凱鵬,王建偉,肖剛,等.面向服務(wù)的網(wǎng)絡(luò)管理運控系統(tǒng)設(shè)計與實現(xiàn)[J].無線電工程,2011,41(2):7-9,15.
[11]張齊,勞熾元.輕量級協(xié)議棧LWIP的分析與改進[J].計算機工程與設(shè)計,2010.31(10):2169-2171.
[12]崔弘珂.一種空間環(huán)境下的TCP傳輸技術(shù)研究[J].無線電通信技術(shù),2011,37(4):21-24.
[13]辛長安,王顏國.Visual C++權(quán)威剖析—MFC的原理、機制與開發(fā)實例[M].北京:清華大學(xué)出版社,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的溫室遠程監(jiān)測和控制系統(tǒng)[J].無線電通信技術(shù),2015,41(5):77-80.
2015-04-20
楊歡歡(1988—),男,碩士研究生,主要研究方向:嵌入式開發(fā)與應(yīng)用。秦會斌(1961—),男,教授,博士生導(dǎo)師,主要研究方向:新型電子器件及ASIC設(shè)計。