張少鳳
(寶雞職業(yè)技術(shù)學(xué)院,寶雞 721000)
在科技發(fā)展迅猛的今天,我國(guó)農(nóng)村地區(qū)的傳統(tǒng)農(nóng)業(yè)面臨轉(zhuǎn)型升級(jí)。傳統(tǒng)大棚在面臨棚內(nèi)溫度過高時(shí),高溫引起蒸發(fā)量大增,會(huì)造成果蔬等農(nóng)產(chǎn)品局部溫度過高而影響農(nóng)產(chǎn)品出售。并且一般的農(nóng)產(chǎn)品適應(yīng)溫度最高為34℃,如果高于這個(gè)溫度,會(huì)促成葉螨的適合大量繁殖的條件,蔬菜出現(xiàn)葉螨時(shí),葉片會(huì)發(fā)生卷曲的現(xiàn)象,影響蔬菜正常的生長(zhǎng),甚至?xí)斐善渫V拱l(fā)育,從而導(dǎo)致蔬菜的大量減產(chǎn)。所以解決棚內(nèi)溫度過高要從農(nóng)業(yè)大棚的環(huán)境實(shí)時(shí)監(jiān)測(cè)做起,做到監(jiān)測(cè)并報(bào)警,提醒工作人員做出處理,及時(shí)采取通風(fēng)透氣等措施來避免災(zāi)害的發(fā)生[1]。
“農(nóng)業(yè)大棚環(huán)境監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)”體現(xiàn)了智慧農(nóng)業(yè)理念在生產(chǎn)環(huán)境監(jiān)測(cè)方面的應(yīng)用。基于移動(dòng)端的開發(fā),無線通信技術(shù)的應(yīng)用,以及大棚環(huán)境監(jiān)測(cè)平臺(tái)的搭建,通過大量的傳感器節(jié)點(diǎn)采集大棚內(nèi)的信息,幫助管理人員及時(shí)發(fā)現(xiàn)問題,通知并處理,指導(dǎo)農(nóng)民高效、方便的生產(chǎn)。由此,將只依靠人工經(jīng)驗(yàn)的農(nóng)業(yè)生產(chǎn)逐步轉(zhuǎn)變?yōu)榻Y(jié)合物聯(lián)網(wǎng)的現(xiàn)代化生產(chǎn)模式,從而,通過大量的使用智能的機(jī)械化、自動(dòng)化設(shè)備,提高農(nóng)業(yè)生產(chǎn)率,降低勞動(dòng)成本[2]。
本設(shè)計(jì)采用單片機(jī)、溫濕度傳感器和APP相結(jié)合的設(shè)計(jì)方式,傳感器實(shí)時(shí)采集溫濕度,把溫濕度數(shù)據(jù)進(jìn)行數(shù)模轉(zhuǎn)換,然后將轉(zhuǎn)換好的數(shù)據(jù)發(fā)送給單片機(jī),在硬件模塊的屏幕上進(jìn)行顯示,并通過藍(lán)牙模塊與APP交互,當(dāng)溫度超過預(yù)先設(shè)定值時(shí),APP發(fā)出警示,工作人員通過APP發(fā)送指令,打開風(fēng)扇,當(dāng)溫度低于預(yù)先設(shè)定值后可以選擇關(guān)閉風(fēng)扇[3]。
Keil是兼容C語言的開發(fā)工具,提供包括C編譯器、庫管理、仿真調(diào)試器等為一體的開發(fā)方案,通過集成開發(fā)環(huán)境將其組合在一起。因?yàn)樵撓到y(tǒng)將采用STM32,所以選擇了支持ARM芯片的Keil μ Vision5的開發(fā)工具。Keil5的開發(fā)界面,如圖1所示。
系統(tǒng)采用Eclipse作為移動(dòng)端軟件開發(fā)的工具,Eclipse是一種可擴(kuò)展的開放源代碼的IDE,具備免費(fèi)、純Java語言編寫、免安裝、擴(kuò)展性強(qiáng)等特點(diǎn)。
圖1 Keil 5開發(fā)界面
農(nóng)業(yè)大棚環(huán)境監(jiān)測(cè)系統(tǒng)是可以采集大棚內(nèi)的溫度和濕度信息,通預(yù)設(shè)值比和藍(lán)牙模塊對(duì)管理人員進(jìn)行預(yù)警,再處理的裝置。本設(shè)計(jì)由基本電路和移動(dòng)端組成。基本電路分為:溫濕度檢測(cè)采集電路、單片機(jī)控制處理電路、LCD1602顯示電路等。
溫濕度傳感器可以將所處環(huán)境中的溫度、濕度信息進(jìn)行采集并發(fā)送給單片機(jī),在LCD上顯示的同時(shí),單片機(jī)會(huì)分析處理得到的數(shù)據(jù),判斷數(shù)據(jù)是否大于預(yù)設(shè)值,如果大于預(yù)設(shè)值,通過藍(lán)牙模塊向移動(dòng)端的APP發(fā)送提示信息,管理員通過APP打開或關(guān)閉風(fēng)扇。設(shè)計(jì)分為6個(gè)模塊,包括溫濕度采集模塊、STM32單片機(jī)模塊、LCD顯示模塊、藍(lán)牙模塊、APP模塊和風(fēng)扇控制模塊。STM32單片機(jī)為核心數(shù)據(jù)處理層,其他部分配合單片機(jī)完成功能,如圖2所示。
圖2 農(nóng)業(yè)大棚環(huán)境監(jiān)測(cè)系統(tǒng)結(jié)構(gòu)
系統(tǒng)設(shè)計(jì)中使用到了溫濕度傳感器、單片機(jī)、液晶顯示屏、藍(lán)牙、風(fēng)扇等硬件。
(1)DH11溫濕度傳感器
溫濕度傳感器是一種將溫濕度信號(hào)轉(zhuǎn)換為電信號(hào)的傳感器。它將采集到的溫濕度轉(zhuǎn)化為電信號(hào),再由數(shù)模電路將溫濕度的電信號(hào)轉(zhuǎn)化為單片機(jī)可識(shí)別的數(shù)字信號(hào)。選擇溫濕度傳感器主要是為了其是否能夠適應(yīng)監(jiān)測(cè)環(huán)境的溫度要求、溫濕度范圍的大小和精度的要求,本系統(tǒng)采用DH11溫濕度傳感器[4]。該部分的主要代碼如下。
uart_init(9600);//藍(lán)牙初始化 包含開啟中斷
TIM3_Int_Init(499,7199);//50 ms
LED_Init();// 風(fēng)扇初始化
Lcd_GPIO_init();
Lcd_Init();
delay_ms(20);
sprintf(dis1,"My designer ! ");
Lcd_Puts(0,0,(u8 *)dis1);
fengshan = 1;
while(1)
{
if(DHT11_ReadData()) //是否讀取到溫濕度[8]
{
sprintf(dis0,"Temp:%02dCDH:%02d%%",
(u16)DHT11.Tem_H,(u16)DHT11.Hum_H);//打印溫濕度
Lcd_Puts(0,1,(unsigned char *)dis0);//LCD顯示
Lcd_1Put(7,1,0xdf);
printf(dis0);
printf(" ");
if(DHT11.Tem_H>34)//溫度>34°
{
printf("Temp High ");//發(fā)送溫度過高
}
else
{
printf("Temp Normal ");//發(fā)送溫度正常
}
delay_ms(800);//延時(shí)
}
}
(2)STM32F103C8T6核心板
單片機(jī)作為本設(shè)計(jì)的核心部分主要有四個(gè)功能,接收傳感器傳送的溫濕度數(shù)據(jù);將溫濕度在LCD上顯示;通過藍(lán)牙模塊發(fā)送數(shù)據(jù);通過藍(lán)牙模塊接收到的數(shù)據(jù)控制風(fēng)扇。根據(jù)本次系統(tǒng)設(shè)計(jì)的要求,采用STM32F103C8T6單片機(jī)[5]。
(3)LCD1602
LCD1602是一種工業(yè)字符液晶,最多可以一次顯示16*02(即32)個(gè)字符,是專門用來顯示數(shù)字、字母、標(biāo)點(diǎn)符號(hào)等多種字符的點(diǎn)陣型液晶顯示模塊本系統(tǒng)的液晶顯示模塊,將溫濕度傳感器采集到的數(shù)據(jù),通過由STM32單片機(jī)對(duì)接收到的數(shù)據(jù)處理后,通過LCD1602顯示[5]。
(4)藍(lán)牙模塊
根據(jù)系統(tǒng)需求,選用HC-06作為藍(lán)牙模塊,引腳接口主要包括RXD、TXD、GND、VCC??梢赃B接各種型號(hào)的單片機(jī)(51、ARM、STM32),并且可以與帶有藍(lán)牙功能的手機(jī)、電腦等設(shè)備通信[6]。
(5)風(fēng)扇
風(fēng)扇作為本設(shè)計(jì)的控制模塊。在接收到相關(guān)指令時(shí),單片機(jī)通過三極管驅(qū)動(dòng),控制風(fēng)扇打開或關(guān)閉。部分代碼如下。
void USART1_IRQHandler(void)
{
u8 Res;
#ifdef OS_TICKS_PER_SEC
OSIntEnter();
#endif
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中斷
{
Res=USART_ReceiveData(USART1);//獲取APP發(fā)來的數(shù)據(jù)
if(Res=='O')
{fengshan = 0;}//打開風(fēng)扇
else if(Res=='C')
{fengshan = 1;}//關(guān)閉風(fēng)扇
}
#ifdef OS_TICKS_PER_SEC
OSIntExit();
#endif
}
系統(tǒng)軟件設(shè)計(jì)主要包括部分代碼控制硬件,和APP設(shè)計(jì)代碼。根據(jù)代碼量現(xiàn)將APP主要功能加以介紹。
(1)進(jìn)入APP的主界面,如圖3所示。
(2)點(diǎn)擊連接按鈕后,如圖4所示。
(3)當(dāng)手機(jī)接收到“Temp High”溫度過高的提醒后,點(diǎn)擊open按鈕打開風(fēng)扇,點(diǎn)擊close按鈕關(guān)閉風(fēng)扇[7-8],如圖5、圖6所示。
農(nóng)業(yè)大棚環(huán)境監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)主要完成了接收數(shù)據(jù)、顯示數(shù)據(jù)、發(fā)送數(shù)據(jù)、藍(lán)牙連接等功能。該系統(tǒng)的測(cè)試用例,從測(cè)試的結(jié)果來看與期望的結(jié)果完全相同,如表1所示。
圖3 主界面
圖4 點(diǎn)擊連接按鈕
圖5 藍(lán)牙連接成功
功能特性系統(tǒng)測(cè)試測(cè)試目的驗(yàn)證否能夠連接藍(lán)牙設(shè)備,數(shù)據(jù)接收、發(fā)送、顯示。測(cè)試內(nèi)容操作描述期望結(jié)果實(shí)際結(jié)果測(cè)試狀態(tài)1打開設(shè)備電源開關(guān)設(shè)備上電成功,液晶屏顯示數(shù)據(jù)設(shè)備上電成功,液晶屏顯示數(shù)據(jù)與期望結(jié)果相同2APP點(diǎn)擊連接按鈕彈出可連接設(shè)備列表彈出可連接設(shè)備列表與期望結(jié)果相同3APP連接藍(lán)牙設(shè)備彈出Toast,提示用戶連接成功彈出Toast,提示用戶連接成功與期望結(jié)果相同4APP等待數(shù)據(jù)接收數(shù)據(jù)成功顯示數(shù)據(jù)成功顯示。與期望結(jié)果相同5APP點(diǎn)擊open按鈕風(fēng)扇打開風(fēng)扇打開與期望結(jié)果相同6APP點(diǎn)擊close按鈕風(fēng)扇關(guān)閉風(fēng)扇關(guān)閉與期望結(jié)果相同
在代碼編寫的過程中只能發(fā)現(xiàn)語法部分的錯(cuò)誤,而測(cè)試是在程序成功運(yùn)行后,通過不同的操作方式,發(fā)現(xiàn)漏洞。只用通過測(cè)試發(fā)現(xiàn)代碼細(xì)節(jié)部分存在的問題,并加以修改,才能使程序更具有健壯性,滿足系統(tǒng)功能需求的同時(shí)。
本次設(shè)計(jì)主要由單片機(jī)、溫濕度傳感器、LCD液晶屏、藍(lán)牙、風(fēng)扇、APP構(gòu)成。系統(tǒng)的優(yōu)勢(shì)包括:傳感器具有長(zhǎng)期穩(wěn)定工作、對(duì)其他因素有耐受性等優(yōu)良特性;STM32F103C8T6具備高性能、低成本、低功耗等特點(diǎn);開發(fā)板的代碼采用C語言編寫,代碼執(zhí)行效率高,代碼占用空間?。灰苿?dòng)APP利用自身優(yōu)勢(shì),對(duì)數(shù)據(jù)隨時(shí)查看并控制風(fēng)扇的開閉。
本次系統(tǒng)設(shè)計(jì)也存在一些有待改進(jìn)的問題,比如環(huán)境監(jiān)測(cè)的范圍有限??臻g過大的大棚就會(huì)出現(xiàn)監(jiān)測(cè)不及時(shí)等問題。后期需要完善的地方,比如加入多個(gè)傳感器分布在倉庫的各個(gè)角落,把他們進(jìn)行組網(wǎng)操作。這樣就能實(shí)現(xiàn)對(duì)各個(gè)角落的數(shù)據(jù)精準(zhǔn)采集。