智慧農(nóng)業(yè)大棚_第1頁
智慧農(nóng)業(yè)大棚_第2頁
智慧農(nóng)業(yè)大棚_第3頁
智慧農(nóng)業(yè)大棚_第4頁
智慧農(nóng)業(yè)大棚_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、課程設(shè)計說明書課程名稱: 課程設(shè)計題目: 專 業(yè): 班 級: 姓 名: 學(xué) 號: 2016年 7月 22日指導(dǎo)教師評語成績: 指導(dǎo)教師(簽章):年月日目錄1需求分析說明11.1設(shè)計背景11.2組成部分11.3功能需求12概要設(shè)計說明22.1各模塊功能描述22.2模塊調(diào)用圖22.3系統(tǒng)執(zhí)行流程圖33詳細(xì)設(shè)計說明53.1溫濕亮度檢測模塊53.2棚頂異物檢測模塊63.3危險區(qū)域保護模塊63.4防盜監(jiān)控模塊73.5蓄水罐液面高度監(jiān)測模塊83.6火災(zāi)監(jiān)控模塊83.7串口控制模塊93.8燈光控制模塊103.9遮陽網(wǎng)控制模塊143.10灌溉模塊154調(diào)試分析174.1終端節(jié)點與協(xié)調(diào)器之間通信測試174.2協(xié)

2、調(diào)器與開發(fā)板之間通信測試185用戶使用說明196課程設(shè)計總結(jié)191需求分析說明1.1設(shè)計背景智能化控制系統(tǒng)應(yīng)用到大棚種植上,利用最先進的生物模擬技術(shù),模擬出最適合棚內(nèi)植物生長的環(huán)境,采用溫度、濕度、CO2、光照度傳感器等感知大棚的各項環(huán)境指標(biāo),并通過微機進行數(shù)據(jù)分析,由微機對棚內(nèi)的水簾、風(fēng)機、遮陽板等設(shè)施實施監(jiān)控,從而改變大棚內(nèi)部的生物生長環(huán)境。 智能大棚是自動化控制程序用于在溫室大棚智能控制的結(jié)果: 比較人工的控制來說,智能控制最大的好處就是能夠相對恒定的控制大棚內(nèi)部的環(huán)境,對于環(huán)境要求比較高的植物來說,更能避免因為人為因素而造成生產(chǎn)損失。 相對生產(chǎn)來說,將智能化控制系統(tǒng)應(yīng)用到大棚生產(chǎn)以后,

3、產(chǎn)量與質(zhì)量比人工控制的大棚都有極大的提高,對于不同的種植品種而言,提高產(chǎn)量與質(zhì)量相對不同,對于檔次較高的經(jīng)濟作物來說,生產(chǎn)效率可以提高30%以上。 相對運行成本來的核算,對于有一定規(guī)模的種植企業(yè)來說,極大的降低了勞動力成本,設(shè)備的投入與運行,可以完全由節(jié)約下來的勞動力成本中核算出來,使用時間越長,光節(jié)約的勞動力成本就是一筆巨大的利潤。1.2組成部分現(xiàn)代化經(jīng)濟的迅速發(fā)展,促使了人們對機械智能化的強烈認(rèn)知?,F(xiàn)代化智能溫 室也稱作自動化溫室,是指配備了由計算機控制的可移動天窗、遮陽系統(tǒng)、保溫、濕窗簾/風(fēng)扇降溫系統(tǒng)、噴滴灌系統(tǒng)或滴灌系統(tǒng)、移動苗床等自動化設(shè)施,基于農(nóng)業(yè)溫室環(huán)境的高科技“智能”溫室。智能

4、溫室的控制一般由信號采集系統(tǒng)、中心計算機、控制系統(tǒng)三大部分組成。1.3功能需求(1) 對大棚內(nèi)溫度、濕度、光照情況等基本信息的采集并顯示。(2) 實現(xiàn)灌溉遠(yuǎn)程化、自動化,大大節(jié)省人力成本。(3) 對大棚整體結(jié)構(gòu)情況的監(jiān)測、火災(zāi)等突發(fā)事件的檢測并發(fā)出警報。(4) 實現(xiàn)大棚內(nèi)燈等基本電器的遠(yuǎn)程化、自動化控制,使系統(tǒng)更加智能,用戶體驗感更好。(5) 實現(xiàn)遮陽網(wǎng)等蔬菜保護機制的遠(yuǎn)程化、自動化控制。(6)對于監(jiān)測到的大棚內(nèi)的各種信息輸出到客戶端的顯示屏上。2概要設(shè)計說明2.1各模塊功能描述(1) 主函數(shù)模塊:初始化系統(tǒng)界面,調(diào)用各個模塊實現(xiàn)各種功能。(2) 協(xié)調(diào)器模塊:接收各個節(jié)點發(fā)送的數(shù)據(jù)并通過串口進

5、行轉(zhuǎn)發(fā)到客戶端,通過串口接收客戶端發(fā)送的指令并轉(zhuǎn)發(fā)給各個節(jié)點。(3) 溫、濕、亮度監(jiān)測模塊:使用溫濕度光電傳感模塊對智慧農(nóng)業(yè)大棚內(nèi)的溫度、濕度、亮度進行監(jiān)測并實時顯示到控制系統(tǒng)界面上。(4) 棚頂異物監(jiān)測模塊:使用震動傳感器模塊對智慧農(nóng)業(yè)大棚的棚頂進行實時監(jiān)測并實時顯示到控制系統(tǒng)界面上。(5) 危險區(qū)域保護模塊:使用觸摸傳感器模塊對存放藥品等危險區(qū)域、倉庫進行監(jiān)測,一旦監(jiān)測到有人觸摸門把手,立刻在控制系統(tǒng)界面上給出警報。(6) 防盜監(jiān)控模塊:使用紅外熱釋電傳感器模塊對智慧農(nóng)業(yè)大棚內(nèi)進行實時監(jiān)測,有人進入,控制系統(tǒng)界面立刻顯示警報。(7) 蓄水罐液面高度監(jiān)測模塊:使用超聲波測距模塊對智慧農(nóng)業(yè)大棚

6、的蓄水罐中水的剩余量進行監(jiān)測,實時顯示在控制系統(tǒng)界面上。(8) 火災(zāi)監(jiān)控模塊:使用煙霧傳感器模塊對智慧農(nóng)業(yè)大棚內(nèi)進行實時監(jiān)測,一旦檢測到煙霧,控制系統(tǒng)界面上立刻給出警報。(9) 串口控制模塊:控制COM1串口的開啟和關(guān)閉。(10) 遮陽網(wǎng)控制模塊:使用電機控制模塊實現(xiàn)智慧農(nóng)業(yè)大棚遮陽網(wǎng)的收起、放下、緊急停止功能。(11) 灌溉模塊:使用繼電器控制模塊實現(xiàn)開始智慧農(nóng)業(yè)大棚的開始灌溉和停止灌溉功能。(12) 燈光控制模塊:使用電機控制模塊的燈光部分實現(xiàn)對智慧農(nóng)業(yè)大棚A、B、C、D四個區(qū)的燈光控制。2.2模塊調(diào)用圖圖1.1 模塊調(diào)用圖2.3系統(tǒng)執(zhí)行流程圖圖1.2 系統(tǒng)執(zhí)行流程圖3詳細(xì)設(shè)計說明3.1溫

7、濕亮度檢測模塊/*mainwindow.c*/void MainWindow:updateTempHumiLig()/溫濕亮度 ui->lcd_temp->display(temp_humi_light->getTemperature(); ui->lcd_humi->display(temp_humi_light->getHumidity(); ui->lcd_lig->display(QString:number(temp_humi_light->getLight(), 'f', 1);void MainWindow:p

8、rocessMsgFromSerial(QByteArray msg)/協(xié)調(diào)器消息解析 if(msg.length() < 6) return; /溫濕亮度模塊 if(msg3 = 0x02 && msg4 = 0x01) temp_humi_light->setValue(msg); updateTempHumiLig(); /*temp_humi_light*/void Temp_Humi_Light:setValue(QByteArray& byte) unsigned char adc_value2; temperature = (byte5 <

9、;< 8) + byte6; humidity = (byte7 << 8) + byte8; adc_value0 = byte10; adc_value1 = byte9; adc_value0 = adc_value0 >> 2; light = (adc_value1*256 + adc_value0) * 3.3 / 8192; light = light / 4; light = light * 913;使用溫濕度光電傳感模塊對智慧農(nóng)業(yè)大棚內(nèi)的溫度、濕度、亮度進行實時監(jiān)測,溫濕度光電傳感模塊把監(jiān)測的信息發(fā)送給協(xié)調(diào)器,協(xié)調(diào)器把信息通過串口發(fā)送到運行著智慧

10、農(nóng)業(yè)大棚監(jiān)控系統(tǒng)的開發(fā)板,監(jiān)控系統(tǒng)void MainWindow:processMsgFromSerial(QByteArray msg)對接收到的信息進行解析并實時顯示在監(jiān)控系統(tǒng)的界面上。3.2棚頂異物檢測模塊/*mainwindow.c*/振動事件 else if(msg3 = 0x03 && msg4 = 0x01) if(msg5 = 0x01) shake->setState(1); ui->label_shake->setPalette(pe_red); ui->label_shake->setText("棚頂有異物"

11、;); else if(msg5 = 0x00) shake->setState(0); ui->label_shake->setPalette(pe_black); ui->label_shake->setText("棚頂安全"); 使用震動傳感??鞂χ腔坜r(nóng)業(yè)大棚的棚頂進行異物檢測,震動傳感模塊不斷向協(xié)調(diào)器發(fā)送消息,協(xié)調(diào)器通過串口向運行著智慧農(nóng)業(yè)大棚監(jiān)控系統(tǒng)的開發(fā)板發(fā)送消息,監(jiān)控系統(tǒng)對消息進行解析。未檢測到震動,在監(jiān)控系統(tǒng)界面上顯示棚頂安全;檢測到震動,在監(jiān)控系統(tǒng)界面上顯示棚頂有異物。3.3危險區(qū)域保護模塊/*mainwindow.c*/觸摸

12、模塊else if(msg3 = 0x07 && msg4 = 0x01) if(msg5 = 0x01) touch->setState(1); ui->label_touch->setPalette(pe_red); ui->label_touch->setText("有人進入危險區(qū)域"); else if(msg5 = 0x00) touch->setState(0); ui->label_touch->setPalette(pe_black); ui->label_touch->setTex

13、t("無人進入危險區(qū)域"); 使用觸摸傳感模塊對存放藥品等危險房間進行保護,觸摸模塊可安裝在房間門把手上。一旦有人觸碰該模塊,監(jiān)控系統(tǒng)會立刻從協(xié)調(diào)器發(fā)送的消息中解析出,并顯示“有人進入危險區(qū)域”在監(jiān)控系統(tǒng)的界面上;沒有人觸碰該模塊,監(jiān)控系統(tǒng)界面上顯示“無人進入危險區(qū)域”。3.4防盜監(jiān)控模塊/*mainwindow.c*/熱釋紅外傳感模塊 else if(msg3 = 0x05 && msg4 = 0x01) if(msg5 = 0x01) infray->setState(1); ui->label_inf_ray->setPalette(

14、pe_red); ui->label_inf_ray->setText("違法者進入"); else if(msg5 = 0x00) infray->setState(0); ui->label_inf_ray->setPalette(pe_black); ui->label_inf_ray->setText("安全"); 使用熱釋紅外傳感模塊對智慧農(nóng)業(yè)大棚進行防盜監(jiān)控,熱釋紅外傳感模塊通過協(xié)調(diào)器不斷向智慧農(nóng)業(yè)大棚監(jiān)控系統(tǒng)發(fā)送消息,當(dāng)監(jiān)測到有人進入大棚時,監(jiān)控系統(tǒng)界面上顯示“違法者進入”;沒有檢測到周圍有人時,監(jiān)

15、控系統(tǒng)界面上顯示“安全”。3.5蓄水罐液面高度監(jiān)測模塊/*mainwindow.c*/超聲波測距模塊 else if(msg3 = 0x08 && msg4 = 0x01) int len = 1000 - msg5 * 256 + msg6;/應(yīng)用于液面檢測 ui->label_ultra->setText(QString:number(len); ultra->setState(len); emit addLog(msg.toHex();使用超聲波測距模塊對智慧農(nóng)業(yè)大棚蓄水罐液面高度進行監(jiān)測,假定蓄水罐高度1000mm(10m),液面高度即為1000mm減

16、去安裝在蓄水罐頂部的超聲波測距模塊測出的距離,并實時顯示在監(jiān)控系統(tǒng)的界面上。3.6火災(zāi)監(jiān)控模塊/*mainwindow.c*/煙霧模塊 else if(msg3 = 0x04 && msg4 = 0x01) if(msg5 = 0x01) smoke->setState(1); ui->label_fire->setPalette(pe_red); ui->label_fire->setText("發(fā)生火災(zāi)"); else if(msg5 = 0x00) smoke->setState(0); ui->label_f

17、ire->setPalette(pe_black); ui->label_fire->setText("沒有火災(zāi)"); 使用煙霧模塊對智慧農(nóng)業(yè)大棚的火災(zāi)情況進行監(jiān)測,并通過協(xié)調(diào)器向智慧農(nóng)業(yè)大棚監(jiān)控系統(tǒng)發(fā)送消息。沒有檢測到煙霧時,監(jiān)控系統(tǒng)界面上顯示“沒有火災(zāi)”;當(dāng)檢測到煙霧時,監(jiān)控系統(tǒng)界面上顯示“發(fā)生火災(zāi)”。3.7串口控制模塊/*mainwindow.c*/void MainWindow:changeSerial(int state)/串口打開關(guān)閉操作 /對傳入的參數(shù)取反操作 if(1 = state) if(serial_server->closeC

18、om() ui->btn_serial->setText("打開"); ui->btn_serial->setStyleSheet(BACKGROUND_COLOR_WHITE); emit addLog("close-success"); else emit addLog("warning!-close-failed"); else if(0 = state) if(serial_server->openCom() ui->btn_serial->setText("關(guān)閉"

19、); ui->btn_serial->setStyleSheet(BACKGROUND_COLOR_GREEN); emit addLog("open-success"); else emit addLog("warning!-open-failed"); 控制協(xié)調(diào)器與運行智慧農(nóng)業(yè)大棚監(jiān)控系統(tǒng)間的通信,只有在打開串口的狀態(tài)下,用戶才可以通過監(jiān)控系統(tǒng)控制各個模塊。3.8燈光控制模塊/*mainwindow.c*/void MainWindow:on_btn_light_1_clicked()/A區(qū)燈光打開 if(-1 = serial_serv

20、er->writeToSerial(Motor:MSG_LIGHT_AON) emit addLog("warning!-lightA on-failed"); return; ui->btn_light_1->setStyleSheet(BACKGROUND_COLOR_GREEN); emit addLog("lightA on-success"); lighta=1;void MainWindow:on_btn_light_5_clicked()/A區(qū)燈光關(guān)閉 if(lighta = 0) emit addLog("wa

21、rning!-lightA off-already"); return; if(-1 = serial_server->writeToSerial(Motor:MSG_LIGHT_AOFF) emit addLog("warning!-lightA off-failed"); return; ui->btn_light_1->setStyleSheet(BACKGROUND_COLOR_GREEN); emit addLog("lightA off-success"); lighta = 0;void MainWindow:o

22、n_btn_light_2_clicked()/B區(qū)燈打開 if(-1 = serial_server->writeToSerial(Motor:MSG_LIGHT_BON) emit addLog("warning!-lightB on-failed"); return;ui->btn_light_2->setStyleSheet(BACKGROUND_COLOR_GREEN);emit addLog("lightB on-success");lightb=1;void MainWindow:on_btn_light_6_clicke

23、d()/B區(qū)燈關(guān)閉 if(lightb = 0) emit addLog("warning!-lightB off-already"); return; if(-1 = serial_server->writeToSerial(Motor:MSG_LIGHT_BOFF) emit addLog("warning!-lightB off-failed"); return; ui->btn_light_6->setStyleSheet(BACKGROUND_COLOR_GREEN); emit addLog("lightB off

24、-success"); lightb = 0;void MainWindow:on_btn_light_3_clicked()/c區(qū)燈打開 if(-1 = serial_server->writeToSerial(Motor:MSG_LIGHT_CON) emit addLog("warning!-lightC on-failed"); return;ui->btn_light_3->setStyleSheet(BACKGROUND_COLOR_GREEN);emit addLog("lightC on-success");l

25、ightc=1;void MainWindow:on_btn_light_7_clicked()/c區(qū)燈關(guān)閉 if(lightc = 0) emit addLog("warning!-lightC off-already"); return; if(-1 = serial_server->writeToSerial(Motor:MSG_LIGHT_COFF) emit addLog("warning!-lightC off-failed"); return; ui->btn_light_7->setStyleSheet(BACKGROU

26、ND_COLOR_GREEN);emit addLog("lightC off-success");lightc = 0;void MainWindow:on_btn_light_4_clicked()/D區(qū)燈打開 if(-1 = serial_server->writeToSerial(Motor:MSG_LIGHT_DON) emit addLog("warning!-lightD on-failed"); return;ui->btn_light_4->setStyleSheet(BACKGROUND_COLOR_GREEN);e

27、mit addLog("lightD on-success");lightc=1;void MainWindow:on_btn_light_8_clicked()/D區(qū)燈關(guān)閉 if(lightd = 0) emit addLog("warning!-lightD off-already"); return; if(-1 = serial_server->writeToSerial(Motor:MSG_LIGHT_DOFF) emit addLog("warning!-lightD off-failed"); return; ui

28、->btn_light_8->setStyleSheet(BACKGROUND_COLOR_GREEN);emit addLog("lightD off-success");lightd = 0;void MainWindow:on_btn_light_9_clicked()/一鍵打開 on_btn_light_1_clicked(); on_btn_light_2_clicked(); on_btn_light_3_clicked(); on_btn_light_4_clicked();void MainWindow:on_btn_light_10_click

29、ed()/一鍵關(guān)閉 on_btn_light_5_clicked(); on_btn_light_6_clicked(); on_btn_light_7_clicked(); on_btn_light_8_clicked();3.9遮陽網(wǎng)控制模塊/*mainwindow.c*/void MainWindow:changeMotor(int state) if(0 = state)/電機停止 if(-1 = serial_server->writeToSerial(Motor:MSG_MOTOR_STOP) emit addLog("warning!-emergency stop

30、-failed"); return; motor->setState(0); ui->btn_motor_stop->setStyleSheet(BACKGROUND_COLOR_GREEN); ui->btn_motor_b->setStyleSheet(BACKGROUND_COLOR_WHITE); ui->btn_motor_f->setStyleSheet(BACKGROUND_COLOR_WHITE); emit addLog("emergency stop-success"); else if(1 = sta

31、te)/電機正轉(zhuǎn) if(-1 = serial_server->writeToSerial(Motor:MSG_MOTOR_FORE) emit addLog("warning!-light cover pack up-failed"); return; motor->setState(1); ui->btn_motor_f->setStyleSheet(BACKGROUND_COLOR_GREEN); ui->btn_motor_b->setStyleSheet(BACKGROUND_COLOR_WHITE); ui->btn_m

32、otor_stop->setStyleSheet(BACKGROUND_COLOR_WHITE); emit addLog("light cover pack up-success"); else if(2 = state)/電機反轉(zhuǎn) if(-1 = serial_server->writeToSerial(Motor:MSG_MOTOR_BACK) emit addLog("warning!-light cover put down-failed"); return; motor->setState(2); ui->btn_mo

33、tor_b->setStyleSheet(BACKGROUND_COLOR_GREEN); ui->btn_motor_f->setStyleSheet(BACKGROUND_COLOR_WHITE); ui->btn_motor_stop->setStyleSheet(BACKGROUND_COLOR_WHITE); emit addLog("light cover put down-success"); 使用電機控制模塊的燈光部分對智慧農(nóng)業(yè)大棚的A、B、C、D四個區(qū)進行燈光控制,用戶在智慧農(nóng)業(yè)大棚監(jiān)控系統(tǒng)界面上的燈光控制區(qū)通過點擊“開啟”、

34、“關(guān)閉”等按鈕發(fā)送控制指令,指令通過串口發(fā)送到協(xié)調(diào)器并由協(xié)調(diào)器進行廣播。添加“一鍵開燈”、“一件關(guān)燈”按鈕。3.10灌溉模塊/*mainwindow.c*/void MainWindow:changeRelay(int state)/繼電器模塊操作 /對傳入的參數(shù)取反操作 if(1 = state) if(-1 = serial_server->writeToSerial(Relays:MSG_RELAY_CLOSE) emit addLog("warning!-stop irrigate-failed"); return; relays->setState(0); ui->btn_relay->setStyleSheet(BACKGROUND_COLOR_WHITE); ui->btn_relay->setText("開始灌溉"); emit addLog("stop irrigate-success"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論