版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
瘤尾守宮智能養(yǎng)殖孵化環(huán)境控制系統(tǒng)第1章緒論1.1研究目的及意義瘤尾守宮是一種生活在澳大利亞的生物,被認為是海龍的親戚。瘤尾守宮的孵化環(huán)境研究是為了揭示其繁殖生態(tài)和提供促進繁殖成功的條件。孵化環(huán)境對于保證瘤尾守宮幼體的生存和成長至關(guān)重要。在研究中,首先需要了解瘤尾守宮的繁殖行為和繁殖周期。觀察野外種群中的交配和產(chǎn)卵行為,記錄交配行為的頻率、時機和地點。通過這些觀察,可以確定適合瘤尾守宮繁殖的季節(jié)和繁殖地點。在孵化環(huán)境研究中,水質(zhì)條件是至關(guān)重要的因素。瘤尾守宮的卵需要一定的水質(zhì)參數(shù)來保證孵化的成功。研究人員需要測量和監(jiān)控水溫、鹽度和PH值等參數(shù),并調(diào)整這些參數(shù)來創(chuàng)造最適合孵化的環(huán)境。此外,水體中的溶解氧含量也需要控制在適宜范圍內(nèi),以確保卵的健康孵化。孵化環(huán)境中的底質(zhì)和植被也需要研究。瘤尾守宮的卵通常會附著在海藻或其他底質(zhì)上。了解瘤尾守宮的產(chǎn)卵習性和卵的附著偏好,可以為模擬合適的孵化環(huán)境提供參考。提供合適的底質(zhì)和植被可以提供卵的保護和適宜的卵殼附著表面。此外,光照條件也是重要的研究內(nèi)容。瘤尾守宮在野外生活中處于光線充足的環(huán)境,因此需要模擬合適的光照條件來促進孵化。研究人員可以調(diào)整光照強度和光照周期,以確保瘤尾守宮卵的健康發(fā)育和孵化成功。隨著蛋肉類的社會需求量不斷增長,給位于瘤尾守宮養(yǎng)殖上游的孵化產(chǎn)業(yè)帶來了活力,促進了孵化產(chǎn)業(yè)朝規(guī)?;?、集約化方向發(fā)展。孵化產(chǎn)業(yè)所使用的人工孵化技術(shù)是利用仿生學思想,通過模擬瘤尾守宮孵化的自然環(huán)境,人為創(chuàng)造蛋種胚胎發(fā)育所需條件,以達孵化出幼禽的目的。本文針對目前孵化產(chǎn)業(yè)信息化程度不高、孵化環(huán)境參數(shù)調(diào)控實時性差等不足,設(shè)計出了一種基于物聯(lián)網(wǎng)技術(shù)的瘤尾守宮孵化環(huán)境監(jiān)控系統(tǒng)。國外的農(nóng)業(yè)產(chǎn)業(yè)智能化發(fā)展起步較早,美國在20世紀40年代已基本實現(xiàn)了農(nóng)業(yè)機械化,20世紀70年代末開始研究農(nóng)業(yè)專家系統(tǒng)。物聯(lián)網(wǎng)作為又一次世界信息產(chǎn)業(yè)浪潮,具有優(yōu)良的發(fā)展前景,與農(nóng)業(yè)產(chǎn)業(yè)的融合是大勢所趨。伴隨著自動化技術(shù)、物聯(lián)網(wǎng)技術(shù)、計算機網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,使得農(nóng)業(yè)物聯(lián)網(wǎng)產(chǎn)業(yè)愈發(fā)成熟,國外農(nóng)業(yè)現(xiàn)代化發(fā)展進程得到了加速。對于當前的社會發(fā)展,瘤尾守宮孵化產(chǎn)業(yè)正朝著規(guī)模化、集約化方向發(fā)展,為提高種蛋孵化率與健雛率、提高瘤尾守宮孵化產(chǎn)業(yè)的現(xiàn)代化水平,亟需先進物聯(lián)網(wǎng)技術(shù)對禽類孵化時的環(huán)境進行準確實時監(jiān)控和管理,因此,設(shè)計一種具有新興物聯(lián)網(wǎng)技術(shù)的孵化監(jiān)控系統(tǒng)具有廣闊市場前景。隨著信息化技術(shù)的迅速發(fā)展,我們越來越注重信息的傳遞和共享。在現(xiàn)代家畜養(yǎng)殖中,信息控制的需求越來越大。因此,我們開始將物聯(lián)網(wǎng)技術(shù)應用于家畜養(yǎng)殖,這是信息時代的新型應用技術(shù),為畜牧業(yè)的發(fā)展轉(zhuǎn)型帶來了新的動力。綜上所述,物聯(lián)網(wǎng)在當今家畜養(yǎng)殖中具有廣泛的應用。相比傳統(tǒng)的飼養(yǎng)技術(shù),基于物聯(lián)網(wǎng)技術(shù)的養(yǎng)殖模式實現(xiàn)了信息化管理,注重智能化的操作,使整個家畜的養(yǎng)殖和管理更加系統(tǒng)化、科學化。1.2國內(nèi)外研究現(xiàn)狀2022年,李惠娜在《基于STM32和物聯(lián)網(wǎng)公有云的雞蛋孵化環(huán)境檢測系統(tǒng)設(shè)計》文中談到農(nóng)業(yè)物聯(lián)網(wǎng)的應用則主要是在農(nóng)業(yè)生產(chǎn)環(huán)境因子方面實現(xiàn)感知、傳輸、處理和控制[2]。伴隨著物聯(lián)網(wǎng)技術(shù)不斷發(fā)展,對農(nóng)業(yè)生產(chǎn)環(huán)境因子進行調(diào)控研究越來越深入,逐漸涉及到瘤尾守宮養(yǎng)殖業(yè)的應用。2021年,鄒文虎在《基于物聯(lián)網(wǎng)的環(huán)境監(jiān)測系統(tǒng)設(shè)計研究》文中講到,將物聯(lián)網(wǎng)技術(shù)應用于孵化環(huán)境的遠程監(jiān)控起步較晚[3],且較少應用,大都采用獨立式孵化設(shè)備調(diào)控孵化環(huán)境。2021年,海濤,陳娟,周文杰,陸猛,曾澤明在《基于LoRa和NB-IoT物聯(lián)網(wǎng)技術(shù)的孵化監(jiān)控系統(tǒng)》文中介紹了我國基于物聯(lián)網(wǎng)遠程監(jiān)控系統(tǒng)的設(shè)計研究較多,將農(nóng)業(yè)物聯(lián)網(wǎng)技術(shù)應用于禽類孵化環(huán)境遠程監(jiān)控的研究較少[5]。目前,小型孵化企業(yè)一般是使用基于C/S孵化設(shè)備進行現(xiàn)場調(diào)控孵化環(huán)境,降低了生產(chǎn)效率、提高了生產(chǎn)成本。2019年,CostaEduardo,ElbersArmin,KoeneMiriam,SteentjesAndre,WisselinkHenk,WijnenPeter,GonzalesJose在《QualitativeEvaluationofCausesforRoutineSalmonellaMonitoringFalse-PositiveTestResultsinDutchPoultryBreedingFlocks》中認為家畜的飼養(yǎng)環(huán)境對家畜的生產(chǎn)有著很大程度的影響,而現(xiàn)在傳統(tǒng)的家畜養(yǎng)殖中,養(yǎng)殖環(huán)境往往存在一定的問題。其中,最普遍的問題就是養(yǎng)殖舍內(nèi)的氣味過大,不利于家畜生長,而且舍內(nèi)的溫度濕度等不是家畜生長的最適要求。2019年,SabooriA和KamaliK在《BiologyofAllothrombiumshirazicumZhang(Acari:Trombidiidae)inGarmsar,Semnanprovince,Iran》文中談?wù)摰饺毡菊缭?004年提出“U-Japan”計劃,計劃將農(nóng)業(yè)物聯(lián)網(wǎng)列入農(nóng)業(yè)發(fā)展當中,2009年8月份將該計劃進一步升級為“i-Japan”戰(zhàn)略。近年來,日本發(fā)展的智慧農(nóng)業(yè)仍是以農(nóng)業(yè)物聯(lián)網(wǎng)為信息主體源。2018年,YANBojie;PANYuchun;ZHANChunjiang等在《Suitabilityevaluationoflivestockfarmspatiallayoutatcounty-levelbasedonGIS縣域畜禽養(yǎng)殖場空間布局規(guī)劃適宜性評價》中指出,現(xiàn)代養(yǎng)殖方式不論規(guī)模大小,都面臨著養(yǎng)殖環(huán)境問題。養(yǎng)殖環(huán)境的不良影響不僅限于養(yǎng)殖場周圍的環(huán)境,還會影響到家畜的生長。因此,嚴格控制家畜飼養(yǎng)環(huán)境對于提高家畜的質(zhì)量至關(guān)重要。運用物聯(lián)網(wǎng)技術(shù)來控制養(yǎng)殖環(huán)境,可以大幅度提高治理污染的效率。具體而言,我們可以利用傳感器來感知養(yǎng)殖場內(nèi)的溫度、濕度、氧氣濃度等指標,然后將這些數(shù)據(jù)進行智能處理,最后進行自動或手動的控制調(diào)節(jié)。1.3主要研究內(nèi)容1.閱讀相關(guān)文獻確定了設(shè)計功能和軟件硬件的選擇方案。2.硬件部分采用STM32單片機。3.下位機設(shè)計采用KEIL5軟件,使用C語言進行編程設(shè)計。4.上位機軟件設(shè)計在QT平臺,使用MYSQL數(shù)據(jù)庫進行設(shè)計。5.將系統(tǒng)進行調(diào)試運行并成功實現(xiàn)。6.實現(xiàn)的成果為實物。7.系統(tǒng)基本功能為:對當前狀況進行檢測并發(fā)送至上位機。8.系統(tǒng)特色功能為:根據(jù)溫濕度、亮度、空氣質(zhì)量、風速自動控制翻蛋和消毒。該系統(tǒng)應完成的主要功能有:1.WIFI通信,手機端上位機。2.實時監(jiān)測溫度、濕度、風速、空氣質(zhì)量、光照,顯示并發(fā)送上位機。3.手動控制殺菌模塊開啟/關(guān)閉。4.通過步進電機進行翻蛋處理。5.手機端上位機,顯示下位機發(fā)來的參數(shù)。第2章系統(tǒng)總體結(jié)構(gòu)2.1設(shè)計方案本課題設(shè)計了一套應用于調(diào)控瘤尾守宮孵化環(huán)境的物聯(lián)網(wǎng)監(jiān)控系統(tǒng)。系統(tǒng)包括底層終端的環(huán)境數(shù)據(jù)采集與執(zhí)行機構(gòu)的控制、數(shù)據(jù)傳輸、阿里云平臺的應用等三部分。在底層終端選用STM32作為主控中心對環(huán)境數(shù)據(jù)進行采集和控制,使用了卡爾曼濾波算法對所采集到的數(shù)據(jù)進行濾波處理;阿里云平臺是作為Web服務(wù)器和底層終端數(shù)據(jù)通信的橋梁,使用云平臺統(tǒng)一接入標準,快速實現(xiàn)與底層設(shè)備進行通信,且阿里云平臺具有數(shù)據(jù)推送能力,可直接推送數(shù)據(jù)給第三方Web服務(wù)器,縮短了Web系統(tǒng)的開發(fā)周期,Web端是基于B/S(瀏覽器/服務(wù)器)架構(gòu)開發(fā)模式,采用SSM框架進行設(shè)計。2.2功能需求分析2.2.1技術(shù)路線:1.硬件部分需要單片機STM32F103C8T6、溫濕度傳感器、光敏電阻、風速傳感器、空氣質(zhì)量傳感器、顯示屏。2.軟件平臺程序用KEIL5。3.畫原理圖用Visio。4.編程語言用C語言。5.用戶信息顯示查看。2.2.2預期結(jié)果:通過對系統(tǒng)的布設(shè)和完善,最終完成的瘤尾守宮智能養(yǎng)殖孵化環(huán)境控制系統(tǒng)預期有如下成果:1.WIFI通信,手機端上位機。2.實時監(jiān)測溫度、濕度、風速、空氣質(zhì)量、光照,顯示并發(fā)送上位機。3.手動控制殺菌模塊開啟/關(guān)閉。4.通過步進電機進行翻蛋處理。5.手機端上位機,顯示下位機發(fā)來的參數(shù)。2.3總體方案設(shè)計這個設(shè)計過程可以概括為以下幾個階段:1.理論學習和調(diào)研,了解設(shè)計的課題內(nèi)容,掌握必要的知識。2.系統(tǒng)分析和設(shè)計,確定系統(tǒng)各個部分的功能和相互關(guān)系,并收集相關(guān)的硬件和軟件資料。3.系統(tǒng)規(guī)劃和結(jié)構(gòu)設(shè)計,制定系統(tǒng)的整體框架和原理圖。4.硬件設(shè)計和電路圖繪制,將各個系統(tǒng)部件通過接口電路連接在一起,形成完整的電路圖。5.軟件設(shè)計和流程圖繪制,編寫系統(tǒng)的控制程序,并繪制主流程圖。6.進行模擬仿真,檢查系統(tǒng)的控制功能是否符合要求,并整理寫作論文。2.4元器件選型2.4.1單片機選型主控制芯片選擇STM32F103C8T6,STM32F103C8T6是由意法半導體集團基于STM32系列ARMCortex-M內(nèi)核開發(fā)的一款具有64KB的程序存儲器的32位微控制器。其工作時需要2V~3.6V的電壓和-40℃~85℃環(huán)境溫度。STM32系列單片機屬于一種具有高性能、強功能、大容量的單芯片,它適合于低成本、高性、低功率的“嵌入式”應用程序,與此同時,它還具有“良好的”功耗和“集成性”能。它具有方便、簡單、結(jié)構(gòu)簡單等優(yōu)點,在工業(yè)上受到了廣泛的歡迎。??本實驗??所采用的最小系統(tǒng)如下圖:圖2-1STM32Fl03C8T6最小系統(tǒng)原理圖2.4.2溫濕度傳感器DHT11數(shù)字溫濕度傳感器是一款包含經(jīng)過校正的數(shù)字信號輸出的溫濕度復合傳感器,采用了特殊的數(shù)字模組采集技術(shù)和溫濕度傳感技術(shù),保證了產(chǎn)品的高可靠性和良好的長期穩(wěn)定性。該傳感器由電阻型濕度敏感元件、NTC溫度敏感元件組成,并與8位高性能微控制器相連。標定系數(shù)是一種以O(shè)TP存儲方式存儲于OTP存儲器中,用于對檢測信號進行處理,具有高質(zhì)量、超快響應、高抗干擾性、高性價比等特點。圖2-2DHT11溫濕度傳感器2.4.3空氣質(zhì)量傳感器MQ135型氣敏元件采用的是二氧化錫(SnO2),其在潔凈空氣中具有很低的導電性。在有污染物存在的情況下,隨著污染物濃度的提高,傳感器的導電性能也隨之提高。通過一個簡單的電路,就可以把電導的改變轉(zhuǎn)化成相應于這種氣體濃度的輸出信號。MQ135傳感器對氨氣、硫化物、苯系蒸汽的靈敏度高,對煙霧和其它有害的監(jiān)測也很理想,這種傳感器可檢測多種有害氣體。圖2-3空氣質(zhì)量傳感2.4.4風速傳感器風速傳感器是一種用來測量風速的設(shè)備,在很多場合都會使用到它,不過因為它的體積很小,所以可以很容易的攜帶和組裝,并且在使用的過程中也比較安全可靠。我們知道,風速傳感器是一種使用方便,安全可靠的智能儀器儀表,可以有效地獲取風速信息。當風吹過傳感器的時候,氣流會產(chǎn)生風能,當風能作用到傳感器上時,會使傳感器發(fā)生轉(zhuǎn)動。而中軸則是驅(qū)動其內(nèi)部的感應器,從而產(chǎn)生脈沖信號。圖2-4風速傳感器2.4.5通信模塊藍牙技術(shù)的缺點主要還是在傳輸距離和傳輸速率上,距離有限,速率也不如WIFI來得大,而且不同設(shè)備之間有些協(xié)議還不兼容,如果數(shù)據(jù)需要不間斷的可用還需要本地數(shù)據(jù)一致保持紀錄。ESP8266WIFI是一種強大的WIFI模塊,可以實現(xiàn)與網(wǎng)絡(luò)通信的功能。ESP8266WIFI在物聯(lián)網(wǎng)中被廣泛使用,可以通過串行通信接口連接到微控制器。ESP8266WIFI的主要特點是:高度集成:ESP8266WIFI集成了TCP/IP協(xié)議棧,可以直接連接到WIFI網(wǎng)絡(luò),無需額外的外部芯片;易于編程:ESP8266WIFI可以通過AT指令和Lua腳本進行編程;低成本:ESP8266WIFI的成本非常低,可以大規(guī)模應用于物聯(lián)網(wǎng)產(chǎn)品中;而且ESP8266WIFI的功耗非常低,適合用于電池供電的應用場景。綜合比較,藍牙的缺點比較多,WIFI操作使用更加便捷,因此本文設(shè)計采用WIFI作為通信模塊的選擇。圖2-5ESP8266WIFI模塊第3章系統(tǒng)的硬件部分設(shè)計3.1系統(tǒng)總體設(shè)計本設(shè)計采用溫濕度傳感器、風速傳感器、空氣光強度傳感器和STM32開發(fā)板、WIFI模塊作為開發(fā)環(huán)境,用于控制孵化環(huán)境參數(shù)。通過WIFI模塊連接阿里云,實現(xiàn)數(shù)據(jù)采集上傳云端,實時更新孵化環(huán)境參數(shù)的數(shù)據(jù)。當參數(shù)超過手動設(shè)置的閾值時,系統(tǒng)會發(fā)出警報,從而實現(xiàn)對孵化環(huán)境的實時監(jiān)控,提高孵化效率。阿里云物聯(lián)網(wǎng)平臺作為系統(tǒng)設(shè)計的選擇,具有安全、穩(wěn)定、低時延、高可用、免運維等優(yōu)點,使系統(tǒng)開發(fā)簡單,操作便利,適用于中小型孵化廠的環(huán)境控制系統(tǒng)。該系統(tǒng)應完成的主要功能有:具有無線通訊功能,手機端上位機;具有實時監(jiān)控功能,對溫度、濕度、亮度、空氣質(zhì)量和風速等進行實時監(jiān)控,并將數(shù)據(jù)傳輸?shù)绞謾C端上;具有手動控制功能,對殺菌模組的開關(guān)進行人工控制;具有使步進電機把蛋翻過來的功能。手機端上位機,將來自下位端發(fā)來的數(shù)據(jù)顯示出來??傮w原理圖如下所示:圖3-1總體原理圖3.2系統(tǒng)的主要功能模塊設(shè)計3.2.1溫濕度測量模塊設(shè)計在溫度精確測量中,關(guān)鍵有工作壓力溫度計、熱電阻式溫度計、雙金屬溫度計、熱電阻溫度計、電子光學高溫計、輻射源高溫計和紅外線溫度計。工作壓力溫度計是工業(yè)化生產(chǎn)中最初的溫度測量法之一。它構(gòu)造簡易,沖擊韌性??好,低成本,不依靠外界開關(guān)電源。它普遍使用于工業(yè)化生產(chǎn)中的溫度精確測量。但鑒于其反應時間長、儀器設(shè)備密封性維護保養(yǎng)不會改變、受外部環(huán)境危害大等緣故,慢慢撤出了溫度檢測的隊伍。電子光學高溫計、輻射源高溫計和紅外線高溫計都輸出非接觸式溫度計。日常生活和工業(yè)生產(chǎn)場地的濕度通常是相對性濕度,用RH%表明。即氣體(通常是氣體)中包含的水蒸汽量(水蒸汽壓)是與它的氣體同樣時飽和狀態(tài)水蒸汽(飽和水蒸汽壓)的百分數(shù)。濕度用肯定濕度、相對性濕度、漏點、體內(nèi)濕氣與干氣的占比(凈重或容積)等表明。普遍的濕度測量法有:動態(tài)性法(雙壓法、雙溫法、分離法)、靜態(tài)數(shù)據(jù)法(飽和狀態(tài)鹽法、鹽酸法)、漏點法、干濕度球法和電子器件感應器法。在本系統(tǒng)的設(shè)計中,傳感器有溫度傳感器和濕度傳感器,所以需要對兩種類型的傳感器進行選擇。如圖3-2溫濕度傳感器。圖3-2DHT11溫濕度傳感器原理圖3.2.2ESP8266WIFI模組模塊設(shè)計ESP8266WIFI曾經(jīng)成為低成本物聯(lián)網(wǎng)爆炸的佳話,它是一款單核32位MCUWIFI芯片模塊。該模塊的特點是具備高性能的無線SOC,是一個完整且自成體系的WIFI網(wǎng)絡(luò)方案,既可以獨立運行,也可以作為從機搭載其他主機運行。在眾多WIFI模塊中,ESP8266WIFI串口通信模塊應該是使用最廣泛的一種。因為ESP8266WIFI模塊是一款高性能的WIFI串口模塊,不需要了解太多WIFI相關(guān)知識就可以輕松上手。簡單來說,它只是一個串口轉(zhuǎn)WIFI的設(shè)備,只要掌握了串口編程使用方法,就可以實現(xiàn)所謂的透明傳輸。ESP8266WIFI模組原理圖如下圖:圖3-3ESP8266模組原理圖3.2.3MQ135空氣質(zhì)量傳感器模塊設(shè)計MQ135是一種常用的氣體傳感器,可用于測量空氣中的多種污染物質(zhì)濃度,如二氧化碳、氮氧化物、氨氣、酒精和苯等。該傳感器使用二氧化錫作為敏感材料,當周圍環(huán)境中存在污染氣體時,傳感器的電導率會隨污染氣體濃度的增加而增加。MQ135模塊使用5V進行驅(qū)動,DO輸出數(shù)字信號,AO輸出模擬信號。其中,DO輸出可用于進行上限報警,而AO輸出則可用于進行模擬量輸入和輸出。MQ135原理圖如下:圖3-4MQ135空氣質(zhì)量傳感器原理圖3.2.4風速傳感器模塊設(shè)計風速傳感器主要是通過測量風的速度來進行風速的測量。不同類型的風速傳感器采用不同的原理來測量風速,以下是對不同類型的風速傳感器原理的簡介:皮托管式風速傳感器:采用皮托管的原理,通過測量風壓差來計算風速。皮托管式風速傳感器通常由一個垂直于風向的管和一個水銀壓力計組成。螺旋槳風速傳感器:通過測量螺旋槳旋轉(zhuǎn)的速度來計算風速。螺旋槳風速傳感器通常由一個旋轉(zhuǎn)的螺旋槳和一個電子計數(shù)器組成?;魻栃姶棚L速傳感器:通過測量風速對磁場的影響來計算風速?;魻栃姶棚L速傳感器通常由一個磁場和一個檢測霍爾效應的傳感器組成。熱線式風速傳感器:通過測量風對熱線的冷卻效應來計算風速。熱線式風速傳感器通常由一個加熱的熱線和一個測量熱線溫度變化的傳感器組成。超聲波風速傳感器:通過測量超聲波在空氣中的傳播時間來計算風速。超聲波風速傳感器通常由一個發(fā)射器和一個接收器組成。超聲波風速傳感器主要是利用超聲波時差法來實現(xiàn)風速的測量,聲音在空氣中的傳播速度,會和風向上的氣流速度疊加。若超聲波的傳播方向與風向相同,它的速度會加快,反之,它的速度會變慢。因此,在固定的檢測條件下,超聲波在空氣中傳播的速度可以和風速函數(shù)對應。通過計算即可得到精確的風速和風向。用于風速測量的最廣泛使用的風速計是轉(zhuǎn)杯式電動風速計,旋轉(zhuǎn)風杯驅(qū)動發(fā)電機。發(fā)電機的輸出運行是一個在風速中校準的電表。三杯風速計目前被用作風資源評估研究和實踐的行業(yè)標準。杯型風速計由安裝在水平臂上的3或4個半球形杯組成,這些杯安裝在垂直軸上,在任何水平方向通過杯子的氣流以大致與風速成比例的速度轉(zhuǎn)動軸。因此,在設(shè)定的時間間隔內(nèi)計算軸的轉(zhuǎn)數(shù)會產(chǎn)生一個與速度范圍內(nèi)的平均風速成比例的值。原理圖如下圖:圖3-5風速傳感器原理圖3.2.5光敏電阻模塊設(shè)計光敏電阻器(photovaristor)又叫光感電阻,是利用半導體的光電效應制成的一種電阻值隨入射光的強弱而改變的電阻器;入射光強,電阻減小,入射光弱,電阻增大。光敏電阻器一般用于光的測量、光的控制和光電轉(zhuǎn)換(將光的變化轉(zhuǎn)換為電的變化)。光敏電阻又稱光導管,常用的制作材料為硫化鎘,另外還有硒、硫化鋁、硫化鉛和硫化鉍等材料。這些制作材料具有在特定波長的光照射下,其阻值迅速減小的特性。這是由于光照產(chǎn)生的載流子都參與導電,在外加電場的作用下做漂移運動,電子奔向電源的正極,空穴奔向電源的負極,從而使光敏電阻器的阻值迅速下降。光敏電阻的工作原理是基于內(nèi)光電效應。在半導體光敏材料兩端裝上電極引線,將其封裝在帶有透明窗的管殼里就構(gòu)成光敏電阻,為了增加靈敏度,兩電極常做成梳狀。用于制造光敏電阻的材料主要是金屬的硫化物、硒化物和碲化物等半導體。通常采用涂敷、噴涂、燒結(jié)等方法在絕緣襯底上制作很薄的光敏電阻體及梳狀歐姆電極,接出引線,封裝在具有透光鏡的密封殼體內(nèi),以免受潮影響其靈敏度。原理圖如下圖:圖3-6光敏電阻原理圖第4章系統(tǒng)的軟件設(shè)計4.1軟件主流程圖溫濕度檢測控制模塊和光敏電阻收集環(huán)境數(shù)據(jù),系統(tǒng)啟動后下位機中的溫濕度檢測控制模塊和光敏電阻開始收集環(huán)境的溫濕度和光照強度數(shù)據(jù)。數(shù)據(jù)傳輸?shù)街骺刂瓢?,檢測模塊采集到數(shù)據(jù)后,將數(shù)據(jù)傳輸?shù)街骺刂瓢濉?刂破鞲鶕?jù)數(shù)據(jù)作出分辨,主控制板接收到數(shù)據(jù)后,控制器會根據(jù)讀取到的溫濕度數(shù)據(jù)信息和控制參數(shù)進行分析,作出相應的決策。若環(huán)境參數(shù)在要求范圍內(nèi)則重新檢測;如果溫濕度檢測控制模塊檢測到環(huán)境參數(shù)在系統(tǒng)要求范圍內(nèi),則回到溫濕度檢測控制模塊再次進行下一輪檢測。調(diào)整環(huán)境參數(shù),如果環(huán)境參數(shù)不在要求范圍內(nèi),控制器會運行相應的機器設(shè)備,調(diào)整環(huán)境中的溫度和濕度,直到環(huán)境參數(shù)達到要求范圍內(nèi)。上位機與下位機保持通訊,在整個系統(tǒng)運行過程中,上位機軟件一直與下位機保持通訊,數(shù)據(jù)展示和儲存,溫濕度數(shù)據(jù)信號會展示在上位機中,客戶可以對檢測到的信息進行儲存和編寫。流程圖如下:開始開始開始單片機初始化單片機初始化 N初始化成功?初始化成功?Y風速傳感器對風速進行采集空氣質(zhì)量檢測傳感器進行采集光敏電阻進行光照強度采集D風速傳感器對風速進行采集空氣質(zhì)量檢測傳感器進行采集光敏電阻進行光照強度采集DHT11進行溫濕度采集風速數(shù)據(jù)傳輸空氣質(zhì)量數(shù)據(jù)傳輸光照強度數(shù)據(jù)傳輸溫濕度數(shù)據(jù)傳輸風速數(shù)據(jù)傳輸空氣質(zhì)量數(shù)據(jù)傳輸光照強度數(shù)據(jù)傳輸溫濕度數(shù)據(jù)傳輸NNNNNNN溫濕度是否在范圍內(nèi)?溫濕度是否在范圍內(nèi)?風速是否在范圍內(nèi)?空氣質(zhì)量是否在范圍內(nèi)?亮度是否在范圍內(nèi)?風速是否在范圍內(nèi)?空氣質(zhì)量是否在范圍內(nèi)?亮度是否在范圍內(nèi)? Y Y Y翻蛋并殺菌翻蛋并殺菌結(jié)束結(jié)束圖4-SEQ圖\*ARABIC\s11整體流程圖4.2溫濕度采集模塊的軟件設(shè)計當總線空余情況為高電平時,服務(wù)器將總線降低,等候DHT11響應。當單片機初始化完成后,DHT11溫濕度傳感器會對周圍的溫度和濕度進行采集并形成一個參數(shù)來表示溫度及濕度,若此數(shù)據(jù)在設(shè)定的范圍內(nèi),則觸發(fā)接下來的翻蛋操作;若不在范圍內(nèi),則可選擇改變周圍環(huán)境后重新采集。圖4-2DHT11時序圖4.3顯示模塊軟件的設(shè)計在設(shè)計中需要顯示當前環(huán)境的溫度和濕度信息。系統(tǒng)使用液晶顯示數(shù)據(jù),STM32單片機初始化完成后顯示屏會自動寫控制字,控制字為單片機中獲得的數(shù)據(jù),隨后顯示出來。如圖為顯示模塊流程圖:開始開始單片機初始化單片機初始化 初始化成功? N初始化成功?Y寫控制字寫控制字寫數(shù)據(jù)寫數(shù)據(jù)顯示顯示結(jié)束結(jié)束圖4-3顯示子程序流程圖4.4光敏電阻模塊的軟件設(shè)計光敏元件是一種對外界光線最為靈敏的元件,通常用于探測外界光線的強弱。當單片機初始化完成后,光敏電阻會對周圍的光照進行采集并形成一個參數(shù)來表示光照強度,若此數(shù)據(jù)在設(shè)定的范圍內(nèi),則觸發(fā)接下來的翻蛋操作;若不在范圍內(nèi),則可選擇改變周圍環(huán)境后重新采集。流程圖如下:開始開始單片機初始化單片機初始化初始化成功?N初始化成功? .Y光敏電阻數(shù)據(jù)采集光敏電阻數(shù)據(jù)采集數(shù)據(jù)傳輸數(shù)據(jù)傳輸N亮度是否在范圍?內(nèi)?亮度是否在范圍?內(nèi)? Y開始開始圖4-4光敏電阻流程圖4.5MQ135空氣質(zhì)量檢測的軟件設(shè)計1.將程序下載到相應的開發(fā)板中。2.將串口線和模塊接入開發(fā)板,給開發(fā)板上電。當單片機初始化完成后,MQ135空氣質(zhì)量傳感器會對周圍的空氣進行采集并形成一個參數(shù)來表示空氣質(zhì)量,若此數(shù)據(jù)在設(shè)定的范圍內(nèi),則觸發(fā)接下來的翻蛋操作;若不在范圍內(nèi),則可選擇改變周圍環(huán)境后重新采集。流程圖如下:開始開始單片機初始化單片機初始化N初始化成功?初始化成功?YMQ135傳感器數(shù)據(jù)采集MQ135傳感器數(shù)據(jù)采集數(shù)據(jù)傳輸數(shù)據(jù)傳輸N空氣質(zhì)量是否在范圍內(nèi)?空氣質(zhì)量是否在范圍內(nèi)?Y結(jié)束結(jié)束圖4-5MQ135空氣質(zhì)量傳感器流程圖4.6風速傳感器的軟件設(shè)計傳感器的VCC和Vin引腳由升壓轉(zhuǎn)換器模塊的輸出提供7.5V,當單片機初始化完成后,風速會被周圍的風速影響而發(fā)生轉(zhuǎn)動,通過對風速傳感器轉(zhuǎn)動的幅度進行分析,傳感器會形成一個參數(shù)來表示風速,若此數(shù)據(jù)在設(shè)定的范圍內(nèi),則觸發(fā)接下來的翻蛋操作;若不在范圍內(nèi),則可選擇改變周圍環(huán)境后重新采集。實現(xiàn)其功能的流程圖如下:開始開始單片機初始化單片機初始化初始化成功?N初始化成功?Y風速傳感器數(shù)據(jù)采集風速傳感器數(shù)據(jù)采集風速數(shù)據(jù)傳輸風速數(shù)據(jù)傳輸N風速是否在范圍內(nèi)?風速是否在范圍內(nèi)?Y翻蛋并殺菌翻蛋并殺菌結(jié)束結(jié)束圖4-6風速傳感器流程圖4.7ESP8266WIFI模塊的軟件設(shè)計ESP8266WIFI的一般使用順序,這里的“一般”指的是:ESP8266WIFI連接當前環(huán)境的熱點,與服務(wù)器建立TCP連接,傳輸數(shù)據(jù)。當溫濕度、光照強度、風速和空氣質(zhì)量數(shù)據(jù)都被采集完成后,ESP8266WIFI模塊會將寫數(shù)據(jù)自動上傳至阿里云平臺并在上位機中顯示,方便我們觀察。流程圖如下圖:開始開始單片機初始化單片機初始化初始化成功?N初始化成功? B Y獲取數(shù)據(jù)獲取數(shù)據(jù)EESP8266WIFI模塊上傳阿里云上傳阿里云上位機獲取并顯示上位機獲取并顯示結(jié)束結(jié)束圖4-7ESP8266WIFI流程圖第5章系統(tǒng)測試5.1系統(tǒng)實物圖圖5-1系統(tǒng)完整實物圖5.2測試原理圖5-2和圖5-3翻蛋器和上位機如圖5-2和5-3點擊上位機上方開啟服務(wù)器后,手動設(shè)置上位機中溫度、濕度、風速、空氣質(zhì)量和亮度的上下限,并觀察到了上方有溫濕度傳感器、風速傳感器、光敏電阻傳感器、空氣質(zhì)量傳感器所獲得的實時數(shù)據(jù)。設(shè)置完畢之后點擊是否開啟翻蛋或殺菌,若此時的溫度、濕度、風速、空氣質(zhì)量和亮度都位于正常范圍內(nèi)則翻蛋器進行翻轉(zhuǎn)及正常翻蛋或殺菌器進行殺菌,若此時溫度、濕度、風速、空氣質(zhì)量和亮度有一項不在正常范圍內(nèi)則系統(tǒng)報警,“0”否,“1”是,如果沒有在正常范圍就會報警為“1”。5.3翻蛋功能模塊測試圖5-4將各項參數(shù)上下限設(shè)置完畢如圖5-4開啟服務(wù)器后上位機將獲得各個傳感器的參數(shù),隨后將溫度、濕度、風速、空氣質(zhì)量和亮度上下限設(shè)置完畢。圖5-5翻蛋器翻轉(zhuǎn)點擊是否翻蛋,如圖5-5由于是實時監(jiān)測的各項數(shù)據(jù)都在上位機設(shè)置的范圍之內(nèi),所以在控制器是否翻轉(zhuǎn)一欄中輸入“1”,翻蛋器翻轉(zhuǎn);若再次輸入“0”,則重新獲取數(shù)據(jù)后翻回。第6章總結(jié)與展望6.1總結(jié)在功率模塊模擬仿真過程中出現(xiàn)問題,這通常是由于電路板焊接問題導致的。焊接不良可能會導致電路中出現(xiàn)斷路或短路等問題,從而影響電路的正常運行。在此類問題出現(xiàn)時,重新檢查焊接是否正確,是否存在虛焊、焊錫過多或過少等問題,進行修復即可。在程序流程中添加復位程序流程可以幫助解決單片機沒有正常復位的問題。單片機在啟動時需要進行復位操作,以確保系統(tǒng)處于一個良好的初始狀態(tài)。如果單片機沒有正常復位,可能會導致系統(tǒng)軟件的運行出現(xiàn)錯誤或異常。在此類問題出現(xiàn)時,可以在程序流程中添加復位程序流程來解決問題。關(guān)于數(shù)據(jù)信息發(fā)送錯誤代碼表明時未能分辨忙碌情況的問題,這通常是由于數(shù)據(jù)信息的發(fā)送速度過快,導致接收端無法及時處理數(shù)據(jù)信息,從而出現(xiàn)忙碌情況。解決方法是在設(shè)計中添加忙碌情況分辨,以確保數(shù)據(jù)信息的發(fā)送速度不會過快,從而避免系統(tǒng)軟件出現(xiàn)邏輯錯誤??偟膩碚f,系統(tǒng)軟件的調(diào)試過程中可能會出現(xiàn)各種各樣的問題,需要不斷進行排查和解決。在遇到問題時,要有耐心和細心,逐一排查可能出現(xiàn)的原因,并嘗試各種解決方法,直到問題得到解決為止。6.2展望設(shè)計以瘤尾守宮孵化裝置制造連動為研究對象,在具體分析溫濕度、光照、空氣質(zhì)量和風速對瘤尾守宮孵化的影響后,明確提出了一種基于單片機的溫濕度自動控制系統(tǒng)。全部設(shè)計的首要工作中如下所示。分布式系統(tǒng)測量系統(tǒng)是一個很好的想法,但是需要確保溫濕度感應器都能夠準確地測量到環(huán)境的溫濕度,并且數(shù)據(jù)能夠被合理地整合和處理。此外,也需要考慮如何降低系統(tǒng)的復雜度和成本。引入優(yōu)化算法是一個必要的步驟,可以進一步提高系統(tǒng)的效率和精度。PID控制算法是一個常用的方法,但是也需要進行合適的參數(shù)調(diào)整。模糊算法和神經(jīng)網(wǎng)絡(luò)控制算法也是很好的選擇,但是需要考慮到算法的復雜度和可行性。工業(yè)觸摸屏和無線數(shù)據(jù)傳輸?shù)闹悄苁謾CAPP都是很好的發(fā)展方向,可以提高系統(tǒng)的實用性和便捷性。但是需要考慮到數(shù)據(jù)安全和隱私問題,以及成本和可行性等因素??偟膩碚f,這個設(shè)計方案有很大的潛力,可以進一步完善和優(yōu)化,需要根據(jù)實際情況進行具體的改進和調(diào)整。參考文獻[1]王國紅,邢蕊.創(chuàng)業(yè)導向、創(chuàng)新意愿與在孵企業(yè)創(chuàng)新績效:孵化環(huán)境的調(diào)節(jié)作用1[C]//河南農(nóng)業(yè)大學創(chuàng)新管理研究中心,重慶大學創(chuàng)新研究所南開,大學創(chuàng)業(yè)管理研究中心,吉林大學創(chuàng)業(yè)研究中心,清華大學中國企業(yè)成長與經(jīng)濟安全研究中心.中國創(chuàng)新與企業(yè)成長(CI&G)2013年度會議論文集.[出版者不詳],2013:208-224.[2]李惠娜.基于STM32和物聯(lián)網(wǎng)公有云的雞蛋孵化環(huán)境檢測系統(tǒng)設(shè)計[J].電子制作,2022,30(02):9-11+100.[3]鄒文虎.基于物聯(lián)網(wǎng)的環(huán)境監(jiān)測系統(tǒng)設(shè)計研究[J].科學技術(shù)創(chuàng)新,2022(35):116-122.[4]李鵬飛;劉源;趙煥芬;于亞萍.基于單片機和LABVIEW的雞蛋孵化環(huán)境控制系統(tǒng)開發(fā)[J].農(nóng)技服務(wù),2021,38(03):47-49.[5]海濤,陳娟,周文杰,陸猛,曾澤明.基于LoRa和NB-IoT物聯(lián)網(wǎng)技術(shù)的孵化監(jiān)控系統(tǒng)[J].中國農(nóng)機化學報,2021,42(05):159-165.[6]韓甲文,張燕軍,繆宏,張善文,戴敏.鵝種蛋孵化環(huán)境監(jiān)測調(diào)控關(guān)鍵技術(shù)裝備研發(fā)[J].農(nóng)業(yè)裝備技術(shù),2022,48(02):43-45.[7]海濤,陳春華,黃光日,隆茂田,陳昌貴,陳娟.基于物聯(lián)網(wǎng)與太陽能技術(shù)的孵化環(huán)境監(jiān)控系統(tǒng)[J].裝備制造技術(shù),2020(12):36-39+55.[8]孔令夷.我國創(chuàng)業(yè)孵化生態(tài)系統(tǒng)環(huán)境綜合評價[J].蘭州學刊,2020(12):116-137.[9]張煒,邢瀟.高技術(shù)企業(yè)創(chuàng)業(yè)孵化環(huán)境與成長績效關(guān)系研究[J].科學學研究,2007(01):74-78.[10]俞玥,蔣勁松,鄭成煌,鐘鎮(zhèn)濤,泮進明.單色綠光環(huán)境對孵化中種蛋蛋殼理化特性的影響[J].農(nóng)業(yè)工程學報,2022,38(10):296-302.[11]孫雪蕾.基于單片機的自動鴿蛋孵化系統(tǒng)設(shè)計[J].時代農(nóng)機,2019,46(08):78-79+84.[12]潘澤鍇,陳錦雄.基于物聯(lián)網(wǎng)技術(shù)的智能孵化系統(tǒng)研究與實現(xiàn)[J].實驗室研究與探索,2022,41(05):141-146.[13]郭彬彬,劉寧,丁為民,陳信信,施振旦.基于TracePro的LED光照鵝孵化機設(shè)計及試驗[J].中國農(nóng)機化學報,2021,42(12):57-64.[14]楊金祥,章海,陳勝.雛雞孵化中恒溫孵化器系統(tǒng)的設(shè)計[J].農(nóng)村經(jīng)濟與科技,2021,32(11):60-62.[15]陳創(chuàng)業(yè),胡天讓,謝曉麗,陳蕊.禽蛋孵化器遠程控制系統(tǒng)設(shè)計[J].電子制作,2021(12):34-35+22.[16]齊琳.基于光照強度的恒溫孵化器系統(tǒng)設(shè)計[J].自動化應用,2021(05):28-31.[17]曹春節(jié).創(chuàng)業(yè)孵化社區(qū)管理系統(tǒng)的設(shè)計與實現(xiàn)[D].華中科技大學,2020.[18]丁孟松,杜曉霞,李京杰,李志杰.觀賞鳥專用孵化加熱消毒系統(tǒng)設(shè)計分析[J].湖北畜牧獸醫(yī),2018,39(04):30-31.[19]DotasVassilios,GourdouvelisDimitrios,HatzizisiLampros,KaimakamisIoannis,MitsopoulosIoannis,SymeonGeorge.Typology,StructuralCharacterizationandSustainabilityofIntegratedBroilerFarmingSysteminEpirus,Greece[J].Sustainability,2021,13(23).[20].JohnWC.Methodforreducingpathogensinpoultryhatcheryoperations:,AU2018219151A1[P].2019.[21]SuleEP,EnebeKO,SaturdayA,etal.Design,AnalysisAndDevelopmentOfAStudsGrindingMachine[J].JETIR(),2016(4).[22]AwadAShehata,RedaTarabees,MohamedSabryAbdElraheamElsayed.CharacterizationofSalmonellaEntericaIsolatedfromPoultryHatcheriesandCommercialBroilerChickens[J].PakistanVeterinaryJournal,2019.[23]HanHA.GiantAfricanlandsnails:pestsnotpets[J].AngiostrongylusCantonensis.附錄電路圖源代碼#include"sys.h"#include"delay.h"#include"usart.h"#include"tim.h"#include"dht11.h"#include"hcsr04.h"#include"timer.h"#include"oled.h"#include"port.h"#include"esp8266.h"#include"adc.h"#include"app.h"intmain(void){ delay_init(); //延時函數(shù)初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應優(yōu)先級 uart_init(9600); //串口初始化為9600 system_Time_Init(9,7199); sys_gpio_init(); adc_init(); DHT11_Init(); TIM3_PWM_Init();//舵機定時器初始化 ESP8266_Init(115200); OLED_Init(); //初始化OLED OLED_Clear(); while(1) { app(); }}#include"dht11.h"#include"delay.h"u8temperature,humidity;//復位DHT11voidDHT11_Rst(void) { DHT11_IO_OUT(); //SETOUTPUT DHT11_DQ_OUT=0; //拉低DQ delay_ms(20); //拉低至少18ms DHT11_DQ_OUT=1; //DQ=1 delay_us(30); //主機拉高20~40us}//等待DHT11的回應//返回1:未檢測到DHT11的存在//返回0:存在u8DHT11_Check(void) { u8retry=0; DHT11_IO_IN();//SETINPUT while(DHT11_DQ_IN&&retry<100)//DHT11會拉低40~80us { retry++; delay_us(1); }; if(retry>=100)return1; elseretry=0;while(!DHT11_DQ_IN&&retry<100)//DHT11拉低后會再次拉高40~80us { retry++; delay_us(1); }; if(retry>=100)return1; return0;}//從DHT11讀取一個位//返回值:1/0u8DHT11_Read_Bit(void) { u8retry=0; while(DHT11_DQ_IN&&retry<100)//等待變?yōu)榈碗娖?{ retry++; delay_us(1); } retry=0; while(!DHT11_DQ_IN&&retry<100)//等待變高電平 { retry++; delay_us(1); } delay_us(40);//等待40us if(DHT11_DQ_IN)return1; elsereturn0; }//從DHT11讀取一個字節(jié)//返回值:讀到的數(shù)據(jù)u8DHT11_Read_Byte(void){ u8i,dat; dat=0; for(i=0;i<8;i++) { dat<<=1; dat|=DHT11_Read_Bit(); } returndat;}//從DHT11讀取一次數(shù)據(jù)//temp:溫度值(范圍:0~50°)//humi:濕度值(范圍:20%~90%)//返回值:0,正常;1,讀取失敗u8DHT11_Read_Data(u8*temp,u8*humi){ u8buf[5]; u8i; DHT11_Rst(); if(DHT11_Check()==0) { for(i=0;i<5;i++)//讀取40位數(shù)據(jù) { buf[i]=DHT11_Read_Byte(); } if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4]) { *humi=buf[0]; *temp=buf[2]; } }elsereturn1; return0; }//初始化DHT11的IO口DQ同時檢測DHT11的存在//返回1:不存在//返回0:存在 u8DHT11_Init(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //使能PG端口時鐘 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; //PA4端口配置 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽輸出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); //初始化IO口 GPIO_SetBits(GPIOB,GPIO_Pin_0); //PE11輸出高 DHT11_Rst();//復位DHT11 returnDHT11_Check();//等待DHT11的回應}#include"esp8266.h"#include"delay.h"#include<stdarg.h>#include"tcp.h"#include"app.h"#include"port.h"#include"timer.h"u8wifi_success=0;#defineDMA_UART2_data_len256u8DMA_UART2_data[DMA_UART2_data_len];voiduart2_Init(u32bound)//串口2引腳為PA2PA3{//GPIO端口設(shè)置GPIO_InitTypeDefGPIO_InitStructure; USART_InitTypeDefUSART_InitStructure; NVIC_InitTypeDefNVIC_InitStructure; DMA_InitTypeDefDMA_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能USART1,GPIOA時鐘 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); //USART2_TXGPIOA.2GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;//PA.2GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //復用推挽輸出GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIOA.2//USART2_RX GPIOA.3初始化GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;//PA3GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空輸入GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIOA.3//Usart2NVIC配置NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//搶占優(yōu)先級2 NVIC_InitStructure.NVIC_IRQChannelSubPriority=1; //子優(yōu)先級1 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //IRQ通道使能 NVIC_Init(&NVIC_InitStructure); //根據(jù)指定的參數(shù)初始化NVIC寄存器//USART初始化設(shè)置USART_DeInit(USART2); USART_InitStructure.USART_BaudRate=bound;//串口波特率 USART_InitStructure.USART_WordLength=USART_WordLength_8b;//字長為8位數(shù)據(jù)格式 USART_InitStructure.USART_StopBits=USART_StopBits_1;//一個停止位 USART_InitStructure.USART_Parity=USART_Parity_No;//無奇偶校驗位 USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//無硬件數(shù)據(jù)流控制 USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; //收發(fā)模式USART_Init(USART2,&USART_InitStructure);//初始化串口1 USART_ITConfig(USART2,USART_IT_IDLE,ENABLE);//開啟串口空閑 USART_DMACmd(USART2,USART_DMAReq_Rx,ENABLE);USART_Cmd(USART2,ENABLE);//使能串口2 DMA_DeInit(DMA1_Channel6); DMA_InitStructure.DMA_PeripheralBaseAddr=(u32)(&USART2->DR); DMA_InitStructure.DMA_MemoryBaseAddr=(u32)DMA_UART2_data; DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC; DMA_InitStructure.DMA_BufferSize=DMA_UART2_data_len; DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Byte; DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Byte; DMA_InitStructure.DMA_Mode=DMA_Mode_Normal; DMA_InitStructure.DMA_Priority=DMA_Priority_High; DMA_InitStructure.DMA_M2M=DMA_M2M_Disable; DMA_Init(DMA1_Channel6,&DMA_InitStructure); DMA_Cmd(DMA1_Channel6,ENABLE);}u8r_buff[256];u8w_youbiao=0;u8r_youbiao=0;voidUSART2_IRQHandler(void){ u8i=0; u16data_len; u8ls[5]; if(USART_GetITStatus(USART2,USART_IT_IDLE)!=RESET)//空閑中斷 { data_len=USART2->SR;data_len=USART2->DR; DMA_Cmd(DMA1_Channel6,DISABLE); data_len=0; data_len=DMA_UART2_data_len-DMA_GetCurrDataCounter(DMA1_Channel6); if(ESP8266_Fram_Record_Struct.InfBit.FramLength<(RX_BUF_MAX_LEN-1)&&wifi_success==0) { for(i=0;i<data_len;i++) ESP8266_Fram_Record_Struct.Data_RX_BUF[ESP8266_Fram_Record_Struct.InfBit.FramLength++]=DMA_UART2_data[i]; } if(wifi_success) { if(data_len==5) { if(DMA_UART2_data[2]=='D') { if(DMA_UART2_data[3]=='0') DaoZhuan; elseif(DMA_UART2_data[3]=='1') ZhengZhuan; } elseif(DMA_UART2_data[2]=='J') { if(DMA_UART2_data[3]=='0') *IO.shajun=0; elseif(DMA_UART2_data[3]=='1') *IO.shajun=1; } } elseif(data_len==33) { memset(ls,0,5); ls[0]=DMA_UART2_data[3]; ls[1]=DMA_UART2_data[4]; wendu_max=atoi(ls); memset(ls,0,5); ls[0]=DMA_UART2_data[7]; ls[1]=DMA_UART2_data[8]; wendu_min=atoi(ls); memset(ls,0,5); ls[0]=DMA_UART2_data[11]; ls[1]=DMA_UART2_data[12]; shidu_max=atoi(ls); memset(ls,0,5); ls[0]=DMA_UART2_data[15]; ls[1]=DMA_UART2_data[16]; shidu_min=atoi(ls); memset(ls,0,5); ls[0]=DMA_UART2_data[18]; ls[1]=DMA_UART2_data[19]; ls[2]=DMA_UART2_data[20]; ls[3]=DMA_UART2_data[21]; fengsu_max=atoi(ls); memset(ls,0,5); ls[0]=DMA_UART2_data[23]; ls[1]=DMA_UART2_data[24]; ls[2]=DMA_UART2_data[25]; ls[3]=DMA_UART2_data[26]; kongqi_max=atoi(ls); memset(ls,0,5); ls[0]=DMA_UART2_data[28]; ls[1]=DMA_UART2_data[29]; ls[2]=DMA_UART2_data[30]; ls[3]=DMA_UART2_data[31]; liangdu_max=atoi(ls); } } USART_ClearITPendingBit(USART2,USART_IT_IDLE); DMA_SetCurrDataCounter(DMA1_Channel6,DMA_UART2_data_len); DMA_Cmd(DMA1_Channel6,ENABLE); }//u8ucCh;//if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET)//{//ucCh=USART_ReceiveData(USART2);//// USART_SendData(USART3,ucCh);//if(ESP8266_Fram_Record_Struct.InfBit.FramLength<(RX_BUF_MAX_LEN-1)&&wifi_success==0)//{//ESP8266_Fram_Record_Struct.Data_RX_BUF[ESP8266_Fram_Record_Struct.InfBit.FramLength++]=ucCh;//}// if(wifi_success)// {// r_buff[w_youbiao]=ucCh;// w_youbiao++;// if(w_youbiao==r_youbiao)// {// r_youbiao++;// }// }// //}//if(USART_GetITStatus(USART2,USART_IT_IDLE)==SET)//如果總線空閑//{//ESP8266_Fram_Record_Struct.InfBit.FramFinishFlag=1;//ucCh=USART_ReceiveData(USART2);//由軟件序列清除中斷標志位(先讀USART_SR,然后讀USART_DR)//// USART_SendData(USART3,ucCh);//TcpClosedFlag=strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,"CLOSED\r\n")?1:0;//}}structSTRUCT_USART_FramESP8266_Fram_Record_Struct={0};//定義了一個數(shù)據(jù)幀結(jié)構(gòu)體voidESP8266_Init(u32bound){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(ESP8266_RST_Pin_Periph_Clock|ESP8266_CH_PD_Pin_Periph_Clock,ENABLE);GPIO_InitStructure.GPIO_Pin=ESP8266_RST_Pin;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//復用推挽輸出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(ESP8266_RST_Pin_Port,&GPIO_InitStructure);//GPIO_InitStructure.GPIO_Pin=ESP8266_CH_PD_Pin;//GPIO_Init(ESP8266_CH_PD_Pin_Port,&GPIO_InitStructure);uart2_Init(bound); ESP8266_Rst();// ESP8266_CH_PD_Pin_SetH; ESP8266_AT_Test(); printf("正在配置ESP8266\r\n");ESP8266_Net_Mode_Choose(STA);while(!ESP8266_JoinAP(User_ESP8266_SSID,User_ESP8266_PWD));ESP8266_Enable_MultipleId(DISABLE); while(!ESP8266_Link_Server(enumUDP,User_ESP8266_TCPServer_IP,User_ESP8266_TCPServer_PORT,Single_ID_0));//while(!ESP8266_Link_Server(enumTCP,User_ESP8266_TCPServer_IP,User_ESP8266_TCPServer_PORT,Single_ID_0));while(!ESP8266_UnvarnishSend()); printf("\r\n配置完成"); wifi_success=1;}//對ESP8266模塊發(fā)送AT指令//cmd待發(fā)送的指令//ack1,ack2;期待的響應,為NULL表不需響應,兩者為或邏輯關(guān)系//time等待響應時間//返回1發(fā)送成功,0失敗boolESP8266_Send_AT_Cmd(char*cmd,char*ack1,char*ack2,u32time){ESP8266_Fram_Record_Struct.InfBit.FramLength=0;//重新接收新的數(shù)據(jù)包ESP8266_USART("%s\r\n",cmd);if(ack1==0&&ack2==0)//不需要接收數(shù)據(jù){returntrue;}delay_ms(time);//延時 delay_ms(1000);ESP8266_Fram_Record_Struct.Data_RX_BUF[ESP8266_Fram_Record_Struct.InfBit.FramLength]='\0'; printf("%s",ESP8266_Fram_Record_Struct.Data_RX_BUF);if(ack1!=0&&ack2!=0){return((bool)strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,ack1)||(bool)strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,ack2));}elseif(ack1!=0)//strstr(s1,s2);檢測s2是否為s1的一部分,是返回該位置,否則返回false,它強制轉(zhuǎn)換為bool類型了return((bool)strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,ack1));elsereturn((bool)strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,ack2));}//復位重啟voidESP8266_Rst(void){ESP8266_RST_Pin_SetL;delay_ms(500);ESP8266_RST_Pin_SetH;}//發(fā)送恢復出廠默認設(shè)置指令將模塊恢復成出廠設(shè)置voidESP8266_AT_Test(void){charcount=0;delay_ms(1000);while(count<10){if(ESP8266_Send_AT_Cmd("AT+RESTORE","OK",NULL,500)){printf("OK\r\n");return;}++count;}}//選擇ESP8266的工作模式//enumMode模式類型//成功返回true,失敗返回falseboolESP8266_Net_Mode_Choose(ENUM_Net_ModeTypeDefenumMode){switch(enumMode){caseSTA:returnESP8266_Send_AT_Cmd("AT+CWMODE=1","OK","nochange",2500);caseAP:returnESP8266_Send_AT_Cmd("AT+CWMODE=2","OK","nochange",2500);caseSTA_AP:returnESP8266_Send_AT_Cmd("AT+CWMODE=3","OK","nochange",2500);default:returnfalse;}}//ESP8266連接外部的WIFI//pSSIDWiFi帳號//pPassWordWiFi密碼//設(shè)置成功返回true反之falseboolESP8266_JoinAP(char*pSSID,char*pPassWord){charcCmd[120]; sprintf(cCmd,"AT+CWJAP=\"%s\",\"%s\"",pSSID,pPassWord);returnESP8266_Send_AT_Cmd(cCmd,"OK",NULL,5000);}//ESP8266透傳使能//enumEnUnvarnishTx是否多連接,bool類型//設(shè)置成功返回true,反之falseboolESP8266_Enable_MultipleId(FunctionalStateenumEnUnvarnishTx){charcStr[20];sprintf(cStr,"AT+CIPMUX=%d",(enumEnUnvarnishTx?1:0));returnESP8266_Send_AT_Cmd(cStr,"OK",0,500);}//ESP8266連接服務(wù)器//enumE網(wǎng)絡(luò)類型//ip,服務(wù)器IP//ComNum服務(wù)器端口//id,連接號,確保通信不受外界干擾//設(shè)置成功返回true,反之fasleboolESP8266_Link_Server(ENUM_NetPro_TypeDefenumE,char*ip,char*ComNum,ENUM_ID_NO_TypeDefid){charcStr[100]={0},cCmd[120];switch(enumE){caseenumTCP:sprintf(cStr,"\"%s\",\"%s\",%s","TCP",ip,ComNum);break;caseenumUDP:sprintf(cStr,"\"%s\",\"%s\",%s","UDP",ip,ComNum);break;default:break;}if(id<5)sprintf(cCmd,"AT+CIPSTART=%d,%s",id,cStr);elsesprintf(cCmd,"AT+CIPSTART=%s",cStr);returnESP8266_Send_AT_Cmd(cCmd,"OK","ALREAYCONNECT",4000);}//透傳使能//設(shè)置成功返回true,反之falseboolESP8266_UnvarnishSend(void){if(!ESP8266_Send_AT_Cmd("AT+CIPMODE=1","OK",0,500))returnfalse;returnESP8266_Send_AT_Cmd("AT+CIPSEND","OK",">",500);}//ESP8266發(fā)送字符串//enumEnUnvarnishTx是否使能透傳模式//pStr字符串//ulStrLength字符串長度//ucId連接號//設(shè)置成功返回true,反之falseboolESP8266_SendString(FunctionalStateenumEnUnvarnishTx,char*pStr,u32ulStrLength,ENUM_ID_NO_TypeDefucId){charcStr[20];boolbRet=false;if(enumEnUnvarnishTx){ESP8266_USART("%s",pStr);bRet=true;}else{if(ucId<5)sprintf(cStr,"AT+CIPSEND=%d,%d",ucId,ulStrLength+2);elsesprintf(cStr,"AT+CIPSEND=%d",ulStrLength+2);ESP8266_Send_AT_Cmd(cStr,">",0,1000);bRet=ESP8266_Send_AT_Cmd(pStr,"SENDOK",0,1000);}returnbRet;}//ESP8266退出透傳模式voidESP8266_ExitUnvarnishSend(void){delay_ms(1000);ESP8266_USAR
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 猜拳游戲課課程設(shè)計
- 2025版電梯設(shè)備銷售與節(jié)能改造合同
- 網(wǎng)購商城課程設(shè)計
- 2025年度工廠信息化安全防護服務(wù)合同3篇
- 直播起號方法課程設(shè)計
- 電子課程設(shè)計蓄水箱
- 綜合判斷推理課程設(shè)計
- 電機變頻調(diào)速課程設(shè)計
- 自我規(guī)劃與管理課程設(shè)計
- 種植辣椒的教育課程設(shè)計
- 項目經(jīng)理部考核評分表
- 貼面 貼面修復
- 2023年高二學業(yè)水平測試生物模擬考試試題
- 力士樂-mtx micro簡明安裝調(diào)試手冊v4updated
- GB/T 6807-2001鋼鐵工件涂裝前磷化處理技術(shù)條件
- GB/T 15109-1994白酒工業(yè)術(shù)語
- 膜片鉗常見問題匯總(人人都會膜片鉗)
- 校車安全逃生技能培訓學習
- (新版)電網(wǎng)規(guī)劃專業(yè)知識考試題庫(含答案)
- 學校心理危機干預流程圖
- 杏醬生產(chǎn)工藝
評論
0/150
提交評論