基于單片機的無線通信系統(tǒng)
本科畢業(yè)設計(論文)( 2018 屆 )題 目: 基于單片機的無線通信系統(tǒng) 學 院: 數(shù)理與信息工程學院 專 業(yè): 電子信息工程 學生姓名: 葛順杰 學號: 14610120 指導教師: 張浩然 職稱: 教授 合作導師: 職稱: 完成時間: 2018 年 4 月 15 日 成 績: 浙江師范大學本科畢業(yè)設計(論文)目錄一、誠信承諾書二、正文三、浙江師范大學本科畢業(yè)設計(論文)任務書四、浙江師范大學本科畢業(yè)設計(論文)文獻綜述五、浙江師范大學本科畢業(yè)設計(論文)開題報告六、浙江師范大學本科畢業(yè)設計(論文)外文翻譯七、浙江師范大學本科畢業(yè)設計(論文)指導記錄八、浙江師范大學本科畢業(yè)設計(論文)中期檢查表九、浙江師范大學本科畢業(yè)設計(論文)作品(實物)驗收單十、浙江師范大學本科畢業(yè)設計(論文)結(jié)題答辯資格審查表十一、浙江師范大學本科畢業(yè)設計(論文)結(jié)題答辯記錄十二、浙江師范大學本科畢業(yè)設計(論文)評審表浙江師范大學本科畢業(yè)設計(論文)誠信承諾書本人鄭重承諾:我承諾所呈交的畢業(yè)設計(論文)是本人在指導教師的指導下,按照學校和學院的有關(guān)規(guī)定,獨立研究完成的。本人在畢業(yè)設計(論文)寫作過程中恪守學術(shù)道德和學術(shù)規(guī)范,設計(論文)中凡引用他人已經(jīng)發(fā)表或未發(fā)表的成果、數(shù)據(jù)、觀點等,均已注明并列出了有關(guān)文獻的名稱、作者、年份、刊物名稱和出版文獻的出版機構(gòu)、出版地和版次等內(nèi)容,除此之外均為本人的觀點和研究成果。如有違反,本人愿接受處罰并承擔一切責任。承諾人簽名(手寫): 年 月 日浙江師范大學本科畢業(yè)設計(論文)正文目 錄摘要1Abstract11 引言21.1 研究的背景與意義21.2 國內(nèi)外發(fā)展與研究現(xiàn)狀21.3 主要研究內(nèi)容32 系統(tǒng)方案分析與選擇論證32.1 系統(tǒng)設計要求32.2 主控芯片方案32.3 無線通信模塊方案42.4 溫度傳感方案42.5 顯示模塊方案43 系統(tǒng)硬件電路設計53.1 主控芯片最小系統(tǒng)板設計53.2 無線收發(fā)模塊63.3 顯示模塊73.4 溫度采集模塊73.5 藍牙模塊83.6 報警模塊103.7 電源模塊104 軟件部分設計與實現(xiàn)114.1 Keil軟件介紹114.2 系統(tǒng)總體程序流程設計114.3 系統(tǒng)主機程序流程設計124.4 系統(tǒng)從機程序流程設計124.5 無線模塊軟件流程設計134.6 溫度檢測程序流程設計144.7 顯示模塊流程設計154.8 藍牙APP模塊設計155 系統(tǒng)調(diào)試與結(jié)果165.1 調(diào)試步驟165.2 測試環(huán)境165.3 測試設備165.4 測試目的175.5 測試結(jié)果176 結(jié)論18參考文獻19致謝20附錄2131基于單片機的無線通信系統(tǒng)數(shù)理與信息工程學院 電子信息工程 葛順杰(14610120)指導老師:張浩然(教授)摘要:隨著社會的進步和生產(chǎn)的需要,無論是在工業(yè)上,農(nóng)業(yè)上,甚至是在日常中,無線通信得到了廣泛的應用,可以說它已經(jīng)逐漸融入了我們的生活,并取得了相當重要的地位。溫度是常見的和最基本的物理量之一,生產(chǎn)生活中都需要對其進行調(diào)控來達到相應的目的。本文設計則是取溫度這一物理量作為傳輸數(shù)據(jù),使用單片機作為系統(tǒng)整體控制器件,通過nRF24L01無線模塊進行無線通信。另外,本系統(tǒng)還可以通過藍牙將數(shù)據(jù)發(fā)送到手機中,通過手機觀察數(shù)據(jù),免去了需要實時到現(xiàn)場收集的煩惱。關(guān)鍵詞:STM32F03ZET6;nRF24L01;溫度Wireless communication system based on single chip microcomputerTutor:Zhng Horn(College of Mathematics, Physics and Information Engineering,Electronics and Information Engineering,G Shnji,14610120)Abstract: With the progress of the society and the needs of the production, whether in industry, agriculture, even in daily, wireless communication has been widely used, it has gradually integrated into our lives, and has obtained the quite important position. Temperature is one of the most common and basic physical quantities, and it needs to be regulated in production and life to achieve the corresponding goal.The design of this paper is to take the physical quantity of temperature as the transmission data, using the single chip as the whole control device of the system, and wireless communication through the nRF24L01 wireless module. In addition, the system can also send data to the mobile phone via bluetooth, and the data can be observed through the mobile phone, which eliminates the need to collect the data in real timeKeywords:STM32F03ZET;nRF24L01;Temperature1 引言隨著現(xiàn)代信息技術(shù)的不斷發(fā)展,人們已經(jīng)不再滿足于有線通信,發(fā)展無線通信成為必然趨勢。而同時無線通信技術(shù)也不斷滲透到各個領域中,在人們的生產(chǎn)生活中越來越占據(jù)巨大的比重,因此對于無線通信系統(tǒng)的設計就具有十分巨大的現(xiàn)實與研究意義。1.1 研究的背景與意義隨著社會的進步和生產(chǎn)的需要,無線通信已經(jīng)逐漸融入了我們的生活,并逐漸取得了相當重要的地位。在工業(yè)生產(chǎn)上,由于生產(chǎn)環(huán)境惡劣,工作人員長時間待在惡劣的環(huán)境之中會產(chǎn)生健康問題,只能將傳感器先安置在目標點之后,讓機器先行采集數(shù)據(jù)后再傳輸數(shù)據(jù)到環(huán)境良好的室內(nèi),這樣就需要解決傳輸問題。一般廠房或是工作室都離數(shù)據(jù)點有較遠的距離,此時就需要很長的數(shù)據(jù)線來有線傳輸數(shù)據(jù),但是這樣就會有另一個問題,那就是材料浪費,占用過多空間,這時就需要利用無線傳輸?shù)姆绞絹硎占瘮?shù)據(jù),也顯得十分便利與實用。在農(nóng)業(yè)生產(chǎn)上,溫室大棚進行溫度檢測,糧倉管理,一般目標分散,占地面積大,檢測目標多,傳統(tǒng)方法復雜,這時無線通信就能夠解決很多問題,例如多點收集數(shù)據(jù),進行溫度監(jiān)控并實時調(diào)控等。在日常生活中,用手機控制家里的電器,并用手機接收家中溫度濕度,然后通過遠程遙控調(diào)整家里的溫度濕度,也是應用無線通信系統(tǒng)才能實現(xiàn)。綜上所述,無論是生產(chǎn)勞動或者是日常生活中,無線通信都帶來了便利與實用。無論是數(shù)據(jù)的采集預警,并對相關(guān)溫度或是濕度進行控制,抑或是生活中的網(wǎng)上沖浪,看新聞視頻,打電話與發(fā)短信,都是無線通信的功勞。因此,既然無線通信如此常見,對其進行學習研究就顯得十分必要了。1.2 國內(nèi)外發(fā)展與研究現(xiàn)狀自從進入無線通信時代以來,國內(nèi)外無不對無線通信研究投入巨大比重。從最早的1G,逐漸發(fā)展到現(xiàn)在的5G技術(shù),這離不開國內(nèi)外的共同研究。對于無線通信模塊來說,主要分為蜂窩類與非蜂窩類。蜂窩類就是平時生活中用到的3G、4G通信,適合長距離通信。而非蜂窩類則是wifi、藍牙、Zigbee等模塊。對于單片機來說,使用蜂窩類的模塊一般適用于現(xiàn)今比較火熱的物聯(lián)網(wǎng)等,而非蜂窩類已經(jīng)能夠滿足其對于數(shù)據(jù)傳輸?shù)囊蟆6谏鲜龅姆欠涓C類模塊中,基本上是在2.4GHz非授權(quán)頻段上,在這個頻段上已經(jīng)云集了多個標準無線協(xié)議。自Nordic等公司推出NRF24L01芯片之后,許多公司相繼推出基于該芯片的無線模塊,直到現(xiàn)在,Nordic還是在繼續(xù)推出NRF系列的無線通信模塊。相比較國外的無線模塊,國內(nèi)對于芯片的研究確實落后了一截,但是還是有一些公司開發(fā)出了屬于自己的無線通信模塊,例如上海博通的BK2411,雖然早功耗與傳輸距離上相對差了一些。從另一方面來說,國內(nèi)的無線模塊的應用確實得到了比較大的發(fā)展,無線通信與物聯(lián)網(wǎng)最近開始變得熱門起來,相應的無線模塊的使用也必定會越來越多,對于無線模塊的研究肯定做得比較多,同時,這也一定會讓國內(nèi)廠商在自主研發(fā)的道路上走得越來越好。因此,綜上所述,本文采用了在2.4GHz頻段上的nRF24L01作為無線傳輸模塊,不僅具有豐富的學習與應用資源,同時還方便獲得與使用。通過傳感器DS18B20將數(shù)據(jù)送到STM32單片機進行處理后,通過nRF24L01模塊將數(shù)據(jù)傳輸?shù)浇邮斩孙@示,最終實現(xiàn)溫度的無線傳輸。1.3 主要研究內(nèi)容本系統(tǒng)的設計主要采用Nordic公司推出的工作于2.4GHz頻段的nRF24L01射頻芯片,由STM32F103ZET6單片機作為主控芯片來實現(xiàn)短距離的無線數(shù)據(jù)通信。整個系統(tǒng)主要分為接收端與發(fā)送端兩部分,在發(fā)送端主要以STM32F103ZET6單片機為核心,使用溫度轉(zhuǎn)換芯片DS18B20實時采集溫度并通過無線模塊nRF24L01將數(shù)據(jù)傳輸?shù)浇邮斩耍缓笤诮邮斩说膯纹瑱C則將數(shù)據(jù)顯示在OLED上,并實現(xiàn)對溫度過高或過低進行報警。另外,在接收端還通過HC05藍牙模塊將數(shù)據(jù)發(fā)送到手機APP中,方便瀏覽查閱。2 系統(tǒng)方案分析與選擇論證2.1 系統(tǒng)設計要求根據(jù)本系統(tǒng)的應用環(huán)境,具體的技術(shù)要求如下:1.體積小巧。本系統(tǒng)主要是要用于短距離的無線數(shù)據(jù)通信,所以需要在盡可能的條件下控制大小,如果過大,會占據(jù)無謂的空間。同時,設計小巧可以在本系統(tǒng)的基礎上再加上其他更多的外設,便于以后對于本系統(tǒng)的拓展與優(yōu)化。2.傳輸可靠。本系統(tǒng)的主要功能就是無線通信,有別于傳統(tǒng)的有線通信,將數(shù)據(jù)通過電磁波傳播,會產(chǎn)生一定的安全問題,那么為了安全可靠性,設計一個完善的系統(tǒng)就十分重要。另一方面,空氣之中存在許多電磁干擾,所以系統(tǒng)需要有一定的抗干擾能力。3.成本低。本系統(tǒng)的實現(xiàn)功能并不困難,并不需要使用昂貴的元器件與模塊,所以在滿足系統(tǒng)要求的條件下盡量節(jié)約成本,使其更加具有競爭性。2.2 主控芯片方案方案一:采用傳統(tǒng)的AT89C51系列單片機作為主控芯片,價格低廉,體積較小,操作簡單,功耗較低。方案二:采用ST公司生產(chǎn)的STM32F103ZET6單片機作為主控芯片,該芯片主頻達72MHz并有8個定時器、計數(shù)器可供選擇,功能強大、處理速度快、數(shù)據(jù)接口多、性價比高。在單片機開發(fā)中具有相當重要的地位??紤]到本畢業(yè)設計的要求,可能會用到多個串口,同時需要對無線模塊進行配置,方案一中的單片機功能比較簡單,并且容易出現(xiàn)差錯,相對來說方案二中的單片機更加穩(wěn)定與功能強大,另一方面,在大學課題設計中,使用后者頻率更高,對其更加熟悉,所以選擇方案二中的STM32系列單片機作為主控芯片,同時這樣也比較容易實現(xiàn)拓展與完善。2.3 無線通信模塊方案方案一:采用GSM模塊進行通信,該模塊需要使用手機卡,是通過移動衛(wèi)星或是基站來傳遞信息,雖然每回傳輸?shù)臄?shù)據(jù)內(nèi)容較多,且傳輸距離十分遠,但是要內(nèi)置SIM卡,通信過程收費,不僅成本高,而且在硬件與軟件設計中也比較復雜。方案二:采用藍牙模塊進行通信,藍牙模塊主要是使用串口方式來進行數(shù)據(jù)傳輸,而串口方面是比較容易被其他設備連接的,容易對數(shù)據(jù)產(chǎn)生干擾。方案三:采用nRF24L01無線射頻模塊進行通信,該模塊低功耗,價格便宜,同時采用SPI總線通信模式,操作簡單。考慮到本畢業(yè)設計的要求,同時考慮到總體設計的復雜程度與個人實際情況,我們采用方案三作為本系統(tǒng)的通信模塊。2.4 溫度傳感方案方案一:采用AD590單片集成兩端感溫電流源,該模塊廣泛應用于不同的溫度控制場合,精度高、價格低、線性好。但是需要其他元器件進行輔助測試,電路設計比較復雜。方案二:采用美國公司生產(chǎn)的DS18B20可組網(wǎng)數(shù)字溫度傳感器芯片,該模塊體積小巧、經(jīng)濟實惠,硬件連接簡單,具有高實用性,同時采用一線總線方式,傳輸數(shù)據(jù)簡單。在電路設計上,使用DS18B20的話,相關(guān)硬件電路設計簡單,編程容易,而AD590需要其他輔助電路,線路復雜,編程困難??紤]到本設計的溫度指標,DS18B20已經(jīng)可以基本滿足,所以選擇方案二。2.5 顯示模塊方案方案一:采用液晶LCD1602顯示信息,這是一款通過總線模式來傳輸數(shù)據(jù)的顯示模塊,容易控制但是顯示的內(nèi)容比較單一。方案二:采用LED7段數(shù)碼顯示管控制,單個數(shù)碼管顯示就需要連接需要較多引腳,同時占用總系統(tǒng)板的空間,顯示內(nèi)容也簡單。方案三:采用OLED來顯示,該顯示模塊體積小,價格便宜,顯示精度高,且可以翻頁,顯示內(nèi)容多??紤]到本畢業(yè)設計的要求,需要顯示的內(nèi)容比較多,且顯示速度與精度要求比較高,所以我們采用方案三。3 系統(tǒng)硬件電路設計具體系統(tǒng)框圖如下圖3-1、3-2所示。圖3-1 系統(tǒng)主機框圖圖3-2 系統(tǒng)從機框圖從框圖中可以看出,從機主要通過溫度采集模塊DS18B20來采集有關(guān)溫度的數(shù)據(jù),在OLED上顯示之后,通過nRF24L01無線傳輸模塊將數(shù)據(jù)發(fā)送出去,主機在接收到從機發(fā)送的數(shù)據(jù)之后,將溫度在OLED上顯示,同時判斷報警模塊是否工作。這樣一來,就達到了通過無線通信來監(jiān)控溫度的目的。接下來,將分別具體介紹系統(tǒng)的各個模塊。3.1 主控芯片最小系統(tǒng)板設計本系統(tǒng)主要使用ARM公司生產(chǎn)的基于Cortex-M3內(nèi)核的STM32F103系列單片機作為控制核心,它具有性價比高、功耗低、處理速度快、功能強大等優(yōu)點,主頻達72MHz并有8個定時器、計數(shù)器可供選擇,在本系統(tǒng)中的應用主要是對nRF24L01模塊進行配置,選擇發(fā)送的數(shù)據(jù),對接收到的數(shù)據(jù)進行校驗和解碼,并將發(fā)送或接收的數(shù)據(jù)和其他有效信息控制顯示在OLED顯示屏即本課題的人機交互界面上,另外還要與手機APP進行通信。對于本系統(tǒng)來說,由于是直接使用系統(tǒng)板來操作,所以例如電源模塊、復位電路、晶振電路等相關(guān)外設都已經(jīng)集成在系統(tǒng)板上,對于設計來說更加方便了。最小系統(tǒng)板大小為5.2CM*6.2CM,共有四面排針引出的引腳,所以最小系統(tǒng)板引腳設計如下圖所示:圖3-1-1 單片機引腳圖3.2 無線收發(fā)模塊該模塊主要使用有Nordic公司生產(chǎn)的nRF24L01模塊構(gòu)成,它使用SPI通信,能實現(xiàn)點對點或是1對6的無線通信,無線通信速度最高可達到2Mbps。它與藍牙通信相比,優(yōu)點是低功耗,傳輸速率快,抗干擾能力強,系統(tǒng)費用(低速微處理器也能進行高速射頻發(fā)射)低,更適合近距離通信。對于SPI,是英語Serial Peripheral interface的縮寫,顧名思義就是串行外圍設備接口。SPI接口主要應用在EEPROM,F(xiàn)LASH,實時時鐘,A/D轉(zhuǎn)換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。SPI是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議,STM32也有多個SPI接口。nRF24L01無線模塊工作于2.4GHz頻段,主要有4種工作方式,這樣在一定程度上更方便地進行節(jié)能設計。而工作方式的選擇一般靠對幾個寄存器的改變來實現(xiàn)。在實際應用中,需要對模塊內(nèi)部參數(shù)進行配置后,才能正常工作,使其無線收發(fā)。nRF24L01的具體硬件連接圖如圖3-2-1所示。實物模塊如下圖3-2-2所示。對于nRF24L01模塊,其中2個引腳是電源輸入;3個引腳是為了模塊與單片機之間進行SPI通信,而另外三個引腳則是對模塊進行相關(guān)配置需要的輸入口。在軟件設計時,需要對這些引腳進行初始化,使單片機使能引腳,再對相關(guān)函數(shù)進行初始化。圖3-2-1 nRF24L01引腳圖 圖3-2-2 nRF24L01實物圖3.3 顯示模塊OLED,即有機發(fā)光二極管(Organic Light-Emitting Diode),又稱為有機電激光顯示(Organic Electroluminesence Display,OELD)。OLED由于同時具備自發(fā)光,不需背光源、對比度高、厚度薄、視角廣、反應速度快、可用于撓曲性面板、使用溫度范圍廣、構(gòu)造及制程較簡單等優(yōu)異之特性,被認為是下一代的平面顯示器新興應用技術(shù)。LCD都需要背光,而OLED不需要,因為它是自發(fā)光的。這樣同樣的顯示,OLED效果要來得好一些。OLED具有多種尺寸大小,同時具有多種外接引腳方式,這樣一來,就存在多種數(shù)據(jù)傳輸方式,例如8080總線與4線SPI接口方式。另外,OLED并不需要高壓,直接接3.3V就可以工作了。OLED具體硬件連接如下圖所示:圖3-3-1 OLED模塊硬件連接圖3.4 溫度采集模塊該模塊采用美國DALLAS公司推出的數(shù)字測溫芯片DS18B20。它是一種“一線總線”接口的溫度傳感器,具有較強的抗干擾性。與傳統(tǒng)的熱敏電阻等測溫元件相比,它體積小巧、簡潔經(jīng)濟,可以使用外接連接線使其在不同環(huán)境位置下工作,大大提高實用性。同時它還可以使用相當寬的電壓范圍,只用一根總線進行數(shù)據(jù)傳輸也使其與單片機之間的接口簡單,硬件設計方便。另外它測溫范圍廣,從零下55攝氏度到125攝氏度均可,精度可達到0.5,在組建數(shù)字溫度傳感器網(wǎng)絡方面具有十分重要的地位。與單片機連接組成系統(tǒng)時,它能直接讀出被測溫度,并且直接將數(shù)據(jù)傳輸給單片機處理。具體傳感器引腳如下圖所示:圖3-4-1 DS18B20引腳圖DS18B20具有多種封裝方式,在本系統(tǒng)電路設計中,使用的是上圖的左側(cè)封裝,因此只需要連接三個引腳即可。其中,GND引腳連接電源地,VDD引腳連接外接供電電源輸入端,DQ引腳則是溫度數(shù)據(jù)輸出口,連接到單片機I/O口,傳輸檢測到的原始溫度數(shù)據(jù)。通過該模塊測量目標地點的溫度后,將數(shù)據(jù)送到從機中,然后從機將數(shù)據(jù)處理后在OLED上顯示,并將數(shù)據(jù)發(fā)送到接收端。具體硬件連接如下圖所示:圖3-4-1 DS18B20硬件連接圖3.5 藍牙模塊嵌入式藍牙串口通訊模塊具有兩種工作模式:命令響應工作模式和自動連接工作模式,在自動連接工作模式下模塊又可分為主(Master)、從(Slave)和回環(huán)(Loopback)三種工作角色。當模塊處于自動連接工作模式時,將自動根據(jù)事先設定的方式連接的數(shù)據(jù)傳輸;當模塊處于命令響應工作模式時能執(zhí)行下述所有AT命令,用戶可向模塊發(fā)送各種AT指令,為模塊設定控制參數(shù)或發(fā)布控制命令。通過控制模塊外部引腳輸入電平,可以實現(xiàn)模塊工作狀態(tài)的動態(tài)轉(zhuǎn)換。本系統(tǒng)藍牙功能主要使用HC05藍牙模塊來實現(xiàn)。模塊硬件連接如下圖所示:圖3-5-1 藍牙模塊硬件連接圖對于本系統(tǒng)使用的藍牙模塊,可首先將其設置為命令響應模式,然后通過電腦上的軟件來具體配置參數(shù),之后直接連接到單片機時就能正常工作。具體操作位為當模塊插入電腦時,緊緊按住模塊表面上的按鈕,當指示燈慢閃時,說明已經(jīng)進入相應模式,此時松開按鈕,即可通過串口助手等進行調(diào)試。這樣就能夠在串口助手等程序上使用AT指令來設置HC05藍牙模塊。藍牙模塊常用AT指令如下表所示:表3-5-1 常用AT指令指令功能響應參數(shù)AT測試用OK無AT+RESET模塊復位或重啟OK無AT+ORGL恢復默認狀態(tài)OK無AT+NAME=模塊命名OKParam:藍牙設備名稱AT+ROLE=設置模塊角色OKParam:主要有:0從角色;1主角色;2回環(huán)角色AT+UART?詢問串口參數(shù)例:9600,0,1三個數(shù)字分別對應波特率,停止位與校驗位3.6 報警模塊為了保證該系統(tǒng)具有一定的警示功能,本設計采用了電式蜂鳴器作為聲音報警部分,體積小,方便安裝。當檢測到溫度不在預定范圍內(nèi)時,蜂鳴器就會正常工作,發(fā)出聲音。蜂鳴器作為發(fā)聲元件,主要的類型可以分為有源蜂鳴器和無源蜂鳴器。無源蜂鳴器需要在兩端施加直流電壓就可以發(fā)出聲音,而有源蜂鳴器則需要在兩端施加具有一定周期的電壓,例如正弦波或方波才可發(fā)出聲音。根據(jù)不同的用戶需求,需要選擇不同的蜂鳴器種類,具體根據(jù)設計決定。本設計采用的是有源蜂鳴器,只需要通過一個三極管來驅(qū)動即可使蜂鳴器正產(chǎn)工作。具體硬件連接如下圖所示:圖3-6-1 報警模塊硬件連接圖3.7 電源模塊電源電路提供系統(tǒng)所需電壓如3.3V和5V。通過外接電源,接入大于5V的電壓,然后通過LM7805芯片將電壓穩(wěn)到5V,之后再使用LM1117芯片將電壓穩(wěn)到3.3V從而達到本設計的要求電源。對于本系統(tǒng)來說,復位、晶振和指示電路已集成在STM32F103ZET6開發(fā)板上,所以只要通過充電寶直接供給單片機,就能得到相應電壓。具體硬件連接如下圖所示:圖3-7-1 電源模塊硬件連接圖4 軟件部分設計與實現(xiàn)4.1 Keil軟件介紹本系統(tǒng)中的軟件設計基本上都是通過Keil Vision5來編程實現(xiàn)的。Keil是一款功能強大的C語言軟件開發(fā)系統(tǒng),同時Keil與多個單片機公司之間具有合作關(guān)系,所以可以直接通過軟件自帶的內(nèi)容來構(gòu)建相應單片機的環(huán)境。與此同時,Keil在使用過程中簡單方便,多處具有人性化設計,可以適應不同人的編程習慣。在軟件設計過程中,該軟件也可以自由導出導入相關(guān)的庫文件,運行過程中也可以通過設計節(jié)點來探尋出現(xiàn)問題的地方。Keil還包含兩個ARM公司的C/C+編譯器、匯編器和連接器,同時高度優(yōu)化的運行庫能優(yōu)化代碼大小和性能。軟件包能夠隨時被導入到MDK或DS-MDK中,使相關(guān)的設備能不需要通過工具鏈來獲得技術(shù)支持,它們包括設備支持、CMSIS庫、中間設備、板級支持、代碼模板和示例項目。4.2 系統(tǒng)總體程序流程設計對于系統(tǒng)的總體設計,是對于無線通信的一個簡要流程,主要是要做到主機與從機之間的有效連接以及對數(shù)據(jù)的處理與顯示。首先是從機部分的溫度采集,當數(shù)據(jù)進行處理后在OLED上顯示,再通過nRF24L01無線模塊傳輸?shù)街鳈C中,最后在主機當接收到數(shù)據(jù)后,進行處理后在OLED顯示屏中顯示溫度數(shù)據(jù)等內(nèi)容。其中,關(guān)鍵點在于數(shù)據(jù)傳輸過程中的誤碼亂碼以及編碼解碼,這就需要做好主從機之間的通信協(xié)議。具體流程圖如圖4-2-1所示。圖4-2-1 系統(tǒng)總體流程框圖4.3 系統(tǒng)主機程序流程設計對于系統(tǒng)的主機程序流程,主要是對于數(shù)據(jù)的接收與處理。首先是對單片機進行初始化后,再對無線通信模塊與OLED顯示屏以及藍牙模塊初始化,然后設置無線模塊為接收模式,使主機能與從機配對,讓主機能夠接受到從機發(fā)送的數(shù)據(jù),最后將數(shù)據(jù)處理后顯示到OLED顯示屏上并判斷是否觸發(fā)報警模式,同時,將溫度數(shù)據(jù)通過藍牙串口發(fā)送到手機APP中。具體流程如下圖所示:圖4-3-1 系統(tǒng)主機流程框圖4.4 系統(tǒng)從機程序流程設計對于系統(tǒng)的從機程序設計,主要是對于溫度數(shù)據(jù)的處理與發(fā)送??傮w思路與主機程序類似,首先對于單片機與OLED顯示屏還有DS18B20溫度傳感器進行初始化,將無線模塊設置為發(fā)送模式,之后由單片機讀取溫度數(shù)據(jù),經(jīng)過處理后顯示在OLED上并通過nRF24L01無線傳輸模塊發(fā)送出去。具體流程圖如下圖所示:圖4-4-1 系統(tǒng)從機流程框圖4.5 無線模塊軟件流程設計對于nRF24L01無線模塊,并不像串口那樣通信簡單,對于其內(nèi)部的寄存器需要配置好,才能實現(xiàn)具體的功能,不然只會出錯。當發(fā)送數(shù)據(jù)時,首先需要將模塊設置為發(fā)送模式,即配置TX_Mode,然后將接收處的地址與需要發(fā)送的數(shù)據(jù)寫入緩沖區(qū),之后將CE置為高后,就將數(shù)據(jù)包發(fā)出,此時發(fā)送端會進入接收模式,如果接收到應答信號,則此次發(fā)送數(shù)據(jù)成功,同時模塊就會進入空閑模式,直到下次需要發(fā)送數(shù)據(jù)。否則會自動進行重發(fā),直至達到最大重發(fā)次數(shù),產(chǎn)生中斷,通知單片機。具體流程如下圖4-5-1所示。接收數(shù)據(jù)時,首先還是需要將模塊配置為接收模式,即配置RX_Mode,此時就設置好了接收端的地址。然后等待數(shù)據(jù)的到來,此時就是類似于空閑模式,而當收到數(shù)據(jù)包后,首先會對相關(guān)的地址數(shù)據(jù)進行解析,只有當?shù)刂菲ヅ鋾r,才會將之后的數(shù)據(jù)包存入緩存區(qū)中,同時轉(zhuǎn)變?yōu)榘l(fā)送模式,回傳應答信號。這樣就完成了一次數(shù)據(jù)包的正常通信。具體流程如下圖4-5-2所示。圖4-5-1 無線模塊發(fā)送流程圖 圖4-5-2 無線模塊接收流程圖4.6 溫度檢測程序流程設計溫度檢測模塊軟件設計DS18B20的測溫原理遵循嚴格的單總線協(xié)議,需要采用嚴格的信號時序,以保證數(shù)據(jù)的完整性。DS18B20一般有6種信號類型。單片機讀取模塊溫度的過程一般為:復位,發(fā)SKIP ROM信號,發(fā)開始轉(zhuǎn)換命令,延時,再復位,再發(fā)SKIP ROM信號,發(fā)讀存儲器命令,連續(xù)讀出兩個字節(jié)數(shù)據(jù),最后結(jié)束。如此反復,完成所有操作,在實際程序設計中,一般先通過軟件來檢測溫度模塊是否存在,只有模塊存在的條件才能進行下一步操作,之后就會上述步驟來讀取溫度數(shù)據(jù),而在主程序中只要將函數(shù)的返回值設定為溫度值就可以只用一個整合后的函數(shù)來讀取溫度。具體流程設計如圖4-6-1所示:圖4-6-1 溫度流程圖4.7 顯示模塊流程設計對于OLED顯示模塊,雖然采用是SPI接口方式,但是若想達到顯示正確數(shù)據(jù)的目標,需要的操作并不難。首先需要對其余單片機相連的I/O口進行初始化,然后對模塊進行初始化,最后只要通過函數(shù)將相關(guān)內(nèi)容顯示到模塊上即可。在顯示函數(shù)上,由于顯示屏主要是由一個個點陣構(gòu)成的,所以想要顯示的內(nèi)容都是由點亮相關(guān)點實現(xiàn)的。具體流程如下圖所示:圖4-6-1 OLED顯示流程圖4.8 藍牙APP模塊設計在主機中使用了HC05藍牙模塊,因可以使用此模塊與手機APP進行通信,這也是本系統(tǒng)題目設計內(nèi)容之一。藍牙之間的通信主要是串口通信,所以在主機上需要占用兩個串口I/O口,而手機APP的設計則借助于APPInventor。對于手機與模塊之間的藍牙通信,首先需要設置APP端為藍牙服務器或是服務端,但是串口通信一般為雙向的,只要串口連接上,之后就可以數(shù)據(jù)互傳,所以,在本設計中將APP端設置為客戶端,用來接收單片機發(fā)送的溫度數(shù)據(jù)。其次,需要使單片機上的藍牙模塊與手機藍牙連接,因為一旦連接上后,就能實現(xiàn)單片機與APP之間的串口通信,這樣就需要配置藍牙模塊的相關(guān)參數(shù),使其能夠完整正確的傳輸數(shù)據(jù)。最后需要實現(xiàn)的就是APP對溫度數(shù)據(jù)的顯示與更新。具體流程設計如下圖所示:圖4-7-1 APP流程設計5 系統(tǒng)調(diào)試與結(jié)果5.1 調(diào)試步驟步驟一 完成硬件電路連接。步驟二 將OLED顯示模塊程序?qū)懭腴_發(fā)板,看是否能夠正常顯示字符。步驟三 將DS18B20溫度傳感器與OLED一起接入開發(fā)板,寫入測溫程序,看顯示屏是否能夠正常顯示溫度。步驟四 將DS18B20溫度傳感器與OLED顯示模塊一起接入開發(fā)板,寫入測溫程序,測試能否在OLED上同時顯示。步驟五 將nRF24L01無線芯片分別與兩塊開發(fā)板連接,寫入收發(fā)程序,測試是否能夠正常收發(fā)。步驟八 將溫度檢測,報警模塊,無線收發(fā)與顯示,檢測系統(tǒng)能否將發(fā)送端采集的溫度時間數(shù)據(jù)測出并發(fā)送,在接收端的OLED顯示屏上顯示出來。5.2 測試環(huán)境基于單片機的無線通信系統(tǒng)的實物測試,在2018年3月20日在浙江師范大學數(shù)理與信息學院電子電工開放實驗室內(nèi)進行5.3 測試設備測試用的無線通信系統(tǒng)實物圖如下圖所示,所用電源為充電寶。具體測試結(jié)果如下圖所示:圖5-2-1 從機實際測試圖圖5-2-2 主機實際測試圖從上述的實際測試圖可以看出,從機通過DS18B20檢測到室溫并通過nRF24L01模塊發(fā)送,主機接收到相關(guān)數(shù)據(jù)后顯示在OLED上。主機顯示屏上的溫度數(shù)據(jù)與從機上顯示的相同,可見,無線通信成功了。5.4 測試目的首先驗證在從機中是否能夠采集到當前室溫,并且是否能在OLED顯示屏上顯示,其次,觀察從機是否能夠與主機進行通信,將數(shù)據(jù)發(fā)送給主機,最后觀察主機是否能將正確數(shù)據(jù)顯示在OLED顯示屏上,并且相應的報警模式是否工作。另外,還有手機APP是否能接收到正確的溫度數(shù)據(jù)。5.5 測試結(jié)果基于單片機的無線通信系統(tǒng)在實驗室進行實際測試,得到以下結(jié)果:(1) 當接通電源后,單片機與其他模塊均進行初始化,經(jīng)過在10s內(nèi)的一段時間后,在從機的顯示屏上顯示出當前室溫。(2) 系統(tǒng)的主機在3s內(nèi)接收到了從機發(fā)送的數(shù)據(jù),并在顯示屏上顯示了與從機顯示屏上相同的數(shù)據(jù)。(3) 當溫度數(shù)據(jù)不在預定的范圍內(nèi)時,蜂鳴器進行警報。(4) 主機中藍牙模塊與手機進行配對后,手機能夠收到主機發(fā)送的相關(guān)溫度數(shù)據(jù),并進行顯示。6 結(jié)論對于本系統(tǒng)設計,我深深感到了自己的不足,也對于項目具有一定程度上的不自信,好在有指導老師張老師的幫助導下,經(jīng)過努力,本論文已經(jīng)基本完成了預期的目標,相關(guān)總結(jié)如下:無線通信一直是單片機甚至是日常生產(chǎn)生活中十分常見的領域,除了在生活中人們十分常用以外,生產(chǎn)中也是逐漸融入無線通信的內(nèi)容。本系統(tǒng)設計的基于單片機的無線通信系統(tǒng)就是一個典型例子。本系統(tǒng)主要是采用了溫度這一物理量來作為傳輸數(shù)據(jù),是因為溫度無處不在,無論是在日常生活或者是在工業(yè)生產(chǎn)上,都起著至關(guān)重要的作用,同時溫度也是比較容易獲取的物理量,而本系統(tǒng)的主要實現(xiàn)功能還是數(shù)據(jù)的無線通信。另外,還有對于藍牙APP的設計,由于本身接觸相關(guān)內(nèi)容并不多,使用了易于上手的APPInventor來設計軟件,由此也產(chǎn)生過許多問題,所幸在同學與老師幫助下成功達到了目標。在本系統(tǒng)的設計過程中也遇到了一些問題,比如單片機的編程比較復雜,需要將多個功能實現(xiàn)程序整合在一起,這樣就得將整體程序進行比較好的分類與時序排列,使整個系統(tǒng)不出現(xiàn)問題。還有對于溫度傳感器的速率不夠快與準確,無線傳輸模塊的距離較短,傳輸數(shù)據(jù)具有誤碼亂碼的等問題需要解決。在藍牙程序設計方面,雖然是有易于上手的模塊設計,但是不熟練也發(fā)生過一些問題,例如藍牙客戶端設置不能,無法正確顯示數(shù)據(jù)等。另外,對nRF24L01無線傳輸模塊傳輸程序的編程也具有一定難度。能夠最終完成整個系統(tǒng),離不開多次努力與嘗試還有指導老師的幫助。通過這次的學習與設計,我學到了許多東西,例如對于溫度傳感器的應用,無線傳輸模塊的使用以及無線傳輸數(shù)據(jù)出現(xiàn)問題時應該如何解決等,這些對于理論知識來說是完全不夠的,是需要不斷具體的實踐與應用的,再次印證了只有實踐才能出真理。與此同時,本系統(tǒng)設計也還具有一些不盡人意的地方,需要不斷改進。參考文獻1冉偉剛.溫室大棚數(shù)據(jù)采集系統(tǒng)D.蘭州大學,2010.2張家銘.基于手機藍牙控制的智能電風扇J.通訊世界,2017(06):282-283.3孫永堅.基于無線傳感器網(wǎng)絡的智能家居遠程監(jiān)控系統(tǒng)研究與設計D.吉林大學,2014. 4鄭磊.基于GPS的精確農(nóng)業(yè)自動變量施肥控制系統(tǒng)的研究D.吉林大學,2009. 5邢艷芳,張延冬.基于Zynq的OLED驅(qū)動設計J.液晶與顯示,2014,29(02):224-228. 6劉志平,趙國良.基于nRF24L01的近距離無線數(shù)據(jù)傳輸J.應用科技,2008(03):55-58. 7戴鑫.網(wǎng)絡移動機器人遠程監(jiān)控系統(tǒng)的研究與設計D.貴州大學,2009. 8張杰.基于MC9328MXL處理器的CMMB移動電視信號接收系統(tǒng)的設計與實現(xiàn)D.東北大學,2009. 9薛丹,王天成,丑遠婷,曹蓓.基于STM32的激光位置提取及控制裝置研究J.工業(yè)技術(shù)創(chuàng)新,2015,02(01):43-46.10陳智.基于CMMB標準的移動多媒體廣播接收與播放系統(tǒng)開發(fā)D.廈門大學,2008. 11馬傳文.基于DSP的新一代漁業(yè)基站電臺的設計與實現(xiàn)D.西安電子科技大學,2011.12Y. Wang and Z. Chi,System of Wireless Temperature and Humidity Monitoring Based on Arduino Uno Platform, 2016 Sixth International Conference on Instrumentation & Measurement, Computer, Communication and Control (IMCCC), Harbin, 2016, pp. 770-773.13Sun Hao and Chi Zongtao,Design of the environmental temperature and humidity wireless monitoring system, 2015 12th IEEE International Conference on Electronic Measurement & Instruments (ICEMI), Qingdao, 2015, pp. 1652-1657.致謝 從選題到完成畢業(yè)設計,總共經(jīng)過了大約五個月的時間,在此我要特別感謝我的指導老師張老師,感謝他的耐心指導與幫助。在整個畢業(yè)設計過程中,其實我是擠出時間來完成的,主要是要準備考研內(nèi)容,這也給了我很大壓力,而在此過程中,張老師也是舵機鼓勵與幫助我,讓我不至于被多件事務弄得焦頭爛額。與此同時張老師也建議我早做準備,虛心請教,多查閱資料與文獻,并多動手實踐,我覺得這對我來說十分重要,因為我們本就是工科,實踐動手有時是比理論知識更加重要的。還有老師對于我查找資料的指導也讓我獲益匪淺,再次感謝張老師。 原本在開題時對本設計的題目已經(jīng)有了一定了解,而在具體實際過程中發(fā)現(xiàn)其實并不簡單。經(jīng)常會出現(xiàn)這樣那樣的問題,讓我一時之間解決不了,這里我就要感謝我們系的其他幾位老師對我的幫助了,不僅在材料上給予了我支持,同時還有軟件設計上的指導。另外,同學給我的幫助也是不可忽視的,有時當我有了一些自己不明白的問題時,只要找了同學幫助,就會有種豁然開朗的感受。 最后還要感謝我的母校與曾經(jīng)給予我影響的老師們,我是在電子信息工程這個大家庭里成長起來的,無論以后我從事什么工作或是完成什么任務,我覺得都離不開這大學四年里的經(jīng)歷與學習。謝謝你們!附錄1 系統(tǒng)設計總體電路圖圖1-1 系統(tǒng)設計電路圖2 系統(tǒng)設計PCB圖圖2-1 系統(tǒng)設計PCB圖3 實際測試圖與APP測試圖圖3-1 從機實際測試圖圖3-2 主機實際側(cè)視圖圖3-3 手機APP測試圖1. 主要程序1.1 主程序部分#include led.h#include delay.h#include key.h#include sys.h#include oled.h#include ds18b20.h #include 24l01.h #include usart.h u8 ii=6; int main(void) u8 t; u8 fuhao; u8 ceshi2;u8 xiaoshu;u8 fuhao2; short temperature; u8 tmp_buf33;delay_init(); /延時函數(shù)初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /設置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應優(yōu)先級 LED_Init(); /LED端口初始化OLED_Init();/初始化OLED NRF24L01_Init(); /初始化NRF24L01 usart3_init(9600); OLED_ShowString(0,0,ALIENTEK,24); OLED_ShowString(0,24, 0.96 OLED TEST,16); OLED_Refresh_Gram();/更新顯示到OLED / while(DS18B20_Init()/DS18B20初始化/OLED_ShowString(0,40,DS18B20 Error,12);/OLED_Refresh_Gram();/delay_ms(200);/LCD_Fill(30,130,239,130+16,WHITE);/ delay_ms(200);/OLED_ShowString(0,40,18B20 OK,12);while(NRF24L01_Check() OLED_ShowString(54,40,24L01 Error,12); OLED_Refresh_Gram();/更新顯示到OLED delay_ms(200);/OLED_Clear();/LCD_ShowString(30,130,200,16,16,NRF24L01 Error);/delay_ms(200);/LCD_Fill(30,130,239,130+16,WHITE); OLED_ShowString(66,40,24L01 OK ,12); /OLED_Refresh_Gram();/更新顯示到OLED OLED_ShowString(0,52,Temp: . C,12); OLED_Refresh_Gram();/NRF24L01_TX_Mode();NRF24L01_RX_Mode(); /t= ; /檢測DS18B20/ii=DS18B20_Init();/ while(ii=1)/DS18B20初始化/OLED_ShowString(0,40,18B20 Error,12);/OLED_Refresh_Gram();/更新顯示到OLED /delay_ms(200);/ /OLED_ShowString(0,40,18B20 OK ,12);/ OLED_Refresh_Gram();/更新顯示到OLED while(1) /下面為接收部分程序 OLED_ShowString(0,40,RX_Mode,12); OLED_Refresh_Gram();/更新顯示到OLED ii=NRF24L01_RxPacket(tmp_buf);if(ii=0)/一旦接收到信息,則顯示出來.tmp_buf32=0;/加入字符串結(jié)束符OLED_ShowNum(30+6,52,tmp_buf0+0 x32,1,12);/顯示正數(shù)部分OLED_ShowNum(30+6+6,52,tmp_buf1+0 x32,1,12);/顯示正數(shù)部分OLED_ShowNum(30+6+6+6+6,52,tmp_buf2+0 x32,1,12);/顯示正數(shù)部分 OLED_ShowChar(30,52,tmp_buf3,12,1);/顯示負號 OLED_Refresh_Gram();/更新顯示到OLED else delay_us(100); t+;if(t=10000)/大約1s鐘改變一次狀態(tài)t=0;/LED0=!LED0; /通過藍牙發(fā)送/USART_SendData(USART2, 0 x7e); delay_ms(5); / USART_SendData(USART2, 0 xff); delay_ms(5); / USART_SendData(USART2, 0 x35); delay_ms(5);/ USART_SendData(USART2, 0 x36); delay_ms(5);ceshi0=tmp_buf0;ceshi1=tmp_buf1;xiaoshu=tmp_buf2;fuhao2=tmp_buf3;u3_printf(%c%d%d.%d,fuhao2,ceshi0,ceshi1,xiaoshu);delay_ms(5);/下面為讀取模式程序/ if(t%10=0)/每100ms讀取一次/temperature=-670;/temperature=DS18B20_Get_Temp();/if(temperature0)/OLED_ShowChar(30,52,-,12,1);/顯示負號/temperature=-temperature;/轉(zhuǎn)為正數(shù)/fuhao=-;/else OLED_ShowChar(30,52, ,12,1);/去掉負號/fuhao= ;/OLED_ShowNum(30+6,52,temperature/10,2,12);/顯示正數(shù)部分 / OLED_ShowNum(30+6+6+6+6,52,temperature%10,1,12);/顯示小數(shù)部分 / /OLED_Refresh_Gram();/ delay_ms(10);/t+;/if(t=20)/t=0;/LED0=!LED0;/ii=NRF24L01_TxPacket(tmp_buf);/if(NRF24L01_TxPacket(tmp_buf)=TX_OK)/tmp_buf0=temperature/100;/tmp_buf1=temperature/10-tmp_buf0*10;/tmp_buf2=temperature%10;/tmp_buf3=fuhao;/tmp_buf32=0;/加入結(jié)束符 / OLED_ShowString(30+6+6+6+6+20,52,OK,12); /OLED_Refresh_Gram();/ /else/ /;/LED0=!LED0;/delay_ms(700);/ /1.2 nRF24L01部分程序#include 24l01.h#include delay.h#include spi.h#include usart.hconst u8 TX_ADDRESSTX_ADR_WIDTH=0 x34,0 x43,0 x10,0 x10,0 x01; /發(fā)送地址const u8 RX_ADDRESSRX_ADR_WIDTH=0 x34,0 x43,0 x10,0 x10,0 x01;/初始化24L01的IO口void NRF24L01_Init(void) GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOG, ENABLE); /使能PB,G端口時鐘GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;/PB12上拉 防止W25X的干擾 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽輸出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure);/