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