《基于物聯(lián)網(wǎng)的智能衣柜設(shè)計》14000字(論文)_第1頁
《基于物聯(lián)網(wǎng)的智能衣柜設(shè)計》14000字(論文)_第2頁
《基于物聯(lián)網(wǎng)的智能衣柜設(shè)計》14000字(論文)_第3頁
《基于物聯(lián)網(wǎng)的智能衣柜設(shè)計》14000字(論文)_第4頁
《基于物聯(lián)網(wǎng)的智能衣柜設(shè)計》14000字(論文)_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于物聯(lián)網(wǎng)的智能衣柜設(shè)計目錄TOC\o"1-2"\h\u9623摘要 111829關(guān)鍵詞 2306991.緒論 262811.1研究背景及意義 210511.2國內(nèi)外研究現(xiàn)狀 2176871.3研究方法 3295032.系統(tǒng)主要技術(shù)簡介 4248022.1WiFi通訊技術(shù) 434132.2傳感器技術(shù) 6201812.3OneNet云服務(wù)技術(shù) 62493.系統(tǒng)分析 8258713.1功能需求分析 8281543.2可行性分析 914454.系統(tǒng)整體設(shè)計 10290704.1系統(tǒng)架構(gòu)設(shè)計 10303444.2衣柜結(jié)構(gòu)設(shè)計 10105444.3系統(tǒng)硬件設(shè)計 11146924.4系統(tǒng)軟件設(shè)計 1424185.系統(tǒng)測試 17275766.總結(jié)與展望 194163參考文獻 2014460附錄 21摘要:在經(jīng)濟和生活水平快速發(fā)展和提高的當今社會,人們需要放存的衣服越來越多,這就給人們帶來了相當多的困擾和麻煩。本設(shè)計的研究目的就是為了處理衣物放存環(huán)境條件中濕度過大引發(fā)的發(fā)霉、生蟲等一些問題,還有就是在陰天下雨時沒有辦法進行快速晾干潮濕衣服的一些問題。本設(shè)計采用了調(diào)查方法,實驗方法,文獻研究方法以及系統(tǒng)科學的方法,對潮濕衣物進行一定的技術(shù)處理,研究并且設(shè)計了這個集除濕、消毒和狀態(tài)顯示功能為一體的智能衣柜系統(tǒng),來解決衣物放存的一些問題。系統(tǒng)把STM32當做控制核心,而且還帶有一些智能控制算法,可以完成去潮防霉和消毒殺菌等一系列的功能。不僅如此,智能衣柜在物聯(lián)網(wǎng)的智能系統(tǒng)上,還能夠連接到OneNet云平臺,完成跟用戶的簡便優(yōu)良的交互。該智能衣柜系統(tǒng)能夠靈活、有效地防止衣物發(fā)霉,而且保證了衣柜內(nèi)部的環(huán)境條件是最適合衣物放存的。該設(shè)計具有智能,成本低和方便快捷等優(yōu)點,合理有效地解決了人們?nèi)粘I钪械囊挛锓糯鎲栴}。關(guān)鍵詞:智能衣柜去潮防霉云平臺物聯(lián)網(wǎng)1.緒論隨著時代的發(fā)展和技術(shù)的進步,人工智能帶來了新的生活方式,家具行業(yè)也逐漸引入了智能控制技術(shù)。許多制造商已開始嘗試優(yōu)先占領(lǐng)智能家居市場。智能家居產(chǎn)品融合了多種技術(shù),它是創(chuàng)新,智慧和實用性的統(tǒng)一,并具有強大的功能可塑性REF_Ref2114\w\h[1]。但是市場到目前為止還沒有得到很好的發(fā)展,是由于各工廠設(shè)計的相似性以及無用和繁瑣的功能與互聯(lián)網(wǎng)行業(yè)不完全聯(lián)系所導致的。1.1研究背景及意義近年來,社會經(jīng)濟發(fā)展的越來越快了,大家的生活水平越來越高了,大家的衣物也是越來越多,越來越復雜了。衣櫥已經(jīng)成為我們?nèi)粘I钪械谋匦杵?。在響應市場的需求的過程中,衣櫥從最開始存放衣物的功能,到現(xiàn)在發(fā)展到各種各樣的功能衣柜層出不窮。經(jīng)過對傳統(tǒng)的衣柜行業(yè)的調(diào)查研究發(fā)現(xiàn):傳統(tǒng)衣柜會引發(fā)衣服潮濕發(fā)霉和生蟲等問題,嚴重的影響了衣服的質(zhì)量和穿著的舒適度。與傳統(tǒng)衣柜相比,智能衣柜具有更強大的功能和“意識”REF_Ref25216\w\h[2]。在簡單的儲物衣柜中長期存放的衣服容易受潮和發(fā)霉。智能化衣櫥能夠為衣物存放提供非常好的濕度和溫度條件,而且還能夠調(diào)試衣櫥中的濕度和溫度,防止衣物發(fā)霉。與普通衣柜布局的錯亂和沒有明顯的區(qū)分相比,智能衣柜的布局更加合理。儲衣空間分為衣架區(qū),配飾區(qū),抽屜區(qū)等,儲物效果更好。鑒于傳統(tǒng)衣柜存在的問題,該設(shè)計可以使衣柜內(nèi)部更加整潔。這個設(shè)計要運用物聯(lián)網(wǎng)方面的一些技術(shù),升級以前一些衣柜的結(jié)構(gòu)還有功能,然后讓衣柜在放存衣物的時候具備無損的干燥、殺菌防霉還有遠程控制等一些功能,而且能夠操縱智能控制算法來完成對衣柜的控制。1.2國內(nèi)外研究現(xiàn)狀在世界上,跟隨著衣柜研究的不斷進步,衣柜也逐步開始完成了包括智能化在內(nèi)的一些性能。我們國家最早在2005年對智能衣柜開始展開研究,像唐佳青、鐘吉湘一些人開始走上了對智能衣柜的強大性能進行探索的道路,而且還嘗試對其類型進行了分類,可是并沒有進行深入的研究。2011年,毛毅先生在解析智能控制技術(shù)的根源之上,設(shè)計完成了一款擁有防潮和防霉,還有殺菌消毒等一些功能融為一體的智能衣櫥REF_Ref23374\w\hREF_Ref23374\w\hREF_Ref23400\w\h[3]。在國外,智能衣柜的一些研究領(lǐng)域,當然也有比較多的優(yōu)秀的想法以及成功的案例。早在2006年,美國的一家公司完成并實現(xiàn)了第一款智能衣柜系統(tǒng),此產(chǎn)品最主要的是根據(jù)衣柜上裝配好的顯示屏進行運行。不僅如此,人們還可以通過對屏幕地點擊對它進行管控,比較方便。但是由于功能特別少,性能不齊全,尺寸非常大等不足,限制了智能衣柜的普遍而廣泛地推廣。盡管現(xiàn)在研究的智能衣柜已經(jīng)研發(fā)出了多種類型,而且也可以給人們帶來許許多多的方便,但是還有許許多多的問題有待進一步解決。1.3研究方法1.文獻研究法:經(jīng)過收集、研讀、分析與總結(jié)國內(nèi)外與智能衣柜相關(guān)的一些著作、期刊、碩博士學位論文及其他材料,去了解現(xiàn)在跟智能衣柜相關(guān)領(lǐng)域的一些研究情況和進度,從而能夠系統(tǒng)的把握智能衣柜的整體研究,同時能夠得到在智能衣柜研究道路上的一些問題還有不足。2.實驗法:在模擬使用智能衣柜的基礎(chǔ)上,充分的去感受市面上的衣物的存儲裝置。與此同時,結(jié)合衣物放存的相關(guān)評論及文章,揣摩衣物放存可能存在的一些場景。并把它做為設(shè)計智能衣柜的根據(jù),從而建立實驗大綱,驗證用戶對的衣物放存的想法和態(tài)度。3.調(diào)查法:為了擁有大家使用智能衣柜的想法及反饋,安排了關(guān)于智能衣柜使用情況的問卷調(diào)查。直接干脆的對智能衣柜的需求場景進行了考證和區(qū)分。4.系統(tǒng)科學方法:把設(shè)計好的智能衣柜系統(tǒng)模型裝置,實行一些可用性的測試。并且注意使用者在使用智能衣柜時,他們的使用情況、使用時間和錯誤操作等,然后獲得他們對智能衣柜的反饋意見。最后根據(jù)總結(jié)測試的結(jié)果,給未來智能衣柜的設(shè)計、改動和更新提供一些方向和指導。

2.系統(tǒng)主要技術(shù)簡介2.1WiFi通訊技術(shù)Wi-Fi模塊在物聯(lián)網(wǎng)三層結(jié)構(gòu)中屬于傳輸層。有能夠把串行端口轉(zhuǎn)為切合無線通信標準的嵌入式的性能。它里邊不僅僅有無線網(wǎng)絡(luò)協(xié)議IEEE802.11b.gn協(xié)議棧,而且還有TCP/IP協(xié)議棧REF_Ref26039\w\h[4]。內(nèi)置在無線通信模塊里邊的傳統(tǒng)的硬件裝置,能夠干脆利落的運用無線技術(shù)連接到網(wǎng)絡(luò)。所以,它就是成功完成智能家居,還有其它IOT應用程序的一些重要的組成成分。2.1.1WiFi模塊模式WiFi模塊有三大模式:AP、STA、STA+AP。AP模式:提供無線訪問服務(wù),也就是這個模塊擔任無線熱點,許可其他設(shè)備連接到這個模塊,并且無線路由器/網(wǎng)橋在此模式下工作。STA模式:與無線終端類似,它不接受無線訪問服務(wù)。這個模式是連接到無線網(wǎng)絡(luò)上的,然后它用來完成串行端口跟其它裝置內(nèi)部的無線數(shù)據(jù)的傳輸。通常,無線網(wǎng)卡在此模式下工作。STA+AP模式:這個模式用在無線AP還有無線STA,而且能夠把別的設(shè)備連接到這個模式。這個模式還可以實現(xiàn)串行端口與另外的設(shè)備之間的無線數(shù)據(jù)傳輸還有轉(zhuǎn)換。2.1.2WiFi模塊選型目前市場上主流的WiFi模塊有cc3200、ESP8266、mt7681,下面是對三種型號的WiFi模塊的總結(jié),如表2.1所示。表2.1WiFi模塊型號總結(jié)表參數(shù)\芯片ESP8266CC3200MT7681頻段2.4G2.4G2.4GCPUTensilicaL106(80M)ARMCortex-M4(80M)32-bitRISCMCU系統(tǒng)FreeRTOSFreeRTOSWindows和LinuxSDK是否開源是是是內(nèi)存50KB64KB64KBFLASHEXTFLASHEXTFLASHEXTFLASH工作電壓范圍3.0-3.6V2.1-3.6V2.97-3.63V工作溫度-40~125℃-40~85℃-10~70℃功耗(54MHz)TX:140mARX:56mATX:229mARX:59mATX:210mARX:59mA封裝QFN32引腳5x5mmQFN64引腳9x9mmQFN40引腳5x5mm2.1.3AT指令使用WiFi模塊一般分兩個步驟。配置WiFi模塊。AT指令是應用于WiFi模塊與單片機之間的連接與通信的指令。常用指令集,如表2.2所示。表2.2常用指令集表RST重新啟動模塊指令GMR查看版本信息指令CWJAP設(shè)置加入AP熱點指令CWSAP設(shè)置WIFI參數(shù)指令CWLIF查看已經(jīng)接好的IP指令CIPSTATUS得到連接狀況指令CIPSEND發(fā)送數(shù)據(jù)指令CIFSR得到IP地址指令CIPMUX打開多連接指令CIPMODE設(shè)置如何傳輸指令CIPSTO設(shè)置超時指令CIUPDATE固件升級指令2.1.4接收、發(fā)送數(shù)據(jù)WiFi模塊與STM32連接,用于發(fā)送和接收數(shù)據(jù),其通常的模塊連接結(jié)構(gòu)圖,如圖2.1所示。圖2.1模塊連接結(jié)構(gòu)圖2.2傳感器技術(shù)傳感器是現(xiàn)在一種非常流行、非常實用的檢測裝置,能夠感應并檢測到一些特殊信息,而且能夠根據(jù)必然的規(guī)則,將感應到的大部分信息轉(zhuǎn)變成電信號,或者是另外的所需形式的信息傳遞出來,進而來達到一些像存儲跟顯示記錄,或者是信息的傳輸還有處理之類的良好效果。大部分的傳感器一般是由轉(zhuǎn)換元件,敏感元件,輔助電源和轉(zhuǎn)換電路四部分組成。傳感器包含像小型化、數(shù)字化和系統(tǒng)化等一些非常特別的屬性。2.3OneNet云服務(wù)技術(shù)2.3.1OneNet云平臺架構(gòu)OneNet在“云、網(wǎng)、邊、端”的整體架構(gòu)的基礎(chǔ)之上,創(chuàng)建了物聯(lián)網(wǎng)的一些性能。它所具有的八最個主要的特性是增強接入、邊緣計算、增值、智能、數(shù)據(jù)分析、一站式開發(fā)、產(chǎn)業(yè)以及生態(tài)開放。OneNet云平臺向下延伸終端自適應訪問,再就是向上也合成了行業(yè)規(guī)劃的應用程序。這個平臺供應了非?;尽⒎浅F胀ǖ脑O(shè)備的管理能力,就像是設(shè)備的訪問、設(shè)備的管理、設(shè)備的定位、設(shè)備的遠程升級、設(shè)備的數(shù)據(jù)視圖還有設(shè)備的PaaS功能等。在另一方面,現(xiàn)在的社會正在部署5G,這個平臺還可以給5G+OneNet創(chuàng)建新的功能,專注于視頻的供應和改進以及其他的功能。可以輕松地部署到云計算中,從而完美的支持行業(yè)端到端應用。2.3.2OneNet云服務(wù)的特點1.有無限選擇的開放平臺。創(chuàng)造產(chǎn)品和解決計劃需求的很多種的軟件和硬件組合,還有多種語言和平臺都受到OneNet支持。2.端到端的安全。OneNet云平臺里邊擁有著端到端的安全性,而且還有完整的產(chǎn)物解決方案。并且非常安全的部署也能夠保證對裝置的控制,進而大家可以在正確的時間段,進行正確的訪問形式。3.全互聯(lián)的基礎(chǔ)設(shè)施。位于中國移動的超大網(wǎng)絡(luò)環(huán)境條件中開創(chuàng)的OneNet,提供了全國范圍的互連基礎(chǔ)架構(gòu)。大量的設(shè)備投資,以確保設(shè)備的訪問和減災能力。有專門進行開發(fā)和運營的團隊,用來保證平臺7X24小時的平緩運轉(zhuǎn)。4.實時消息總線。OneNet提供了多種通信方法。依照業(yè)務(wù)需求和規(guī)模,實時消息總線使用套接數(shù)字和RESTAPI,并提供了同步和異步的通信方法。5.覆蓋設(shè)備整個生命期管理。設(shè)備的注冊,身份的驗證、刪除還有激活整個的設(shè)備生存周期處理,還有便捷的廣泛安排以及及時的數(shù)據(jù)監(jiān)管都由OneNet供應了。

3.系統(tǒng)分析智能衣柜系統(tǒng)的設(shè)計,是采用軟件跟硬件相結(jié)合的手段把大家的痛點給解決的,并且滿足大家對智能衣柜系統(tǒng)的需求。為解決衣物存放的一些問題,我們現(xiàn)在需要對智能衣柜進行新的改動,以使衣柜能夠更好地存放衣物。3.1功能需求分析智能衣柜設(shè)計的最初目的是為人們提供更好的服務(wù)。因此,在衣柜的設(shè)計中需要考慮功能設(shè)計,形狀設(shè)計和材料顏色等的人性化設(shè)計。它需要基于用戶所在地區(qū)的氣候特征,年齡水平和個人喜好等方面來確定REF_Ref25856\w\h[5]。例如,在南部地區(qū),春季氣候相對潮濕,設(shè)計的時候要想到預定時間除濕。再例如,青年人的衣物的種類和數(shù)量比年長的人多,因此,應該考慮的是,許多年長的人的衣服不長時間穿著,要增添定時的消毒和殺菌功能;而青年人則經(jīng)常換衣服,因此有必要增加去潮防霉的功能。功能整合是將現(xiàn)代衣櫥所需的其他功能有機地、合理地整合在一起,通過衣櫥中的衣物存放功能以達到人性化,智能化和便利化的目的。因此,在智能衣柜的設(shè)計中,衣柜的功能是通過衣柜的智能控制系統(tǒng)的集成在一起的。系統(tǒng)的功能模塊劃分,如圖3.1所示。圖3.1系統(tǒng)功能模塊劃分圖每個模塊對應著相應的功能,比如去潮防霉模塊對應的功能是根據(jù)濕度的高低,決定是否打開加熱系統(tǒng)進行除濕;殺菌消毒模塊是通過繼電器定時進行消毒;溫濕度傳感器進行對溫濕度的檢測;OLED顯示模塊是對系統(tǒng)狀態(tài)以及各種數(shù)據(jù)進行顯示;串口WiFi模塊的功能是實現(xiàn)數(shù)據(jù)無線通信,讓系統(tǒng)能夠與OneNet云平臺相連接;OneNet云服務(wù)模塊能夠?qū)崿F(xiàn)對系統(tǒng)的遠程控制等等。3.2可行性分析現(xiàn)如今,智能衣櫥作為科學技術(shù)的日常生活熱點,開始緩慢地滲入到生活的方方面面。人們需要用它體現(xiàn)自我魅力,實用性,舒適性和獨特的品味等。因此,智能衣櫥將快速流行?,F(xiàn)在,智能衣櫥開始變成人們追求便利,自由和特殊體驗方式的象征性代表。智能衣櫥的基礎(chǔ)人性化,給所擁有者供應了最巨大的便利,而且給人跟衣櫥之間的和諧互動供應了許許多多的便利。智能衣柜是精心選擇設(shè)計的智能和衣柜系統(tǒng)的精美結(jié)合。它的發(fā)展是設(shè)計與技術(shù)相結(jié)合的產(chǎn)物。它的設(shè)計不僅具有藝術(shù)風格,關(guān)鍵更在于將現(xiàn)代技術(shù)融入衣柜的功能。此設(shè)計運用現(xiàn)代科學技術(shù),解決了衣柜相關(guān)的智能化風格,以及合理的實現(xiàn)了衣柜的結(jié)構(gòu)和加工技術(shù)。因此具有較高的可行性。

4.系統(tǒng)整體設(shè)計4.1系統(tǒng)架構(gòu)設(shè)計本這個設(shè)計的主要包括空氣的溫濕度檢測、去潮防霉、殺菌消毒還有狀態(tài)顯示等一系列功能。這個設(shè)計是通過衣柜控制終端還有OneNet云平臺等組成。OneNet云平臺是用在查看還有控制衣柜的運行狀況,完成了讓衣柜的終端進行入網(wǎng)的設(shè)置。衣柜的終端還能夠控制著傳感器去感知和檢測衣柜里邊的溫濕度的情況,進而迅速的去執(zhí)行去潮防霉還有殺菌消毒等功能的一些程序,而且還會通過WiFi技術(shù)向OneNet云平臺傳送系統(tǒng)的所有運行狀態(tài),如圖4.1所示。圖4.1系統(tǒng)路線圖4.2衣柜結(jié)構(gòu)設(shè)計衣柜所擁有的整體架構(gòu)分為三個區(qū)域,如圖4.2所示。對衣柜擁有的架構(gòu)實行了一定水準的修正,而且還劃分成了不同的衣物存放區(qū)域模塊。然后處于最底下的是智能衣柜的終端控制系統(tǒng)。按照和根據(jù)處理器的控制作用,溫濕度傳感器就能夠及時、可靠地監(jiān)控衣櫥中的溫度還有濕度。而且在處理器的控制作用下,還能夠?qū)σ聶粚嵭袣⒕?,除濕防霉等一系列的措施,最后能夠讓衣櫥的里邊擁有放存衣物最好、最舒服的環(huán)境條件REF_Ref26525\w\h[6]。圖4.2衣柜整體結(jié)構(gòu)4.3系統(tǒng)硬件設(shè)計4.3.1處理器模塊這個設(shè)計運用的是STM32F100R8T6核心處理器,它是基于Coretex-M3內(nèi)核的,如圖4.3所示,這個處理器能夠達到溫濕度值的采集、系統(tǒng)工作模式的控制和系統(tǒng)當前狀態(tài)的顯示工作的一些功能REF_Ref26754\w\h[7]。圖4.3處理器4.3.2去潮防霉模塊熱效率高、耐氧化還有可控最高溫度等一些安全性的優(yōu)點是PTC加熱器模塊所具備的。一般都在家具的一些領(lǐng)域使用,如圖4.4所示。這個設(shè)計運用PTC加熱器和風扇在衣櫥內(nèi)部產(chǎn)生熱的空氣對流進而達到除濕效果REF_Ref26996\w\h[8]。PTC加熱器會和風扇一起產(chǎn)生熱空氣,從而達到完成對衣物的去潮防霉作用的目的。圖4.4PTC加熱器4.3.3殺菌消毒模塊在主控制器中,根據(jù)定時功能,將相應的引腳設(shè)置為低電平信號,以控制繼電器?;蚴菓冒存IKEY控制相應的引腳的高電平跟低電平,進而來控制繼電器。在繼電器從主控制器中接收到低電平的信號的時候,繼電器開關(guān)打開,然后消毒系統(tǒng)打開;在繼電器從主控制器中接收到高電平的信號的時候,繼電器開關(guān)關(guān)閉,消毒系統(tǒng)閉合。如圖4.5所示。圖4.5消毒模塊繼電器4.3.4門感應模塊衣櫥門傳感模塊由兩個輕觸微動開關(guān)組成,用于檢測衣櫥門的狀態(tài),并且確定衣櫥門是否實時打開。一旦檢測到衣櫥門打開,就意味著將濕衣服放入衣櫥中,因此系統(tǒng)開始自動檢測濕度的變化并確定是否要除濕。4.3.5溫濕度傳感器此設(shè)計運用的是DHT11,如圖4.6所示。溫濕度的傳感技術(shù)和數(shù)字的采集技術(shù)是這種傳感器專有的,以此來保證擁有極高的可靠性還有非常出色的長期穩(wěn)定性REF_Ref27178\w\h[9]。而且還擁有著質(zhì)量良好、快速響應、強抗干擾能力與高性價比等一些優(yōu)點。非常小的體積和特別低的功能消耗讓它能夠應用于要求嚴格的應用中。DHT11是擁有4針單排的引腳封裝,連接非常方便。而且它還具有特別高、特別準確的測量幅度(濕度:20%?90%,溫度:0℃?50℃),完全滿足了系統(tǒng)的要求。圖4.6溫濕度傳感器4.3.6Wi-Fi模塊Wi-Fi模塊是在這個設(shè)計中用在完成智能衣柜跟OneNet內(nèi)的數(shù)據(jù)的交互上,還完成對系統(tǒng)的控制。想到了設(shè)計傳送的數(shù)據(jù)量比較少,而且想到了性價比,所以這個設(shè)計選擇了ESP8266,如圖4.7所示。運用了數(shù)據(jù)透明的傳輸方式完成了系統(tǒng)聯(lián)網(wǎng)還有數(shù)據(jù)傳輸通信的一些功能。圖4.7Wi-Fi模塊4.3.7OLED顯示模塊OLED顯示模塊大部分是根據(jù)電場驅(qū)動,然后有機的一般半導體材料和發(fā)光材料經(jīng)過過載流子的匯入和混合后,完成發(fā)光的功能。本質(zhì)上,它由數(shù)百萬個“小燈泡”組成。它主要用于顯示各種信息,以方便觀察衣柜的運行狀態(tài)。如圖4.8所示。圖4.8OLED顯示屏4.3.8電路模塊系統(tǒng)設(shè)計中,各個模塊擁有的電源電路,如圖4.9所示。圖4.9各模塊電路圖4.3.9安全防護模塊作為家庭用的系統(tǒng),系統(tǒng)的安全性必然是整個系統(tǒng)的核心需求。這個設(shè)計具有硬件保護和軟件保護。硬件保護:溫度控制保護。裝置根據(jù)它自己的物理特殊性質(zhì),讓溫度在穩(wěn)定運行的時候能夠保證恒定不變。每次溫度超出了特定的范圍值,這個保護的裝置就馬上會把電源斷開。軟件保護:衣物在除潮的過程中,總是會有一些溫度的要求。萬一溫度過高的話,衣服就有可能會壞掉。因此,這個裝置能夠及時地檢測衣櫥中的溫度,而且能夠在溫度太高的時候,能夠自動的關(guān)閉除濕效果,用來防止溫度太高而導致衣物壞掉。4.4系統(tǒng)軟件設(shè)計4.4.1系統(tǒng)主控制流程設(shè)計衣柜這個系統(tǒng)在通上電以后,初始化系統(tǒng),也就是系統(tǒng)復位。然后就開始檢驗衣柜內(nèi)部的環(huán)境條件。假如濕度太高的時候,就會啟動除濕程序。在這個程序運行的時候,可以經(jīng)過Wi-Fi模塊及時地向云平臺發(fā)送當前的系統(tǒng)狀況,同時也能夠在OLED屏上顯示出系統(tǒng)此時此刻的工作參數(shù)REF_Ref27446\w\h[10]。圖4.10是系統(tǒng)主控的流程圖。圖4.10系統(tǒng)主控制流程圖經(jīng)過上邊所說的處理控制之后,無線通信模塊實行數(shù)據(jù)的傳輸還有接收的工作。無線信通信模塊經(jīng)過串行端口的方式把數(shù)據(jù)傳送給處理器后,按照指令的類型,讓處理器相應的控制程序開始運作REF_Ref27590\w\h[11]。在完成連接網(wǎng)絡(luò)之后,及時地通過WiFi給OneNet云平臺傳送數(shù)據(jù),具體的工作流程如圖4.11所示。圖4.11WiFi數(shù)據(jù)接收和發(fā)送流程4.4.2智能控制算法設(shè)計假如柜子中的濕度長時間大于80%的話,衣服容易發(fā)霉,因此啟動去潮防霉的算法,將衣柜中的濕度控制在80%以下。具體如圖4.12所示。為了防止參數(shù)設(shè)置得太低或太高,引起過分干燥讓衣服破損或衣服并沒有完全除濕,這個算法能夠時刻監(jiān)控著溫度高低REF_Ref27691\w\h[12]。圖4.12去潮防霉工作流程圖4.4.3OneNet云服務(wù)OneNet定位為PaaS服務(wù),旨在IoT應用與真實的設(shè)備之間構(gòu)建高效的、穩(wěn)定的和安全的應用程序平臺REF_Ref28547\w\h[13]。因此,本系統(tǒng)選用OneNet云平臺來實現(xiàn)監(jiān)測和控制功能。用戶都能夠憑借OneNet云平臺隨時隨地的查看并且控制衣柜終端的運行狀況。4.4.4系統(tǒng)程序及介紹(1)主函數(shù)主函數(shù)融合了各個模塊的功能,是一個總體函數(shù)。(2)WiFi模塊函數(shù)WiFi模塊函數(shù)實現(xiàn)了連接網(wǎng)絡(luò)功能,可使ESP8266模塊通過TCP/IP協(xié)議將數(shù)據(jù)傳輸至服務(wù)器,實現(xiàn)數(shù)據(jù)交換功能。(3)溫濕度監(jiān)測函數(shù)這部分函數(shù)用來實現(xiàn)監(jiān)測溫濕度。(4)OLED屏顯示函數(shù)這部分函數(shù)用于在OLED屏顯示數(shù)據(jù)。(5)OneNet云服務(wù)函數(shù)這是一個云平臺調(diào)用函數(shù),實現(xiàn)連接云平臺的功能。以上各函數(shù)代碼詳見附錄。

5.系統(tǒng)測試在進行此系統(tǒng)設(shè)計的測試中,主要測試:是否可以通過OneNet云平臺查看和操控;不同環(huán)境濕度下看設(shè)備是否做出相應的反應;看設(shè)備是否定時消毒。可以根據(jù)OneNet云平臺查看并且操控設(shè)備,如圖5.1所示:圖5.1查看和操控設(shè)備在測試中采集了四組數(shù)據(jù),并查看設(shè)備運行狀態(tài)。測試結(jié)果為濕度大于80的時候,繼電器紅燈自動亮起,代表除濕打開;濕度小于80的時候,繼電器紅燈自動熄滅,代表除濕關(guān)閉。證明設(shè)備可以通過濕度的高低,來自行打開或關(guān)閉除濕模塊。如表5.1所示。設(shè)備具體的濕度測試,如圖5.2所示。表5.1數(shù)據(jù)濕度是否打開除濕49否83是84是74否圖5.2濕度測試在程序中的消毒定時函數(shù)是每十秒進行一次消毒,繼電器紅燈自動亮起,代表開始消毒,然后自動熄滅,代表關(guān)閉消毒。測試結(jié)果每隔10秒,消毒繼電器紅燈自動亮起,隨后自動熄滅。證明設(shè)備可以定時消毒。如圖5.3所示。圖5.3消毒測試至此,整個智能衣柜系統(tǒng)的主要功能開發(fā)完畢。

6.總結(jié)與展望該系統(tǒng)是在物聯(lián)網(wǎng)技術(shù)的基礎(chǔ)上設(shè)計的智能衣柜系統(tǒng)。此系統(tǒng)具有殺菌消毒、去潮防霉、液晶顯示等功能。它還可以通過OneNet云平臺進行查看系統(tǒng)的運行狀態(tài)并且對它進行控制。經(jīng)過真實地測試表明,該系統(tǒng)殺菌除濕效果非常明顯,而且可以取得較好的效果。該系統(tǒng)可控制,操作簡單,內(nèi)置的多個安全保護裝置,可以確保系統(tǒng)的長期安全運行。但也還存在不美觀等較多問題,以后會慢慢完善和改進。行業(yè)標準的制定對智能衣柜的快速發(fā)展來說是至關(guān)重要的。智能衣柜現(xiàn)在代表時代互異化的產(chǎn)品,行走在發(fā)展的道路上任重而道遠,但是還需要看到它非常大的發(fā)展?jié)撃?,?yōu)良的行業(yè)標準現(xiàn)在成為了推進它健康發(fā)展的特定重要因素之一。但是,還是要求大家齊心協(xié)力地制定智能生產(chǎn)標準。唯有規(guī)范好智能的道路,形成優(yōu)越的、良好的市場條件,才能夠在智能化的道路上充足、充分地展現(xiàn)智能衣柜的市場長處,發(fā)揮其它的潛力,從而實現(xiàn)智能衣柜的開發(fā)價值,并且還推動著智能衣柜向更高、更優(yōu)秀的水平發(fā)展。

參考文獻吳智慧,楊勇,徐偉,方露,等.智能家具的研究現(xiàn)狀與發(fā)展趨勢[J].林產(chǎn)工業(yè),2017.44(05):5-8.毛毅.智能衣柜設(shè)計研究與制作[J].家居與室內(nèi)裝飾,2011(6):100-101.張逢雪,王香婷,王通生.基于STM32單片機的無線智能家居控制系統(tǒng)[J].自動化技術(shù)與應用,2011(8):102-105.王永虹,徐煒,郝立平.STM32系列ARMCortex-M3微控制器原理與實踐[M].北京:北京航空航天大學出版社,2008.李創(chuàng)輝,歐陽惕,陳華,等.PTC電加熱器在恒濕恒溫空調(diào)機上的應用研究[J].潔凈與空調(diào)技術(shù),2014.12(4):6-10.陳少勇,王佳權(quán),王皓,黃啟俊,常勝,等.基于物聯(lián)網(wǎng)的智能衣柜系統(tǒng)[J].信息技術(shù),2018(01):14-19.郁一波,陳銳,趙紫權(quán),唐武賓,等.基于單片機的實現(xiàn)遠程控制的智能除濕衣柜[J].工業(yè)控制計算機,2018,31(10):146+158.宋海友,張巧珍,等.多線程技術(shù)在數(shù)據(jù)通信中的應用[J].電子技術(shù)與軟件工程,2015(5):64-64.趙文鵬,萬洪莉,姜北辰.物聯(lián)網(wǎng)環(huán)境下智能衣柜系統(tǒng)解決方案的設(shè)計與原型實現(xiàn)[J].工業(yè)控制計算機,2017,30(12):31-32+34.任小強,陳金鷹,李文彬,等.網(wǎng)絡(luò)通信之JavaSocket多線程通信[J].信息通信,2015(6):206-207.倪天龍.單總線傳感器DHT11在溫濕度測控中的應用[J].單片機與嵌入式系統(tǒng)應用,2010(06):60-62.AmendolaS,LodatoR,ManzariS,etal.RFIDtechnologyforIoT-basedpersonalhealthcareinsmartspaces[J].IEEEInternetofthingsjournal,2014,1(2):144-152.HuX,JiangL,ChengR,etal.Aprobabilisticclothesrecommenderbasedonclothesfeatures[C].2014InternationalConferenceonManagementScience&Engineering21thAnnualConferenceProceedings.IEEE,2014:76-81.

附錄主函數(shù)程序#include"delay.h"#include"sys.h"#include"string.h"#include"oled.h"#include"exti.h"#include"led.h"#include"usart1.h"http://包含需要的頭文件#include"usart2.h"http://包含需要的頭文件#include"wifi.h" //包含需要的頭文件#include"onenet_http.h"http://包含需要的頭文件#include"timer.h"#include"dht11.h"charfasongbaowencishu_flag;charr_flag=0;//8266狀態(tài)標志0:需要復位或重新復位1:正常狀態(tài)//u8buff[10];//u8ii;externu8humi_value;voidLCD_mianban(void);intmain(void){ char*presult=0; delay_init(); //滴答時鐘初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷優(yōu)先級分組分2組 OLED_Init(); //液晶屏初始化 Usart1_Init(9600); Usart2_Init(115200);// My_EXTI_Init1(); Jidianqi_Init(); WiFi_ResetIO_Init(); LED_Init(); TIM3_Int_Init(4000,36000-1); while(DHT11_Init());//未檢測到返回1,檢測到返回0 LCD_mianban(); humi_value=80;// ChuShi=0;//// XiaoDu=0; while(1) { DHT11_Read_Data(&temp1,&humi1); OLED_ShowNum(40,20,temp1,2,16); OLED_ShowNum(110,20,humi1,2,16); OLED_ShowNum(110,40,humi_value,2,16); if(humi1>humi_value) { ChuShi=0; } else { ChuShi=1; } delay_ms(10); if(r_flag==WeiLianJie) {//如果r_flag標志等于0,表示需要復位重置8266模塊 if(WiFi_Init()==0) {//調(diào)用WiFi_Init函數(shù),返回0表示復位重置成功 u1_printf("ESP8266狀態(tài)初始化正常\r\n");//串口輸出信息 r_flag=YiLianJie; Connect_flag=WeiLianJie; //r_flag標志置位,表示8266狀態(tài)正常 } } if(Connect_flag==WeiLianJie) { u1_printf("準備連接服務(wù)器\r\n"); //串口提示數(shù)據(jù) if(WiFi_Connect_Server(50)) //連接服務(wù)器,100ms超時單位,總計5s超時時間 { Connect_flag=WeiLianJie;//連接成功標志清除 u1_printf("連接服務(wù)器失敗\r\n"); //串口提示數(shù)據(jù) } else {//返回0,進入else分支,表示連接服務(wù)器成功 u1_printf("連接服務(wù)器成功\r\n"); //串口提示數(shù)據(jù) OLED_ShowChinese(72,0,10,16); OLED_Refresh(); WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) Connect_flag=YiLianJie;//連接成功標志置位 } } delay_ms(200); if(Connect_flag==YiLianJie) { WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) OneNet_POST(TEMPHUMI_DID);//構(gòu)建查上報溫濕度數(shù)據(jù)的報文 WiFi_printf(TXbuff); WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE); delay_ms(200); OneNet_GET(TEMPHUMI_DID); //構(gòu)建查詢開關(guān)狀態(tài)的報文 WiFi_printf(TXbuff); //把構(gòu)建好的報文發(fā)給服務(wù)器 delay_ms(200); while(!(strstr(WiFi_RX_BUF,"\"SWITICH\""))); presult=strstr(WiFi_RX_BUF,"\"SWITICH\""); if(presult!=NULL) { OLED_ShowString(0,40,buff,16); for(ii=0;ii<10;ii++) { buff[ii]=*(presult-9+ii); } if(*(presult-9)=='0') //如果是0,關(guān)閉LED1 { KaiChu_flag=2; } elseif(*(presult-9)=='1') { KaiChu_flag=1;//反之是1,打開LED1 } } } if(KaiChu_flag==1) { LED=0; OLED_ShowChinese(80,40,7,16);//開 } elseif(KaiChu_flag==2) { LED=1; OLED_ShowChinese(80,40,8,16);//關(guān) } delay_ms(10); OLED_Refresh();}}voidLCD_mianban(){ OLED_ShowChinese(0,20,0,16); //溫 OLED_ShowChinese(16,20,1,16); //度 OLED_ShowChar(32,20,':',16); OLED_ShowChar(56,20,'C',16); OLED_ShowChinese(70,20,2,16); //濕 OLED_ShowChinese(86,20,1,16); //度 OLED_ShowChar(102,20,':',16); OLED_ShowChinese(0,40,3,16); //衣櫥狀態(tài) OLED_ShowChinese(16,40,4,16); OLED_ShowChinese(32,40,5,16); OLED_ShowChinese(48,40,6,16); OLED_ShowChar(64,40,':',16); OLED_ShowChinese(80,40,8,16);//否 OLED_ShowString(0,0,"wifi",16);//wifi狀態(tài) OLED_ShowChinese(32,0,5,16); OLED_ShowChinese(48,0,6,16); OLED_ShowChar(64,0,':',16); OLED_ShowChinese(72,0,9,16);//未連接 OLED_ShowChinese(88,0,11,16); OLED_ShowChinese(104,0,12,16); OLED_Refresh();}WiFi模塊程序#include"stm32f10x.h"http://包含需要的頭文件#include"wifi.h" //包含需要的頭文件#include"delay.h" //包含需要的頭文件#include"usart1.h" //包含需要的頭文件#include"led.h"http://包含需要的頭文件#include"usart2.h"http://包含需要的頭文件#include"onenet_http.h"http://包含需要的頭文件charwifi_mode=0;//聯(lián)網(wǎng)模式0:SSID和密碼寫在程序里1:Smartconfig方式用APP發(fā)送charConnect_flag=0;//同服務(wù)器連接狀態(tài)0:還沒有連接服務(wù)器1:連接上服務(wù)器了charChaXunBaoWen_flag=0;//定時時間到了會自動發(fā)送報文給服務(wù)器查詢狀態(tài)/*函數(shù)名:初始化WiFi的復位IO*//*參數(shù):無*//*返回值:無*/voidWiFi_ResetIO_Init(void){ GPIO_InitTypeDefGPIO_InitStructure;//定義一個設(shè)置IO端口參數(shù)的結(jié)構(gòu)體 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PA端口時鐘 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;//準備設(shè)置PA4 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//速率50Mhz GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推免輸出方式 GPIO_Init(GPIOA,&GPIO_InitStructure); //設(shè)置PA4 RESET_IO(1);//復位IO拉高電平}/*函數(shù)名:WiFi發(fā)送設(shè)置指令*//*參數(shù):cmd:指令*//*參數(shù):timeout:超時時間(100ms的倍數(shù))*//*返回值:0:正確其他:錯誤*/charWiFi_SendCmd(char*cmd,inttimeout){ WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) WiFi_printf("%s\r\n",cmd);//發(fā)送指令 while(timeout--){//等待超時時間到0 delay_ms(100);//延時100ms if(strstr(WiFi_RX_BUF,"OK"))//如果接收到OK表示指令成功 break; //主動跳出while循環(huán) u1_printf("%d",timeout);//串口輸出現(xiàn)在的超時時間 } u1_printf("\r\n");//串口輸出信息 if(timeout<=0)return1;//如果timeout<=0,說明超時時間到了,也沒能收到OK,返回1 elsereturn0;//反之,表示正確,說明收到OK,通過break主動跳出while}/*函數(shù)名:WiFi復位*//*參數(shù):timeout:超時時間(100ms的倍數(shù))*//*返回值:0:正確其他:錯誤*/charWiFi_Reset(inttimeout){ RESET_IO(0);//復位IO拉低電平 delay_ms(100);//延時500ms RESET_IO(1);//復位IO拉高電平 while(timeout--){//等待超時時間到0 delay_ms(100);//延時100ms if(strstr(WiFi_RX_BUF,"ready"))//如果接收到ready表示復位成功 break; //主動跳出while循環(huán) u1_printf("%d",timeout);//串口輸出現(xiàn)在的超時時間 } u1_printf("\r\n");//串口輸出信息 if(timeout<=0)return1;//如果timeout<=0,說明超時時間到了,也沒能收到ready,返回1 elsereturn0; //反之,表示正確,說明收到ready,通過break主動跳出while}/*函數(shù)名:WiFi加入路由器指令*//*參數(shù):timeout:超時時間(1s的倍數(shù))*//*返回值:0:正確其他:錯誤*/charWiFi_JoinAP(inttimeout){ WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) WiFi_printf("AT+CWJAP=\"%s\",\"%s\"\r\n",SSID,PASS);//發(fā)送指令 while(timeout--){//等待超時時間到0 delay_ms(1000);//延時1s if(strstr(WiFi_RX_BUF,"OK"))//如果接收到WIFIGOTIP表示成功 break; //主動跳出while循環(huán) u1_printf("%d",timeout);//串口輸出現(xiàn)在的超時時間 } u1_printf("\r\n");//串口輸出信息 if(timeout<=0)return1;//如果timeout<=0,說明超時時間到了,也沒能收到WIFIGOTIP,返回1 return0;//正確,返回0}/*函數(shù)名:WiFi_Smartconfig*//*參數(shù):timeout:超時時間(1s的倍數(shù))*//*返回值:0:正確其他:錯誤*/charWiFi_Smartconfig(inttimeout){ WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) while(timeout--){//等待超時時間到0 delay_ms(1000);//延時1s if(strstr(WiFi_RX_BUF,"connected"))//如果串口接受到connected表示成功 break;//跳出while循環(huán) u1_printf("%d",timeout);//串口輸出現(xiàn)在的超時時間 } u1_printf("\r\n");//串口輸出信息 if(timeout<=0)return1;//超時錯誤,返回1 return0;//正確返回0}/*函數(shù)名:等待加入路由器*//*參數(shù):timeout:超時時間(1s的倍數(shù))*//*返回值:0:正確其他:錯誤*/charWiFi_WaitAP(inttimeout){ while(timeout--){//等待超時時間到0 delay_ms(1000);//延時1s if(strstr(WiFi_RX_BUF,"WIFIGOTIP"))//如果接收到WIFIGOTIP表示成功 break; //主動跳出while循環(huán) u1_printf("%d",timeout);//串口輸出現(xiàn)在的超時時間 } u1_printf("\r\n");//串口輸出信息 if(timeout<=0)return1;//如果timeout<=0,說明超時時間到了,也沒能收到WIFIGOTIP,返回1 return0;//正確,返回0}/*函數(shù)名:等待連接wifi,獲取IP地址*//*參數(shù):ip:保存IP的數(shù)組*//*參數(shù):timeout:超時時間(100ms的倍數(shù))*//*返回值:0:正確其他:錯誤*/charWiFi_GetIP(inttimeout){ char*presult1,*presult2; charip[50]; WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) WiFi_printf("AT+CIFSR\r\n");//發(fā)送指令 while(timeout--){//等待超時時間到0 delay_ms(100);//延時100ms if(strstr(WiFi_RX_BUF,"OK"))//如果接收到OK表示成功 break; //主動跳出while循環(huán) u1_printf("%d",timeout);//串口輸出現(xiàn)在的超時時間 } u1_printf("\r\n");//串口輸出信息 if(timeout<=0)return1;//如果timeout<=0,說明超時時間到了,也沒能收到OK,返回1 else{ presult1=strstr(WiFi_RX_BUF,"\""); if(presult1!=NULL){ presult2=strstr(presult1+1,"\""); if(presult2!=NULL){ memcpy(ip,presult1+1,presult2-presult1-1); u1_printf("ESP8266的IP地址:%s\r\n",ip);//串口顯示IP地址 return0;//正確返回0 }elsereturn2;//未收到預期數(shù)據(jù) }elsereturn3;//未收到預期數(shù)據(jù) }}/*函數(shù)名:獲取連接狀態(tài)*//*參數(shù):無*//*返回值:連接狀態(tài)*//*0:無狀態(tài)*//*1:有客戶端接入*//*2:有客戶端斷開*/charWiFi_Get_LinkSta(void){ charid_temp[10]={0};//緩沖區(qū),存放ID charsta_temp[10]={0};//緩沖區(qū),存放狀態(tài) if(strstr(WiFi_RX_BUF,"CONNECT")){//如果接受到CONNECT表示有客戶端連接 sscanf(WiFi_RX_BUF,"%[^,],%[^,]",id_temp,sta_temp); u1_printf("有客戶端接入,ID=%s\r\n",id_temp);//串口顯示信息 WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) return1;//有客戶端接入 }elseif(strstr(WiFi_RX_BUF,"CLOSED")){//如果接受到CLOSED表示有鏈接斷開 sscanf(WiFi_RX_BUF,"%[^,],%[^,]",id_temp,sta_temp); u1_printf("有客戶端斷開,ID=%s\r\n",id_temp);//串口顯示信息 WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) return2;//有客戶端斷開 }elsereturn0;//無狀態(tài)改變}/*函數(shù)名:獲取客戶端數(shù)據(jù)*//*兩組回車換行符\r\n\r\n作為數(shù)據(jù)的結(jié)束符*//*參數(shù):data:數(shù)據(jù)緩沖區(qū)*//*參數(shù):len:數(shù)據(jù)量*//*參數(shù):id:發(fā)來數(shù)據(jù)的客戶端的連接ID*//*返回值:數(shù)據(jù)狀態(tài)*//*0:無數(shù)據(jù)*//*1:有數(shù)據(jù)*/charWiFi_Get_Data(char*data,char*len,char*id){ chartemp[10]={0};//緩沖區(qū) char*presult; if(strstr(WiFi_RX_BUF,"\r\n\r\n")){//兩個連著的回車換行作為數(shù)據(jù)的結(jié)束符 sscanf(WiFi_RX_BUF,"%[^,],%[^,],%[^:]",temp,id,len);//截取各段數(shù)據(jù),主要是id和數(shù)據(jù)長度 presult=strstr(WiFi_RX_BUF,":");//查找冒號。冒號后的是數(shù)據(jù) if(presult!=NULL)//找到冒號 sprintf((char*)data,"%s",(presult+1));//冒號后的數(shù)據(jù),復制到data WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) return1;//有數(shù)據(jù)到來 }elsereturn0;//無數(shù)據(jù)到來}/*函數(shù)名:服務(wù)器發(fā)送數(shù)據(jù)*//*參數(shù):databuff:數(shù)據(jù)緩沖區(qū)<2048*//*參數(shù):data_len:數(shù)據(jù)長度*//*參數(shù):id:客戶端的連接ID*//*參數(shù):timeout:超時時間(10ms的倍數(shù))*//*返回值:錯誤值*//*0:無錯誤*//*1:等待發(fā)送數(shù)據(jù)超時*//*2:連接斷開了*//*3:發(fā)送數(shù)據(jù)超時*/charWiFi_SendData(charid,char*databuff,intdata_len,inttimeout){ inti; WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) WiFi_printf("AT+CIPSEND=%d,%d\r\n",id,data_len);//發(fā)送指令 while(timeout--){//等待超時與否 delay_ms(10);//延時10ms if(strstr(WiFi_RX_BUF,">"))//如果接收到>表示成功 break; //主動跳出while循環(huán) u1_printf("%d",timeout);//串口輸出現(xiàn)在的超時時間 } if(timeout<=0)return1;//超時錯誤,返回1 else{//沒超時,正確 WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) for(i=0;i<data_len;i++)WiFi_printf("%c",databuff[i]);//發(fā)送數(shù)據(jù) while(timeout--){//等待超時與否 delay_ms(10);//延時10ms if(strstr(WiFi_RX_BUF,"SENDOK")){//如果接受SENDOK,表示發(fā)送成功 WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) break;//跳出while循環(huán) } if(strstr(WiFi_RX_BUF,"linkisnotvalid")){//如果接受linkisnotvalid,表示連接斷開 WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) return2;//返回2 } } if(timeout<=0)return3;//超時錯誤,返回3 elsereturn0; //正確,返回0 } }/*函數(shù)名:連接TCP服務(wù)器,并進入透傳模式*//*參數(shù):timeout:超時時間(100ms的倍數(shù))*//*返回值:0:正確其他:錯誤*/charWiFi_Connect_Server(inttimeout){ WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) WiFi_printf("AT+CIPSTART=\"TCP\",\"%s\",%d\r\n",ServerIP,ServerPort);//發(fā)送連接服務(wù)器指令 while(timeout--){//等待超時與否 delay_ms(100);//延時100ms if(strstr(WiFi_RX_BUF,"CONNECT"))//如果接受到CONNECT表示連接成功 break;//跳出while循環(huán) if(strstr(WiFi_RX_BUF,"CLOSED"))//如果接受到CLOSED表示服務(wù)器未開啟 return1;//服務(wù)器未開啟返回1 if(strstr(WiFi_RX_BUF,"ALREADYCONNECTED"))//如果接受到ALREADYCONNECTED已經(jīng)建立連接 return2;//已經(jīng)建立連接返回2 u1_printf("%d",timeout);//串口輸出現(xiàn)在的超時時間 } u1_printf("\r\n");//串口輸出信息 if(timeout<=0)return3;//超時錯誤,返回3 else//連接成功,準備進入透傳 { u1_printf("準備進入透傳\r\n");//串口顯示信息 WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) WiFi_printf("AT+CIPSEND\r\n");//發(fā)送進入透傳指令 while(timeout--){//等待超時與否 delay_ms(100);//延時100ms if(strstr(WiFi_RX_BUF,">"))//如果成立表示進入透傳成功 break;//跳出while循環(huán) u1_printf("%d",timeout);//串口輸出現(xiàn)在的超時時間 } if(timeout<=0)return4;//透傳超時錯誤,返回4 } return0; //成功返回0 }/*函數(shù)名:斷開連接*//*參數(shù):timeout:超時時間(100ms的倍數(shù))*//*返回值:0:正確其他:錯誤*/charWiFi_Close(inttimeout){ delay_ms(200);//延時 WiFi_printf("+++");//發(fā)送退出透傳 delay_ms(1500);//延時 Connect_flag=0;//連接成功標志置位清除 WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零 memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū) WiFi_printf("AT+CIPCLOSE\r\n");//發(fā)送指令 while(timeout--){//等待超時時間到0 delay_ms(100);//延時100ms if(strstr(WiFi_RX_BUF,"OK"))//如果接收到OK表示成功 break; //主動跳出while循環(huán) u1_printf("%d",timeout);//串口輸出現(xiàn)在的超時時間 } u1_printf("\r\n");//串口輸出信息 if(timeout<=0)return1;//如果timeout<=0,說明超時時間到了,返回

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論