




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第1章緒論1.1研究目的及意義傳統(tǒng)晾衣架功能單一,無法實現(xiàn)全自動智能化現(xiàn)代化生活,不能滿足人們快節(jié)奏生活的需求[1]。近年來,人們智能化需求越來越多,為實現(xiàn)遠(yuǎn)程智能收晾衣物,提出了智能晾衣架遠(yuǎn)程監(jiān)控系統(tǒng).該智能晾衣架在無人監(jiān)督的情況下可實現(xiàn)自動收晾衣物。傳感器控制的自動晾衣系統(tǒng),隨時控制晾衣系統(tǒng)的工作狀態(tài),讓衣服充分晾曬。隨著科技和智能化自動化的不斷發(fā)展,多樣性的只能設(shè)備在長期以來的發(fā)展中,為我們的生活提供了極大的便利,發(fā)揮出了突出的優(yōu)勢作用[2]。當(dāng)前為了滿足不同用戶對于自動化,智能化生活系統(tǒng)的需求,并且令用戶遠(yuǎn)程管理晾衣系統(tǒng),遠(yuǎn)程控制的自動晾衣系統(tǒng)設(shè)計為我們提供了更多的空間,目前市場上的“智能”晾衣架只是增加了手動或電動升降功能,而智能晾衣架基本上都處于構(gòu)想階段,并且功能不夠完善.基于網(wǎng)絡(luò)遠(yuǎn)程與傳感器雙重控制的自動晾衣系統(tǒng)設(shè)計的提出,彌補(bǔ)了這一方面的不足。充分實現(xiàn)了自動化、智能化家居生活。自動化、智能化家居生活對于廣大消費者而言具有非常重要的作用和影響[3]。隨著人們對于自動化和智能化的認(rèn)知和了解逐漸深入,越來越多的用戶開始高度關(guān)注其重要性。晾衣架是一種家居用品,分手動、電動、戶外、落地式四種,拋去古老的固定晾衣架與手搖式升降晾衣架,自動晾衣架衣操作方便,功能齊全,外觀美觀實在是上上之選。雖然自動晾衣架價格比固定晾衣架、手搖式升降晾衣架要稍稍貴一些,但是也在消費者能接受的范圍內(nèi)。近10年時間內(nèi),晾衣架產(chǎn)品已經(jīng)發(fā)生了翻天覆地的變化[4]。晾衣架不再僅僅是一個裝飾品,更是一個功能性的產(chǎn)品。在智能化家居成為新時代必然趨勢的當(dāng)下,自動晾衣架廠家抓準(zhǔn)了人們消費觀念向品牌化、高檔化、簡易化發(fā)展的契機(jī),全心投入到智能自動晾衣架的研發(fā)生產(chǎn)中。高檔智能晾衣架集無線遙控、集成照明、快速風(fēng)干、智能烘干、光波殺菌、藍(lán)牙音樂、空氣凈化等功能于一體,滿足了消費者個性化需求。1.2國內(nèi)外研究現(xiàn)狀自動化、智能化家居生活對于廣大消費者而言具有非常重要的作用和影響[5]。當(dāng)前隨著人們對于自動化,智能化的認(rèn)知和了解程度不斷加深,其重要性贏得了廣大用戶的一致關(guān)注。2021年,苗玉剛,何玉輝,李云在《自動折疊式太陽能板的設(shè)計》中:針對目前太陽能板不能自動折疊和清潔,容易受惡劣天氣影響等問題,設(shè)計了一種自動折疊式太陽能板[6]。2021年,鄭曉茜,邵帥飛在《基于ZigBee的溫室大棚環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計》中設(shè)計了一種溫室大棚環(huán)境的遠(yuǎn)程監(jiān)控系統(tǒng),系統(tǒng)采用ZigBee網(wǎng)絡(luò)對大棚內(nèi)環(huán)境參數(shù)進(jìn)行實時監(jiān)測,通過通信衛(wèi)星或5G傳輸網(wǎng)傳輸至服務(wù)器,以使服務(wù)器對目標(biāo)溫室大棚環(huán)境進(jìn)行監(jiān)控.可以實現(xiàn)對目標(biāo)溫室大棚環(huán)境的有效維護(hù)[7]。2021年,任遠(yuǎn)林,徐奇在《基于嵌入式單片機(jī)的智能家居遠(yuǎn)程控制系統(tǒng)設(shè)計》中設(shè)計了一種基于嵌入式單片機(jī)的智能家居遠(yuǎn)程控制系統(tǒng),統(tǒng)具有較好的輸出穩(wěn)定性和較高的控制精度。引入智能家居遠(yuǎn)程控制技術(shù),可以提高家居信息化管理和人工智能化水平,有助于改善人們的生活方式,提高智慧化生活水平,故對相關(guān)的智能家居遠(yuǎn)程控制系統(tǒng)設(shè)計方法進(jìn)行研究具有廣泛的應(yīng)用價值[8]。2021年,郭銘,王佳佳《基于STM32的智能家居濕度控制系統(tǒng)》開發(fā)了一款基于STM32芯片的智能家居濕度控制系統(tǒng),該系統(tǒng)能夠有效地滿足預(yù)定的目標(biāo)和功能需求[9]。2018年,Moss發(fā)表了《Intelligentwashingsystem》,設(shè)計了一套智能晾衣系統(tǒng)[10]。該系統(tǒng)通過搭載的溫度、濕度、風(fēng)速、光照傳感器自動感知室外溫度、濕度、風(fēng)力和關(guān)照強(qiáng)弱的變化,自動控制晾衣架伸出窗外或收回室內(nèi),具有反應(yīng)靈敏、操作簡單、安全可靠、適合老舊小區(qū)改造及新小區(qū)統(tǒng)一加裝的特點。2019年,Tomas發(fā)表了《Intelligentclothes-horsedesign》,通過對智能晾衣架進(jìn)行深入研究,采用AT89S51單片機(jī)作為主控制器,并借助直流減速電動機(jī)實現(xiàn)晾衣架的移動[11]。在手動模式下,使用遙控器對晾衣架進(jìn)行控制;而在自動模式下,利用DHT11傳感器檢測濕度,智能感應(yīng)天氣濕度情況。當(dāng)空氣中相對濕度超過設(shè)定值時,系統(tǒng)會向電機(jī)發(fā)送脈沖信號,使晾衣架自動收回。同時,光敏電阻用于檢測光線變化,當(dāng)光線達(dá)到設(shè)定值時,晾衣架也會自動收回,從而實現(xiàn)晾衣架的智能控制。2020年,James發(fā)表了《Designofanewtypeofintelligenttelescopicdryingracks》,為了解決傳統(tǒng)晾衣架存在的通風(fēng)效果差、光線不足、無法實時感知天氣變化以及智能化水平低等缺點,研發(fā)了一款基于STC89C52單片機(jī)作為主控芯片、搭載DHT11溫濕度傳感器、BH1750FVI光敏傳感器、TCG-FS風(fēng)速傳感器的戶外智能晾衣架,可以根據(jù)天氣變化智能地調(diào)整晾曬衣物的方式[12]。綜合國內(nèi)外發(fā)展情況不難看出,現(xiàn)在國內(nèi)外已經(jīng)逐漸適應(yīng)了智能化現(xiàn)代化的生活家居設(shè)備,本系統(tǒng)的優(yōu)勢在于可查看晾曬衣物濕度、外界光照強(qiáng)度歷史情況,并能夠?qū)崿F(xiàn)檢測后不需要人為干預(yù),自動進(jìn)行操作。節(jié)省了大量人力資源,方便人們生活[13]。1.3研究內(nèi)容本系統(tǒng)旨在設(shè)計一個遠(yuǎn)程智能晾衣架,包括濕度傳感器、光照傳感器、上位機(jī)和核心單片機(jī)等組成。溫濕度傳感器用于檢測溫濕度,并將數(shù)據(jù)傳遞給單片機(jī),當(dāng)溫濕度超標(biāo)時,單片機(jī)控制舵機(jī)啟動。光照傳感器則用于檢測光照強(qiáng)度,并將數(shù)據(jù)傳遞給單片機(jī),當(dāng)光照強(qiáng)度低于設(shè)定閾值時,舵機(jī)啟動。上位機(jī)通過控制舵機(jī)實現(xiàn)遠(yuǎn)程一鍵收回衣物。通過這種遠(yuǎn)程智能晾衣架的設(shè)計,可以實現(xiàn)無人操控和遠(yuǎn)距離收回衣物,解決了衣物收回不及時的問題,從而實現(xiàn)智能化的生活方式。圖1-1系統(tǒng)結(jié)構(gòu)框圖該系統(tǒng)的主要功能包括:1上位機(jī)通過HC-05與下位機(jī)進(jìn)行通信;2下位機(jī)裝有實時濕度傳感器,實時檢測并發(fā)送濕度數(shù)據(jù)給上位機(jī);3下位機(jī)可以實時監(jiān)測光照強(qiáng)度,并將數(shù)據(jù)發(fā)送給上位機(jī);4當(dāng)溫濕度數(shù)值異常時,單片機(jī)控制舵機(jī)啟動;5當(dāng)外界光照強(qiáng)度低于設(shè)定閾值時,單片機(jī)控制舵機(jī)啟動;6系統(tǒng)支持語音控制進(jìn)行衣物的收放,并能夠監(jiān)測雨量情況,實現(xiàn)烘干功能。
第2章系統(tǒng)總體結(jié)構(gòu)2.1設(shè)計方案硬件以濕度傳感器、光照傳感器、上位機(jī)、核心單片組成傳感器主要應(yīng)用了濕度傳感器、光照傳感器等本次設(shè)計是在STM32的基礎(chǔ)上研究開發(fā)的一款遠(yuǎn)程智能晾衣架設(shè)計[14]。通過STM32單片機(jī)集合各個感應(yīng)模塊運(yùn)算,從而做出反應(yīng)。通過傳感器實時監(jiān)測周圍環(huán)境狀況是否存在下雨,光線弱的情況,如果有就會反饋給單片機(jī)。反饋給單片機(jī)通過上機(jī)位呈現(xiàn)出來,通過舵機(jī)自動收回衣物;從上機(jī)位還有一個獨立按鈕控制舵機(jī),可供手動控制。2.2功能需求分析2.2.1技術(shù)要求 1硬件部分需要單片機(jī)STM32F103C8T6、濕度傳感器、光敏電阻、舵機(jī)、藍(lán)牙遠(yuǎn)程模塊 2軟件平臺程序用keil5; 3畫原理圖用AD; 4編程語言用C語言; 5濕度、光照檢測信號顯示用手機(jī)APP查看;2.2.2實現(xiàn)結(jié)果通過系統(tǒng)的布設(shè)和完善,預(yù)期遠(yuǎn)程智能晾衣架將實現(xiàn)以下成果:1上位機(jī)通過HC-05與下位機(jī)進(jìn)行通信;2上位機(jī)可接收下位機(jī)傳送的數(shù)據(jù)并存入數(shù)據(jù)庫,并實時顯示;3上位機(jī)可查看溫濕度和光照的歷史情況;4下位機(jī)裝有濕度傳感器,實時檢測溫濕度數(shù)據(jù)并發(fā)送給上位機(jī);5當(dāng)溫濕度低于設(shè)定閾值時,舵機(jī)自動打開,將晾出的衣服收回;6下位機(jī)可以實時監(jiān)測外界光照強(qiáng)度;7當(dāng)外界光照強(qiáng)度相差超過設(shè)定閾值時,舵機(jī)打開,將晾出的衣服收回;8系統(tǒng)支持烘干功能,可以通過語音控制進(jìn)行衣物的收放;9系統(tǒng)可以監(jiān)測雨水情況,并做出相應(yīng)的處理。2.3總體方案設(shè)計1、理論知識準(zhǔn)備階段:深入理解設(shè)計課題,仔細(xì)研究相關(guān)內(nèi)容,掌握與課題相關(guān)的知識;2、系統(tǒng)模塊確定階段:明確系統(tǒng)各個模塊,并理清它們之間的關(guān)系,收集相關(guān)的軟硬件資料;3、課題規(guī)劃階段:規(guī)劃系統(tǒng)的組成結(jié)構(gòu),繪制大體系統(tǒng)框架,并提出原理框圖;4、硬件電路設(shè)計階段:利用軟件完成硬件電路設(shè)計,并繪制各部分電路圖,將系統(tǒng)部件通過接口電路集成,繪制電路圖;5、軟件設(shè)計階段:根據(jù)系統(tǒng)控制過程,完成軟件設(shè)計部分,繪制主流程圖;6、模擬仿真階段:對系統(tǒng)進(jìn)行模擬仿真,檢查系統(tǒng)是否能夠按要求實現(xiàn)控制功能;7、論文整理階段:整理課題相關(guān)的論文,準(zhǔn)備最終的文獻(xiàn)資料。2.4單片機(jī)型號選擇STM32系列單片機(jī)是一款高性能,功能強(qiáng)大的系列單片機(jī)[15]。該系列單片機(jī)常被用于要求低成本、高性能和低功耗的嵌入式應(yīng)用程序,其在功耗和集成方面也展現(xiàn)出良好的性能。由于其便捷的工具和簡單的結(jié)構(gòu)并且結(jié)合了強(qiáng)大的功能性,在業(yè)界很受歡迎。最小系統(tǒng)如圖2-1。圖2-1單片機(jī)最小系統(tǒng)原理圖復(fù)位電路:包括復(fù)位按鈕和復(fù)位電路,用于在需要時將STM32單片機(jī)復(fù)位到初始狀態(tài)。復(fù)位按鈕通過連接到單片機(jī)的復(fù)位引腳,當(dāng)按下按鈕時,會將復(fù)位引腳拉低,觸發(fā)單片機(jī)復(fù)位[16]。晶振電路:用于提供STM32單片機(jī)的時鐘信號,通常包括一個晶體振蕩器和兩個穩(wěn)壓電容。晶體振蕩器的頻率需要根據(jù)單片機(jī)的時鐘要求進(jìn)行選擇,并通過連接到單片機(jī)的時鐘引腳來提供系統(tǒng)時鐘。電源電路:包括供電電源和電源濾波電路,用于為STM32單片機(jī)提供穩(wěn)定的電源電壓。通常使用穩(wěn)壓器或者電源模塊來將輸入電壓穩(wěn)定為單片機(jī)需要的工作電壓,并通過濾波電路來去除電源中的噪聲和干擾。本設(shè)計采用的主控芯片為STM32F103C8T6,該芯片是一款由STMicroelectronics公司生產(chǎn)的32位ARMCortex-M3內(nèi)核的微控制器芯片,是STM32系列中的一員。內(nèi)核:STM32F103C8T6采用ARMCortex-M3內(nèi)核,運(yùn)行頻率可達(dá)72MHz,具有高性能和低功耗特性。存儲器:STM32F103C8T6具有64KB的Flash存儲器和20KB的RAM存儲器,可用于存儲應(yīng)用程序代碼和數(shù)據(jù)。輸入/輸出(I/O):STM32F103C8T6提供多達(dá)37個通用輸入/輸出引腳(GPIO),可用于連接外部設(shè)備和傳感器。通信接口:STM32F103C8T6支持多種通信接口,包括USART、SPI、I2C等,可用于與其他設(shè)備進(jìn)行串行通信或并行通信[17]。定時器:STM32F103C8T6內(nèi)置多個定時器,包括通用定時器(TIM)和高級定時器(TIM),可用于實現(xiàn)各種定時和計數(shù)功能。ADC:STM32F103C8T6內(nèi)置12位模數(shù)轉(zhuǎn)換器(ADC),可用于模擬信號的數(shù)字化轉(zhuǎn)換。中斷控制器:STM32F103C8T6具有靈活的中斷控制器,可用于處理外部中斷和內(nèi)部異常。電源管理:STM32F103C8T6具有多種低功耗模式,可用于優(yōu)化功耗,并支持多種電源管理功能,如電源監(jiān)測、低電壓檢測等[18]。調(diào)試和編程:STM32F103C8T6支持多種調(diào)試和編程接口,包括SWD(SerialWireDebug)和JTAG(JointTestActionGroup),方便開發(fā)和調(diào)試。
第3章系統(tǒng)的硬件部分設(shè)計3.1系統(tǒng)總體設(shè)計硬件以濕度傳感器、光照傳感器、上位機(jī)、核心單片組成傳感器主要應(yīng)用了濕度傳感器、光照傳感器等本次設(shè)計是在STM32的基礎(chǔ)上研究開發(fā)的一款遠(yuǎn)程智能晾衣架設(shè)計。通過STM32單片機(jī)集合各個感應(yīng)模塊運(yùn)算,從而做出反應(yīng)。通過傳感器實時監(jiān)測周圍環(huán)境狀況是否存在下雨,光線弱的情況,如果有就會反饋給單片機(jī)。反饋給單片機(jī)通過上機(jī)位呈現(xiàn)出來,通過舵機(jī)自動收回衣物;從上機(jī)位還有一個獨立按鈕控制舵機(jī),可供手動控制。該系統(tǒng)完成的主要功能有:1上位機(jī)通過HC-05與下位機(jī)進(jìn)行通信;2上位機(jī)可接受下位機(jī)傳送的數(shù)據(jù)存入數(shù)據(jù)庫,并實時顯示;3上位機(jī)可查看濕度、光照歷史情況4下位機(jī)裝有濕度傳感器,實時檢測濃度并發(fā)送上位機(jī);5濕度低于所設(shè)閾值,自動打開舵機(jī);6下位機(jī)可以實時外界光照強(qiáng)度;7當(dāng)外界光照強(qiáng)度相差超過上位機(jī)設(shè)定閾值時,打開舵機(jī)8可以進(jìn)行烘干,語音播報,雨水監(jiān)測等功能。總體原理圖如下所示:圖3-1總體原理圖3.2系統(tǒng)的主要功能模塊設(shè)計3.2.1DHT11溫濕度傳感器模塊設(shè)計DHT11是一款常見的數(shù)字溫濕度傳感器,常用于測量環(huán)境中的溫度和濕度[19]。工作原理:DHT11采用單總線數(shù)字信號傳輸方式,通過內(nèi)部的溫濕度傳感器測量環(huán)境中的溫度和濕度,并將測量結(jié)果以數(shù)字信號的形式輸出。模塊參數(shù):1.測量范圍:DHT11的溫度測量范圍為0°C到50°C,濕度測量范圍為20%RH到90%RH。2.精度:DHT11的溫度測量精度為±2°C,濕度測量精度為±5%RH。3.供電電壓:DHT11的供電電壓為3V到5.5V,可以通過單一的數(shù)字引腳進(jìn)行供電。輸出信號:DHT11的輸出信號為數(shù)字信號,采用單總線通訊方式,可以通過微處理器的GPIO引腳進(jìn)行讀取。應(yīng)用:DHT11廣泛應(yīng)用于各種溫濕度監(jiān)測和控制系統(tǒng),如室內(nèi)氣候監(jiān)測、智能家居、農(nóng)業(yè)溫濕度監(jiān)測等。圖3-2DHT11溫濕度傳感器原理圖3.2.2藍(lán)牙模組模塊設(shè)計藍(lán)牙模塊,采用的是HC-05是一種集成藍(lán)牙功能的PCBA板,用于短距離無線通訊,按功能分為藍(lán)牙數(shù)據(jù)模塊和藍(lán)牙語音模塊。藍(lán)牙模塊是指集成藍(lán)牙功能的芯片基本電路集合,用于無線網(wǎng)絡(luò)通訊,大致可分為三大類型:傳輸模塊、藍(lán)牙音頻模塊、藍(lán)牙音頻+數(shù)據(jù)二合一模塊等等。一般模塊具有半成品的屬性,是在芯片的基礎(chǔ)上進(jìn)行過加工,以使后續(xù)應(yīng)用更為簡單[20]。藍(lán)牙設(shè)備采用無線電波連接手機(jī)和計算機(jī)。藍(lán)牙產(chǎn)品含有一塊兒小小藍(lán)牙模塊及其支撐聯(lián)接的藍(lán)牙無線電和軟件。當(dāng)兩個藍(lán)牙設(shè)備要想互相溝通時,他們需要進(jìn)行配對。藍(lán)牙設(shè)備相互間的通信在短程(被稱作微微網(wǎng),指設(shè)備采用藍(lán)牙技術(shù)聯(lián)接而成的網(wǎng)絡(luò))的臨時性網(wǎng)絡(luò)中進(jìn)行。這類網(wǎng)絡(luò)可容下兩至8臺設(shè)備進(jìn)行聯(lián)接。當(dāng)網(wǎng)絡(luò)環(huán)境創(chuàng)建完成,1臺設(shè)備作為主設(shè)備,而很多其他設(shè)備作為從設(shè)備。強(qiáng)禾科技在藍(lán)牙設(shè)備添加和離去無線電短程傳感時動態(tài)、自動創(chuàng)建。伴隨著近些年藍(lán)牙技術(shù)的飛速發(fā)展,在功耗不斷的降低的現(xiàn)狀下,藍(lán)牙的傳輸速率也不斷得到了提升,使藍(lán)牙的運(yùn)用范圍更為普遍。但若要設(shè)計構(gòu)思一種完整的藍(lán)牙系統(tǒng),就一定要全面熟練掌握藍(lán)牙的有關(guān)技術(shù)專業(yè)知識。藍(lán)牙模塊可以進(jìn)行串口(SPI、IIC)和MCU控制設(shè)備進(jìn)行數(shù)據(jù)傳輸。藍(lán)牙模塊可以作為主機(jī)和從機(jī)。主機(jī)便是可以搜索其他藍(lán)牙模塊并自動創(chuàng)建聯(lián)接,從機(jī)則不可以自動創(chuàng)建聯(lián)接,只可以等其他人聯(lián)接自身。如圖3-3藍(lán)牙模組原理圖。圖3-3藍(lán)牙模組原理圖3.2.3舵機(jī)模塊設(shè)計舵機(jī)是一種位置(角度)伺服的驅(qū)動器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。本文采用的180°舵機(jī),在高檔遙控玩具,如飛機(jī)、潛艇模型,遙控機(jī)器人中已經(jīng)得到了普遍應(yīng)用。SG90舵機(jī)是一種小型伺服舵機(jī),主要由外殼、板、驅(qū)動馬達(dá)、減速器和位置檢測元件構(gòu)成。其工作原理是通過接收機(jī)發(fā)出信號給舵機(jī),經(jīng)過電路板上的IC驅(qū)動無核心馬達(dá)開始轉(zhuǎn)動,通過減速齒輪將動力傳遞到擺臂,同時由位置檢測器送回信號,判斷是否已經(jīng)到達(dá)定位。位置檢測器實際上是可變電阻,當(dāng)舵機(jī)轉(zhuǎn)動時電阻值也會隨之改變,通過檢測電阻值就可以知道轉(zhuǎn)動的角度[21]。SG90舵機(jī)的驅(qū)動馬達(dá)采用細(xì)銅線纏繞在三極轉(zhuǎn)子上,當(dāng)電流流經(jīng)線圈時會產(chǎn)生磁場,與轉(zhuǎn)子外圍的磁鐵產(chǎn)生排斥作用,從而產(chǎn)生轉(zhuǎn)動的作用力。為了提高轉(zhuǎn)速和降低能耗,SG90舵機(jī)采用了空心杯馬達(dá)設(shè)計,將細(xì)銅線纏繞成極薄的中空圓柱體,并將磁鐵置于圓柱體內(nèi),使得轉(zhuǎn)子重量輕,轉(zhuǎn)動快速。SG90舵機(jī)具有防水和防塵設(shè)計,適合不同的工作環(huán)境。同時,舵機(jī)的齒輪有塑膠和金屬之分,金屬齒輪的舵機(jī)一般具有大扭力和高速型的特點,齒輪不會因負(fù)載過大而崩牙。SG90舵機(jī)廣泛應(yīng)用于模型、機(jī)器人、遙控車輛等領(lǐng)域,用于控制舵機(jī)的轉(zhuǎn)動角度和位置,實現(xiàn)精確的控制和動作。圖3-4舵機(jī)原理圖3.2.4風(fēng)速傳感器模塊設(shè)計風(fēng)速傳感器主要采用的是優(yōu)質(zhì)鋁合金型材,在表面進(jìn)行電鍍噴塑處理,它具有良好的防侵蝕,抗腐蝕特點,可以有效的保證長期使用的儀表不起銹,同時配合內(nèi)部順滑的軸承系統(tǒng)一起使用,確保了采集信息的準(zhǔn)確性。本系統(tǒng)采用的是485型風(fēng)速傳感器,它是一種性能優(yōu)越、可靠性高的智能儀器儀表,廣泛應(yīng)用于溫室、環(huán)保、氣象站、養(yǎng)殖等場所的風(fēng)速測量。風(fēng)速傳感器有很多種分類,主要可以分為皮托管式風(fēng)速傳感器、螺旋槳風(fēng)速傳感器、霍耳效應(yīng)電磁風(fēng)速傳感器、熱線式風(fēng)速傳感器以及超聲波風(fēng)速傳感器等。超聲波風(fēng)速傳感器主要是利用超聲波時差法來實現(xiàn)風(fēng)速的測量,聲音在空氣中的傳播速度,會和風(fēng)向上的氣流速度疊加。若超聲波的傳播方向與風(fēng)向相同,它的速度會加快;反之,它的速度會變慢。因此,在固定的檢測條件下,超聲波在空氣中傳播的速度可以和風(fēng)速函數(shù)對應(yīng)。通過計算即可得到精確的風(fēng)速和風(fēng)向。用于風(fēng)速測量的最廣泛使用的風(fēng)速計是轉(zhuǎn)杯式電動風(fēng)速計。旋轉(zhuǎn)風(fēng)杯驅(qū)動發(fā)電機(jī)。發(fā)電機(jī)的輸出運(yùn)行一個在風(fēng)速中校準(zhǔn)的電表。三杯風(fēng)速計目前被用作風(fēng)資源評估研究和實踐的行業(yè)標(biāo)準(zhǔn)。杯型風(fēng)速計由安裝在水平臂上的3或4個半球形杯組成,這些杯安裝在垂直軸上。在任何水平方向通過杯子的氣流以大致與風(fēng)速成比例的速度轉(zhuǎn)動軸。因此,在設(shè)定的時間間隔內(nèi)計算軸的轉(zhuǎn)數(shù)會產(chǎn)生一個與速度范圍內(nèi)的平均風(fēng)速成比例的值。原理圖如下圖。圖3-5風(fēng)速傳感器原理圖3.2.5光敏電阻模塊設(shè)計圖3-6光敏電阻原理圖光敏電阻(Photoresistor)是一種能夠根據(jù)光照強(qiáng)度變化而改變電阻值的電子元件。它通常由半導(dǎo)體材料制成,其電阻值在光照強(qiáng)度變化時呈現(xiàn)顯著的非線性特性。原理:光敏電阻的工作原理基于光生電效應(yīng),即光照射到半導(dǎo)體材料上時,會生成電子-空穴對,從而改變材料的電導(dǎo)性能,進(jìn)而改變電阻值。結(jié)構(gòu):光敏電阻通常由半導(dǎo)體材料制成,其中最常見的材料包括硫化鎘(CdS)和硫化鋅(ZnS)。它們通常被包裹在透明或半透明的外殼內(nèi),以保護(hù)半導(dǎo)體材料不受外部環(huán)境的影響。特性:光敏電阻的電阻值通常在光照強(qiáng)度較強(qiáng)時較低,而在光照強(qiáng)度較弱時較高。這種特性使得光敏電阻在光照傳感、光控制、光測量等領(lǐng)域得到廣泛應(yīng)用。應(yīng)用:光敏電阻廣泛應(yīng)用于許多領(lǐng)域,包括照明控制、攝像頭自動調(diào)光、光敏安全警報、光敏開關(guān)、光敏傳感器、光照度測量等。它們在自動化控制、電子設(shè)備、照明系統(tǒng)、安防系統(tǒng)等方面起著重要的作用。注意事項:在使用光敏電阻時,需注意光照強(qiáng)度范圍、光敏電阻的電壓和電流限制、溫度影響、光敏電阻的靈敏度、光敏電阻的壽命等因素,以確保其正常工作和準(zhǔn)確測量。3.2.6HDR-F-2.54語音模塊設(shè)計HDR(高速數(shù)據(jù)傳輸技術(shù))是面向CDMA(碼分多址)的一種高速無線接入技術(shù),用于滿足高速數(shù)據(jù)通信需求。它是第三代(3G)移動電話IMT-2000無線存取方式中CDMA陣營提出的一種方式,由美國高通公司在1999年底正式亮相。HDR技術(shù)已經(jīng)在2000年9月份完成了技術(shù)規(guī)范,并于2002年開始商用。HDR被認(rèn)為成本低、功能強(qiáng)大,適用于多種固定和移動通信設(shè)備,包括移動電話、手持計算機(jī)、筆記本電腦無線調(diào)制解調(diào)器等,支持互聯(lián)網(wǎng)通信協(xié)議,傳輸率高達(dá)2.4Mbps。圖3-7語音模塊原理圖3.2.7雨量傳感器模塊設(shè)計雨量傳感器適用于氣象臺(站)、水文站、農(nóng)林、國防等有關(guān)部門用來遙測液體降水量、降水強(qiáng)度、降水起止時間。用于防洪、供水調(diào)度、電站水庫水情管理為目的水文自動測報系統(tǒng)、自動野外測報站,為降水測量傳感器。圖3-8雨量傳感器模塊原理圖系統(tǒng)的軟件設(shè)計4.1軟件主流程圖當(dāng)全部系統(tǒng)軟件通電時,首先進(jìn)行的是單片機(jī)的初始化,成功后下位機(jī)中的溫濕度檢測控制模塊和風(fēng)速傳感器模塊通過收集現(xiàn)階段環(huán)境的溫濕度和風(fēng)速,在精確測量環(huán)境的溫度、環(huán)境的濕度和環(huán)境種的風(fēng)速后,數(shù)據(jù)采集模塊將傳輸數(shù)據(jù)到主控制板??刂破饕罁?jù)讀取到的溫濕度風(fēng)速數(shù)據(jù)信息和控制參數(shù)作出分辨。假如當(dāng)場檢測獲得的溫濕度主要參數(shù)在系統(tǒng)要求范疇內(nèi),則回到溫濕度檢測控制模塊再次下一輪檢測。假如檢測到現(xiàn)階段環(huán)境中的溫度和溫度超出控制參數(shù),便會運(yùn)行相對應(yīng)的機(jī)器設(shè)備,依照預(yù)置的操控方式,舵機(jī)對其做出相對應(yīng)的操作。如圖所示。圖4-1主流程圖4.2溫濕度采集模塊的軟件設(shè)計當(dāng)單片機(jī)初始化完成后,DHT11溫濕度傳感器會對周圍的溫度和濕度進(jìn)行采集并形成一個參數(shù)來表示溫度及濕度,若此數(shù)據(jù)在設(shè)定的范圍內(nèi),則觸發(fā)接下來的程序操作;若不在范圍內(nèi),則可選擇改變周圍環(huán)境后重新采集。圖4-2DHT11原理圖4.3光敏電阻模塊的軟件設(shè)計光敏電阻模塊對環(huán)境光強(qiáng)最敏感,一般用來檢測周圍環(huán)境的亮度和光強(qiáng)。當(dāng)單片機(jī)初始化完成后,光敏電阻會對周圍的光照進(jìn)行采集并形成一個參數(shù)來表示光照強(qiáng)度,若此數(shù)據(jù)在設(shè)定的范圍內(nèi),結(jié)合溫濕度傳感器采集的數(shù)據(jù),通過單片機(jī)對舵機(jī)做出指令;若不在范圍內(nèi),則可選擇改變周圍環(huán)境后重新采集。流程圖如下。圖4-3光敏電阻流程圖4.4風(fēng)速傳感器的軟件設(shè)計傳感器的VCC和Vin引腳由升壓轉(zhuǎn)換器模塊的輸出提供7.5V。當(dāng)單片機(jī)初始化完成后,風(fēng)速會被周圍的風(fēng)速影響而發(fā)生轉(zhuǎn)動,通過對風(fēng)速傳感器轉(zhuǎn)動的幅度進(jìn)行分析。傳感器會形成一個參數(shù)來表示風(fēng)速,若此數(shù)據(jù)在設(shè)定的范圍內(nèi),則觸發(fā)接下來的翻蛋操作;若不在范圍內(nèi),則可選擇改變周圍環(huán)境后重新采集。實現(xiàn)其功能的流程圖如下。圖4-4風(fēng)速傳感器流程圖4.5藍(lán)牙模塊軟件設(shè)計HC-05是一個藍(lán)牙模塊,連接到微控制器的串行端口,允許微控制器通過藍(lán)牙連接與其他設(shè)備通信。模塊本身可以在主模式和從模式下運(yùn)行,并且可以用于各種應(yīng)用,例如,智能家居應(yīng)用,遠(yuǎn)程控制,數(shù)據(jù)記錄應(yīng)用,機(jī)器人,監(jiān)控系統(tǒng)等。該模塊隨時可用作完成的分線板(以及沒有分線板),通過標(biāo)準(zhǔn)串行連接連接到現(xiàn)有項目。當(dāng)全部系統(tǒng)軟件通電時,首先進(jìn)行的是單片機(jī)的初始化,然后通過藍(lán)牙模塊HC-05進(jìn)行上位機(jī)與單片機(jī)直接的通信,流程如圖所示。圖4-5藍(lán)牙模塊流程圖4.6舵機(jī)模塊軟件設(shè)計首先開始單片機(jī)的初始化,初始化完成后單片機(jī)進(jìn)行設(shè)定的程序運(yùn)行,當(dāng)各個傳感器采集的數(shù)據(jù)達(dá)到異常時時,舵機(jī)開始運(yùn)行,將衣服進(jìn)行收回。圖4-6舵機(jī)模塊流程圖4.7雨量傳感器模塊軟件設(shè)計首先開始單片機(jī)的初始化,初始化完成后單片機(jī)進(jìn)行設(shè)定的程序運(yùn)行,當(dāng)雨量傳感器采集的數(shù)據(jù)達(dá)到要求時,舵機(jī)開始運(yùn)行,將衣服進(jìn)行收回。圖4-7雨量傳感器模塊軟件設(shè)計4.8HDR-F-2.54語音模塊軟件設(shè)計首先開始單片機(jī)的初始化,初始化完成后單片機(jī)進(jìn)行設(shè)定的程序運(yùn)行,采集的數(shù)據(jù)會進(jìn)行語音的播報。圖4-8語音模塊軟件設(shè)計第5章系統(tǒng)測試5.1系統(tǒng)實物圖圖5-1系統(tǒng)完整實物圖5.2測試原理圖5-2如圖5-2為藍(lán)牙模塊,實現(xiàn)上位機(jī)與下位機(jī)之間的實時通信。圖5-3如圖5-3為溫濕度傳感器,實時監(jiān)測溫濕度情況,當(dāng)檢測的數(shù)據(jù)異常時,收回晾出的衣服。圖5-4如圖5-4為光照檢測模塊,通過光敏電阻來監(jiān)測光照強(qiáng)度,當(dāng)采集的光照強(qiáng)度數(shù)據(jù)異常時,收回晾出的衣服。圖5-5如圖5-5位風(fēng)速傳感器,實時監(jiān)測當(dāng)前風(fēng)速,當(dāng)超過閾值時,收回晾出的衣服。圖5-6如圖5-6為舵機(jī)模塊,用來模擬晾出和收回衣服,反轉(zhuǎn)半周圍晾出衣服,正轉(zhuǎn)半軸為收回衣服。圖5-7如圖5-7為繼電器模塊,通過該模塊模擬烘干機(jī)工作。圖5-8如圖5-8為雨水傳感器模塊,通過該模塊檢測雨水。圖5-9如圖5-9為語音模塊,通過該模塊可以實現(xiàn)語音控制播報。圖5-10如圖5-10為上位機(jī)端手機(jī)界面,連接藍(lán)牙后,實時顯示當(dāng)前藍(lán)牙狀態(tài)、系統(tǒng)時間、溫度、亮度、風(fēng)速、是否在晾衣服、烘干狀態(tài)和是否下雨等數(shù)據(jù),且與下位機(jī)的數(shù)據(jù)一致;可以設(shè)置溫度、亮度和風(fēng)速閾值,當(dāng)檢測的數(shù)據(jù)超過閾值時,自動收回衣服。語音控制烘干關(guān)閉和晾衣架打開收回。5.3晾出和收回功能測試圖5-11晾出圖5-12收回如圖所示,在圖5-11中,可以看到顯示的是1,表明我們的衣服已經(jīng)處在了晾出的效果上。在圖5-12中,可以看到顯示的是0,這表明了我們的衣服已經(jīng)收回,實現(xiàn)了通過控制溫濕度、亮度、風(fēng)速等閾值來控制我們晾衣架實現(xiàn)自動收回和晾出。第6章總結(jié)與展望6.1總結(jié)在系統(tǒng)軟件的調(diào)試過程中,并不是一帆風(fēng)順,出現(xiàn)了一些錯誤。但是在老師的指導(dǎo)下,發(fā)現(xiàn)了這些問題的所在及時的做出了修正,問題的所在主要包括了以下層面。焊接問題,在組裝這些元件焊接到電路板的時候,焊接技術(shù)不足,焊接的效果不理想,需要多次重新焊接。仿真過程,在仿真過程中,出現(xiàn)一些代碼錯誤的問題,自己很難看出,通過老師的指正,及時做出了修改。6.2展望隨著科技的不斷發(fā)展和人們生活水平的提高,遠(yuǎn)程智能晾衣架作為一種現(xiàn)代化的家居設(shè)備,在未來有著廣闊的應(yīng)用前景。本文在基于單片機(jī)的遠(yuǎn)程智能晾衣架的設(shè)計和實現(xiàn)方面取得了一定的研究成果,但仍存在一些潛在的改進(jìn)和發(fā)展空間。未來可以進(jìn)一步提升智能晾衣架的智能化水平。目前,晾衣架主要依賴傳感器和單片機(jī)實現(xiàn)對風(fēng)速、溫度等環(huán)境參數(shù)的檢測和控制,但仍有進(jìn)一步改進(jìn)的空間。例如,可以引入更多的傳感器,如濕度傳感器、光照傳感器等,實現(xiàn)對衣物狀態(tài)和環(huán)境條件的更加精準(zhǔn)的監(jiān)測和控制,從而提供更加智能化的晾衣體驗。同時,可以借助人工智能技術(shù),通過學(xué)習(xí)用戶的使用習(xí)慣和衣物的屬性,自動優(yōu)化晾衣架的工作模式,提供個性化的晾衣解決方案。基于單片機(jī)的遠(yuǎn)程智能晾衣架在未來有著廣闊的應(yīng)用前景。通過進(jìn)一步提升智能化水平、拓展遠(yuǎn)程控制功能、優(yōu)化設(shè)計和材料選用、推廣應(yīng)用范圍、優(yōu)化能源消耗以及與其他智能家居設(shè)備的聯(lián)動和互聯(lián)網(wǎng)家居的整合,智能晾衣架將會更加智能化、便捷化、環(huán)保化,并為用戶提供更加舒適和便利的晾衣體驗。隨著科技的不斷創(chuàng)新和發(fā)展,智能晾衣架將在未來不斷演進(jìn),為人們的生活帶來更多的便利和舒適。
參考文獻(xiàn)[1]閆虹潤.一種用于交通運(yùn)輸管理的監(jiān)控攝像頭[J].:,CN210440931U[P].2020.鄭曉茜,邵帥飛.溫室大棚環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)[J].南方論壇10.3969/j.issn.1672-3872.2021.19.007[2]郭銘,王佳佳.基于STM32智能家居濕度控制系統(tǒng)[J].內(nèi)蒙古科技與經(jīng)濟(jì)1007—6921(2021)24—0081—03[3]王莉,王宏濤.基于物聯(lián)網(wǎng)的實驗室溫度遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計[J].電子制作,2020(13):10-12..[4]鄭艷森,駱旭坤.基于MQTT的智能晾衣架遠(yuǎn)程監(jiān)控系統(tǒng)[J].2020[5]任森偉,朱麗軍,李晨浩,薛夢嬌,楊立娜.基于遠(yuǎn)程監(jiān)控的智能晾衣架實驗系統(tǒng)研制[J].科學(xué)技術(shù)創(chuàng)新2021.[6]苗玉剛,何玉輝,李云自動折疊式太陽能板的設(shè)計[J].2020[7]陳林奎,徐鶴.基于NB-IoT的課堂管理系統(tǒng)設(shè)計[J].計算機(jī)技術(shù)與發(fā)展,2020.[8]鄭艷森,駱旭坤.基于MQTT的智能晾衣架遠(yuǎn)程監(jiān)控系統(tǒng)[J].泉州師范學(xué)院學(xué)報,2020,38(02):78-83.[9]劉偉,楊中良,朱思言,潘露露.基于網(wǎng)絡(luò)遠(yuǎn)程控制的自動晾衣系統(tǒng)設(shè)計[J].周口師范學(xué)院學(xué)報,2016,33(05):75-77.[10]何永晟.智能晾衣架設(shè)計[J].科技資訊,2022,20(18):70-73.[11]吳靜怡,沈懷斌.智能晾衣架[J].發(fā)明與創(chuàng)新(高中生),2021(12):22-25.[12]陳鵬,李陽軍.智能晾衣架的設(shè)計與實現(xiàn)[J].電子世界,2021(17):166-167.DOI:10.19353/ki.dzsj.2021.17.067.[13]馮少鵬,方靜池.一種智能晾衣架的創(chuàng)新設(shè)計[J].技術(shù)與市場,2020,27(05):41-42.[14]謝浩源,鄭建曉,李志宏.基于STM32的智能晾衣架控制系統(tǒng)設(shè)計[J].南方農(nóng)機(jī),2020,51(07):91-92+95.[15]張宇,湯志鵬,袁志剛,顧秋宇,靳敏.智能晾衣系統(tǒng)[J].內(nèi)江科技,2022,43(12):56-57.[16]許冬雪,魏芳,邢春曉,侯躍達(dá),張議心,何士海.一種新型智能伸縮晾曬衣架的設(shè)計[J].新疆農(nóng)機(jī)化,2022(04):17-19.[17]CaoWang,QiqiMei,LinglingZeng.TheWarehouseTemperatureandHumidityMeasurementandControlSystemBasedonSCMJ.JournalofResearchinScienceandEngineering,2020,2(6).[18]N.NursultanovW.J.B.HeffernanM.J.WM.RvanHerel,J.J.Nijdam.ComputationalcalculationoftemperatureandelectricalresistancetocontrolJouleheatingofgreenPinusradiatalogsJAppliedThermalEngineering,2019159.[19]MinCheng,JunhuiZhang,BingXuRuqiDing,GengYang.Anti-windupschemeoftheelectronicloadsensingpumpviaswitchedflow/powercontrol[].Mechatronics,2019.[20]MilesL.MorganDanJ.Curtis,DavideDeganello.Controlofmorphologicalandelectricalpropertiesofflexographicprintedelectronicsthroughtailoredinkrheology[1].OrganicElectronics,2019.[21]A.G.Madureira,J.A.Pe?asLopes.Ancillaryservicesmarketframeworkforvoltagecontrolindistributionnetworkswithmicrogrids[J].ElectricPowerSystemsResearch,2012,86件,2021,42(08):153-155.
附錄源代碼#include"dht11.h"#include"delay.h"u8temperature,humidity;//復(fù)位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); //主機(jī)拉高20~40us}//等待DHT11的回應(yīng)//返回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();//復(fù)位DHT11 returnDHT11_Check();//等待DHT11的回應(yīng)}#include"dht11.h"#include"delay.h"u8temperature,humidity;//復(fù)位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); //主機(jī)拉高20~40us}//等待DHT11的回應(yīng)//返回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();//復(fù)位DHT11 returnDHT11_Check();//等待DHT11的回應(yīng)}#include"includes.h"u8shidu_max=50;u16liangdu_min=1500;u16fengsu_min=400;u8liangyifu=0;u8state=0;sys_timjiance_tim;voidapp(void){ u8shangchuan[256]; if(sys_running_timer.ms-jiance_tim.ms>1000) { DHT11_Read_Data(&temperature,&humidity); //?áè???êa?è?μ if(liangyifu) { if(humidity>shidu_max||adc_value[0]<liangdu_min||adc_value[1]>fengsu_min) { DaoZhuan;state=0; } else { ZhengZhuan;state=1; } } sprintf(shangchuan,"+H%02dL%04dF%04dU%dS%d-", humidity,adc_value[0],adc_value[1],liangyifu,state); USART3_send_buf(shangchuan,19); jiance_tim=sys_running_timer; } }#include"includes.h"intmain(void){ u8t=0; delay_init(); //延時函數(shù)初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); USART1_Config(115200); //串口初始化為9600 USART3_Config(9600);//藍(lán)牙模組 adc_init(); DHT11_Init(); TIM3_PWM_Init();//舵機(jī)定時器初始化 system_Time_Init(9,7199); sys_gpio_init(); while(1) { app(); }}#include"delay.h"http:////////////////////////////////////////////////////////////////////////////////// //如果需要使用OS,則包括下面的頭文件即可.#ifSYSTEM_SUPPORT_OS#include"includes.h" //ucos使用 #endif//V1.2修改說明//修正了中斷中調(diào)用出現(xiàn)死循環(huán)的錯誤//防止延時不準(zhǔn)確,采用dowhile結(jié)構(gòu)!//V1.3修改說明//增加了對UCOSII延時的支持.//如果使用ucosII,delay_init會自動設(shè)置SYSTICK的值,使之與ucos的TICKS_PER_SEC對應(yīng).//delay_ms和delay_us也進(jìn)行了針對ucos的改造.//delay_us可以在ucos下使用,而且準(zhǔn)確度很高,更重要的是沒有占用額外的定時器.//delay_ms在ucos下,可以當(dāng)成OSTimeDly來用,在未啟動ucos時,它采用delay_us實現(xiàn),從而準(zhǔn)確延時//可以用來初始化外設(shè),在啟動了ucos之后delay_ms根據(jù)延時的長短,選擇OSTimeDly實現(xiàn)或者delay_us實現(xiàn).//V1.4修改說明20110929//修改了使用ucos,但是ucos未啟動的時候,delay_ms中中斷無法響應(yīng)的bug.//V1.5修改說明20120902//在delay_us加入ucos上鎖,防止由于ucos打斷delay_us的執(zhí)行,可能導(dǎo)致的延時不準(zhǔn)。//V1.6修改說明20150109//在delay_ms加入OSLockNesting判斷。//V1.7修改說明20150319//修改OS支持方式,以支持任意OS(不限于UCOSII和UCOSIII,理論上任意OS都可以支持)//添加:delay_osrunning/delay_ostickspersec/delay_osintnesting三個宏定義//添加:delay_osschedlock/delay_osschedunlock/delay_ostimedly三個函數(shù)//V1.8修改說明20150519//修正UCOSIII支持時的2個bug://delay_tickspersec改為:delay_ostickspersec//delay_intnesting改為:delay_osintnesting//////////////////////////////////////////////////////////////////////////////////staticu8fac_us=0; //us延時倍乘數(shù) staticu16fac_ms=0; //ms延時倍乘數(shù),在ucos下,代表每個節(jié)拍的ms數(shù) #ifSYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS定義了,說明要支持OS了(不限于UCOS).//當(dāng)delay_us/delay_ms需要支持OS的時候需要三個與OS相關(guān)的宏定義和函數(shù)來支持//首先是3個宏定義://delay_osrunning:用于表示OS當(dāng)前是否正在運(yùn)行,以決定是否可以使用相關(guān)函數(shù)//delay_ostickspersec:用于表示OS設(shè)定的時鐘節(jié)拍,delay_init將根據(jù)這個參數(shù)來初始哈systick//delay_osintnesting:用于表示OS中斷嵌套級別,因為中斷里面不可以調(diào)度,delay_ms使用該參數(shù)來決定如何運(yùn)行//然后是3個函數(shù)://delay_osschedlock:用于鎖定OS任務(wù)調(diào)度,禁止調(diào)度//delay_osschedunlock:用于解鎖OS任務(wù)調(diào)度,重新開啟調(diào)度//delay_ostimedly:用于OS延時,可以引起任務(wù)調(diào)度.//本例程僅作UCOSII和UCOSIII的支持,其他OS,請自行參考著移植//支持UCOSII#ifdef OS_CRITICAL_METHOD //OS_CRITICAL_METHOD定義了,說明要支持UCOSII #definedelay_osrunning OSRunning //OS是否運(yùn)行標(biāo)記,0,不運(yùn)行;1,在運(yùn)行#definedelay_ostickspersec OS_TICKS_PER_SEC //OS時鐘節(jié)拍,即每秒調(diào)度次數(shù)#definedelay_osintnesting OSIntNesting //中斷嵌套級別,即中斷嵌套次數(shù)#endif//支持UCOSIII#ifdef CPU_CFG_CRITICAL_METHOD //CPU_CFG_CRITICAL_METHOD定義了,說明要支持UCOSIII #definedelay_osrunning OSRunning //OS是否運(yùn)行標(biāo)記,0,不運(yùn)行;1,在運(yùn)行#definedelay_ostickspersec OSCfg_TickRate_Hz //OS時鐘節(jié)拍,即每秒調(diào)度次數(shù)#definedelay_osintnesting OSIntNestingCtr //中斷嵌套級別,即中斷嵌套次數(shù)#endif//us級延時時,關(guān)閉任務(wù)調(diào)度(防止打斷us級延遲)voiddelay_osschedlock(void){#ifdefCPU_CFG_CRITICAL_METHOD //使用UCOSIII OS_ERRerr; OSSchedLock(&err); //UCOSIII的方式,禁止調(diào)度,防止打斷us延時#else //否則UCOSII OSSchedLock(); //UCOSII的方式,禁止調(diào)度,防止打斷us延時#endif}//us級延時時,恢復(fù)任務(wù)調(diào)度voiddelay_osschedunlock(void){ #ifdefCPU_CFG_CRITICAL_METHOD //使用UCOSIII OS_ERRerr; OSSchedUnlock(&err); //UCOSIII的方式,恢復(fù)調(diào)度#else //否則UCOSII OSSchedUnlock(); //UCOSII的方式,恢復(fù)調(diào)度#endif}//調(diào)用OS自帶的延時函數(shù)延時//ticks:延時的節(jié)拍數(shù)voiddelay_ostimedly(u32ticks){#ifdefCPU_CFG_CRITICAL_METHOD OS_ERRerr; OSTimeDly(ticks,OS_OPT_TIME_PERIODIC,&err); //UCOSIII延時采用周期模式#else OSTimeDly(ticks); //UCOSII延時#endif}//systick中斷服務(wù)函數(shù),使用ucos時用到voidSysTick_Handler(void){ if(delay_osrunning==1) //OS開始跑了,才執(zhí)行正常的調(diào)度處理 { OSIntEnter(); //進(jìn)入中斷 OSTimeTick(); //調(diào)用ucos的時鐘服務(wù)程序 OSIntExit(); //觸發(fā)任務(wù)切換軟中斷 }}#endif //初始化延遲函數(shù)//當(dāng)使用OS的時候,此函數(shù)會初始化OS的時鐘節(jié)拍//SYSTICK的時鐘固定為HCLK時鐘的1/8//SYSCLK:系統(tǒng)時鐘voiddelay_init(){#ifSYSTEM_SUPPORT_OS //如果需要支持OS. u32reload;#endif SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //選擇外部時鐘HCLK/8 fac_us=SystemCoreClock/8000000; //為系統(tǒng)時鐘的1/8#ifSYSTEM_SUPPORT_OS //如果需要支持OS. reload=SystemCoreClock/8000000; //每秒鐘的計數(shù)次數(shù)單位為M reload*=1000000/delay_ostickspersec; //根據(jù)delay_ostickspersec設(shè)定溢出時間 //reload為24位寄存器,最大值:16777216,在72M下,約合1.86s左右 fac_ms=1000/delay_ostickspersec; //代表OS可以延時的最少單位 SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk; //開啟SYSTICK中斷 SysTick->LOAD=reload; //每1/delay_ostickspersec秒中斷一次 SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //開啟SYSTICK#else fac_ms=(u16)fac_us*1000; //非OS下,代表每個ms需要的systick時鐘數(shù)#endif} #ifSYSTEM_SUPPORT_OS //如果需要支持OS.//延時nus//nus為要延時的us數(shù). voiddelay_us(u32nus){ u32ticks; u32told,tnow,tcnt=0; u32reload=SysTick->LOAD; //LOAD的值 ticks=nus*fac_us; //需要的節(jié)拍數(shù) tcnt=0; delay_osschedlock(); //阻止OS調(diào)度,防止打斷us延時 told=SysTick->VAL; //剛進(jìn)入時的計數(shù)器值 while(1) { tnow=SysTick->VAL; if(tnow!=told) { if(tnow<told)tcnt+=told-tnow; //這里注意一下SYSTICK是一個遞減的計數(shù)器就可以了. elsetcnt+=reload-tnow+told; told=tnow; if(tcnt>=ticks)break; //時間超過/等于要延遲的時間,則退出. } }; delay_osschedunlock(); //恢復(fù)OS調(diào)度 }//延時nms//nms:要延時的ms數(shù)voiddelay_ms(u16nms){ if(delay_osrunning&&delay_osintnesting==0) //如果OS已經(jīng)在跑了,并且不是在中斷里面(中斷里面不能任務(wù)調(diào)度) { if(nms>=fac_ms) //延時的時間大于OS的最少時間周期 { delay_ostimedly(nms/fac_ms); //OS延時 } nms%=fac_ms; //OS已經(jīng)無法提供這么小的延時了,采用普通方式延時 } delay_us((u32)(nms*1000)); //普通方式延時}#else//不用OS時//延時nus//nus為要延時的us數(shù). voiddelay_us(u32nus){ u32temp; SysTick->LOAD=nus*fac_us; //時間加載 SysTick->VAL=0x00; //清空計數(shù)器 SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //開始倒數(shù) do { temp=SysTick->CTRL; }while((temp&0x01)&&!(temp&(1<<16))); //等待時間到達(dá) SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //關(guān)閉計數(shù)器 SysTick->VAL=0X00; //清空計數(shù)器 }//延時nms//注意nms的范圍//SysTick->LOAD為24位寄存器,所以,最大延時為://nms<=0xffffff*8*1000/SYSCLK//SYSCLK單位為Hz,nms單位為ms//對72M條件下,nms<=1864voiddelay_ms(u16nms){ u32temp; SysTick->LOAD=(u32)nms*fac_ms; //時間加載(SysTick->LOAD為24bit) SysTick->VAL=0x00; //清空計數(shù)器 SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //開始倒數(shù) do { temp=SysTick->CTRL; }while((temp&0x01)&&!(temp&(1<<16))); //等待時間到達(dá) SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //關(guān)閉計數(shù)器 SysTick->VAL=0X00; //清空計數(shù)器 }#endif#include"tim.h"/*定時器模塊,該模塊基本作用提供一個系統(tǒng)運(yùn)行的時間基準(zhǔn),定時方式選擇TIMER2定時器,放棄滴答時鐘和RTC避免移植帶來的問題*/sys_timsys_running_timer;//定時器初始化,系統(tǒng)以毫秒計時,初始化的參數(shù)為:system_Time_Init(9,7199);//8M晶振voidsystem_Time_Init(u16arr,u16psc){TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure; NVIC_InitTypeDefNVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//時鐘使能 TIM_TimeBaseStructure.TIM_Period=arr;//設(shè)置在下一個更新事件裝入活動的自動重裝載寄存器周期的值 計數(shù)到5000為500ms TIM_TimeBaseStructure.TIM_Prescaler=psc;//設(shè)置用來作為TIMx時鐘頻率除數(shù)的預(yù)分頻值10Khz的計數(shù)頻率 TIM_TimeBaseStructure.TIM_ClockDivision=0;//設(shè)置時鐘分割:TDTS=Tck_tim TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//TIM向上計數(shù)模式 TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);//根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時間基數(shù)單位 TIM_ClearITPendingBit(TIM2,TIM_IT_Update); TIM_ITConfig(//使能或者失能指定的TIM中斷 TIM2,//TIM2 TIM_IT_Update, ENABLE//使能 ); NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;//TIM3中斷 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//先占優(yōu)先級0級 NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//從優(yōu)先級3級 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道被使能 NVIC_Init(&NVIC_InitStructure);//根據(jù)NVIC_InitStruct中指定的參數(shù)初始化外設(shè)NVIC寄存器 TIM_Cmd(TIM2,ENABLE);//使能TIMx外設(shè) sys_running_timer.ms=0; sys_running_timer.sec=0;}voidTIM2_IRQHandler(void)//TIM3中斷{ if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET)//檢查指定的TIM中斷發(fā)生與否:TIM中斷源 { TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除TIMx的中斷待處理位:TIM中斷源 sys_running_timer.ms+=1; if(sys_running_timer.ms%1000==0)sys_running_timer.sec++; }}#include"usart.h" #include"string.h"#include"app.h"#include"timer.h"u8DMA_UART1_data[DMA_UART1_data_len];voidUSART1_Config(u32bound){//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|RCC_APB2Periph_AFIO,ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); //USART1_TXGPIOA.9GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//PA.9GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //復(fù)用推挽輸出GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIOA.9//USART1_RX GPIOA.10初始化GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//PA10GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空輸入GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIOA.10//Usart1NVIC配置NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=4;//搶占優(yōu)先級4 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(USART1); 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(USART1,&USART_InitStructure);//初始化串口1 USART_ITConfig(USART1,USART_IT_IDLE,ENABLE); USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE);USART_Cmd(USART1,ENABLE);//使能串口1 DMA_DeInit(DMA1_Channel5); DMA_InitStructure.DMA_PeripheralBaseAddr=(u32)(&USART1->DR); DMA_InitStructure.DMA_MemoryBaseAddr=(u32)DMA_UART1_data; DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC; DMA_InitStructure.DMA_BufferSize=DMA_UART1_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_Channel5,&DMA_InitStructure); DMA_Cmd(DMA1_Channel5,ENABLE);}voidUSART1_IRQHandler(void) //串口1中斷服務(wù)程序{ u16
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安徽農(nóng)業(yè)大學(xué)《孟荀比較研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 公司產(chǎn)品價格調(diào)整通知公告
- 工地噪音標(biāo)準(zhǔn)
- 第15課 明朝的統(tǒng)治 教案2024-2025學(xué)年七年級歷史下冊新課標(biāo)
- 屋面噴漆改造施工方案
- 消火栓防撞柱施工方案
- 專項施工方案動畫視頻
- 2025年高考?xì)v史風(fēng)標(biāo)訓(xùn)練卷2(含解析)
- 文物清除水銹施工方案
- 5年級下冊語文書第4課批準(zhǔn)
- 高處作業(yè)專項安全培訓(xùn)考試試題(帶答案)
- GB/T 24186-2022工程機(jī)械用高強(qiáng)度耐磨鋼板和鋼帶
- 護(hù)理人際關(guān)系倫理
- 中國隧道及地下工程修建技術(shù)PPT
- 不良事件魚骨圖分析
- 三角形章起始課-展示課件
- 有限空間作業(yè)審批表范本
- 超市便利店日常工作檢查記錄表
- 細(xì)支氣管肺泡癌的影像診斷(61頁)
- X射線的物理學(xué)基礎(chǔ)-
- 財務(wù)英語英漢對照表
評論
0/150
提交評論