

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘 要</b></p><p> 在人們的日常生活中,電風扇非常受到人們的喜愛。相對于空調(diào),電風扇不僅價格便宜,使用方便安全,而且耗電量小。然而,人們在熟睡時,外界隨著溫度變化而降低,這時候人們會容易感冒,尤其是中老年人和小孩更加容易生病。但隨著社會的發(fā)展,使用智能控制風扇漸漸起來。本文就采用ZigBee無線溫控風扇的轉(zhuǎn)速,主要是用兩塊ZigBee核心板,分別
2、當做發(fā)送模塊和接收模塊,發(fā)送模塊接上DS18b20溫度傳感器和電源,接收模塊主要外接電機,溫度傳感器采集外界溫度,對發(fā)送模塊上的程序解析編譯后通過天線傳輸給接收模塊,最后對其的程序進行解析編譯,通過電機驅(qū)動控制風扇,在此,可以設定上下限,讓風扇的轉(zhuǎn)速隨外界溫度變化而改變。這樣的話,不僅更加的節(jié)能,而且有利于人們的健康。</p><p> 關鍵詞: Zigbee 智能風扇 DS18b20</p>
3、;<p><b> Abstract</b></p><p> In People's Daily lives, the electric fan is very popular with people. Relative to the air conditioning, electric fan is not only cheap, easy to use sec
4、urity, and power consumption is small. People, however, when sleeping, the outside world as the temperature changes, and the people will be easy to catch a cold, Especially middle-aged and old people and children are mor
5、e likely to get sick.But with the development of the society, the use of intelligent control fan up gradually. In this paper, us</p><p> Keywords: Zigbee intelligent fan DS18b20</p><p>&l
6、t;b> 目錄</b></p><p><b> 1 緒論5</b></p><p> 1.1智能風扇的發(fā)展背景5</p><p> 1.1.1 智能風扇現(xiàn)階段的應用5</p><p> 1.1.2智能風扇的發(fā)展趨勢5</p><p> 1.1.3 智能風扇的
7、設計內(nèi)容6</p><p> 2 系統(tǒng)總體設計7</p><p> 2.1基于單片機溫控風扇和ZigBee溫控風扇的兩種方案的比較7</p><p> 2.2系統(tǒng)總體框架7</p><p> 2.3 ZigBee的簡介8</p><p> 2.3.1 ZigBee的介紹8</p>&
8、lt;p> 2.3.2 ZigBee的應用8</p><p> 2.3.3 ZigBee的主要特性9</p><p> 2.3.4 ZigBee的協(xié)議架構9</p><p> 2.4 cc2530片上系統(tǒng)簡介9</p><p> 2.4.1 cc2530系統(tǒng)的介紹10</p><p> 2.
9、4.2 cc2530的功能10</p><p> 2.4.3 cc2530模塊及外設說明10</p><p> 2.5 DS18b20溫度傳感器11</p><p> 2.5.1 DS18b20溫度傳感器特點11</p><p> 2.5.2 DS18b20的輸出信號12</p><p> 2.6
10、L298N電機驅(qū)動模塊介紹12</p><p><b> 3 硬件設計13</b></p><p> 3.1 ZigBee發(fā)送和接收模塊設計13</p><p> 3.2DS18b20溫度傳感器模塊設計14</p><p> 3.3 L298N電機驅(qū)動模塊設計15</p><p>
11、;<b> 4 軟件軟件17</b></p><p> 4.1 軟件IAR的介紹17</p><p> 4.2軟件總體設計流程17</p><p> 4.3 ZigBee發(fā)送模塊設計流程19</p><p> 4.4 ZigBee接收模塊設計流程21</p><p> 4.5
12、溫度采集模塊設計流程22</p><p><b> 5 系統(tǒng)調(diào)試25</b></p><p> 5.1硬件調(diào)試25</p><p> 5.2軟件調(diào)試27</p><p><b> 總 結30</b></p><p><b> 致 謝31<
13、/b></p><p><b> 參考文獻32</b></p><p> 附錄A:元器件33</p><p> 附錄B:源程序34</p><p><b> 1 緒論</b></p><p> 1.1智能風扇的發(fā)展背景</p><p&
14、gt; 1.1.1 智能風扇現(xiàn)階段的應用</p><p> 電風扇在我國作為一種老式的家電,在90年代至今依然十分流行,電風扇具有擺放方便,體積輕巧,價格便宜的優(yōu)點。正是我國對電風扇的廣泛需求,人們對風扇的要求也越來越高,希望風扇變的智能化,和人性化,但是,在我國,智能風扇的應用不是很廣泛,涉及的領域也比較狹窄,只是在一些高端電子產(chǎn)品中,應用到一點,比如,在筆記本電腦中,就安裝有這種智能風扇,當電腦長時間的使
15、用,會發(fā)熱發(fā)燙,電腦傳感裝置檢測到以后,會自動開啟風扇,對電腦進行降溫,以保證電腦的正常運行。智能風扇的應用還應用在許多電子產(chǎn)品上面,有的還設有報警裝置,當外界溫度達到警戒溫度是,報警裝置會發(fā)出聲音來提醒人們。</p><p> 1.1.2智能風扇的發(fā)展趨勢</p><p> 智能風扇在人們的生活中帶來的好處毋庸置疑,雖然智能風扇在一些高端電子產(chǎn)品上面的應用比較廣泛,但是如今,人們更想
16、把智能風扇應用到老式的家電電風扇當中,所以我認為這是以后智能風扇的發(fā)展趨勢,因此,以后的家用電風扇將是多功能的,智能化的,簡單的來說,風扇內(nèi)部帶有報警裝置,外部接有溫度傳感裝置,溫度顯示屏,當外界溫度低于一定的溫度界限時,電風扇自動關閉,當外界溫度在一定溫度界限之間,電風扇會提高轉(zhuǎn)速,并保持,但沒有到最大轉(zhuǎn)速,當外界溫度高于一定的界限時,風扇轉(zhuǎn)速達到最大,并保持,外界的溫度會在電風扇的顯示屏中顯示,所以當外界溫度過高時,電風扇會報警,提
17、醒人們注意防暑降溫。不管實在白天,還是夜晚人們睡覺時,都會給人們帶來很大的方便,所以我相信這種節(jié)能的,智能化,多功能的風扇在未來會得到廣泛的使用,還可以添加更多的功能,以滿足人們的其他需求。</p><p> 1.1.3 智能風扇的設計內(nèi)容</p><p> (1) 系統(tǒng)通過溫度傳感器采集溫度信息,并通過無線通信模塊傳輸給單片機,單片機能通過顯示電路顯示電路實時顯示當前溫度,要求溫度測
18、量精度0.5攝氏度。</p><p> ?。?)通過按鍵可設定溫度的上下限定,當溫度低于溫度的下限值時,電機不轉(zhuǎn),當溫度介于上限和下限之間時,電機轉(zhuǎn)速緩慢,當溫度大于上限值時,電機轉(zhuǎn)速最快。可以實現(xiàn)對環(huán)境溫度的調(diào)控。</p><p> (3)智能調(diào)節(jié)風扇轉(zhuǎn)速,隨著溫度的上升,自動調(diào)節(jié)風扇,實現(xiàn)無級調(diào)速;</p><p><b> 2 系統(tǒng)總體設計<
19、;/b></p><p> 2.1基于單片機溫控風扇和ZigBee溫控風扇的兩種方案的比較</p><p> 單片機溫控智能風扇設計起來比較簡單,成本較低,程序和軟件比較容易。但無線傳輸距離短,實現(xiàn)功能較少,而基于ZigBee溫控智能風扇不管是模塊連接還是程序設計都比較復雜,成本較高,但無線傳輸距離長,距離最長能達到1.5公里,而且功耗低,抗干擾能力強,更具有安全性。因此本次設計
20、我準備采用基于ZigBee無線溫控風扇。</p><p><b> 2.2系統(tǒng)總體框架</b></p><p> 智能風扇技術在家用電風扇中的使用,在當代還沒有普及。而我自己在本設計只是作一下簡單功能設計和實現(xiàn),具體是準備兩塊ZigBee核心板(帶有cc2530片上系統(tǒng))一個當做發(fā)送模塊,一個作為接收模塊。發(fā)送模塊4.5伏供電,外接ds18b20溫度傳感器,發(fā)送模
21、塊4.5伏供電,外接電機驅(qū)動,12伏小風扇接驅(qū)動,6伏電源供電驅(qū)動并連接上升壓模塊,電壓升至12伏給風扇供電。具體框圖如下;</p><p> 4.5伏電源 18b20溫度傳感器</p><p><b> 發(fā)送天線</b></p><p><b>
22、 接收天線</b></p><p><b> 4.5伏電源</b></p><p><b> 6伏電源</b></p><p> 圖2-1溫控智能風扇總體設計框架圖</p><p> 2.3ZigBee的簡介</p><p> 2.3.1ZigBee的
23、介紹</p><p> ZigBee其核心是多道無線通信裝置和微控制器,它們被集成在一塊或兩塊半導體芯片上,并且封裝在很小的熟料制品里面。一般采用廉價的8位微處理器,將無線射頻收發(fā)模塊集成在一塊芯片上,外圍接上幾個阻容和晶振等器件,再連接一些A/D、D/A、I\O接口及控制電路,即組成了諸如各種智能控制節(jié)點、無線傳感器網(wǎng)絡節(jié)點的核心控制模塊。但是,只有這些還是不夠的,還需要在其上加載合適的無線通信軟件和控制程序
24、,才能組成完整的控制模塊。</p><p> 2.3.2ZigBee的應用</p><p> Zigbee技術的目標就是針對工業(yè),智能交通建筑,家庭自動化,遙測遙控,汽車自動化、農(nóng)業(yè)自動化和醫(yī)療護理等,例如燈光自動化控制,傳感器的無線數(shù)據(jù)采集和監(jiān)控,油田,電力,礦山和物流管理等應用領域。</p><p> 通常,符合如下條件之一的應用,就可以考慮采用Zigbe
25、e技術做無線傳輸:</p><p> 1.需要數(shù)據(jù)采集或監(jiān)控的網(wǎng)點多;</p><p> 2.要求傳輸?shù)臄?shù)據(jù)量不大,而要求設備成本低;</p><p> 3.要求數(shù)據(jù)傳輸可性高,安全性高;</p><p> 4.設備體積很小,不便放置較大的充電電池或者電源模塊;</p><p> 5.地形復雜,監(jiān)測點多,需要
26、較大的網(wǎng)絡覆蓋;</p><p> 2.3.3ZigBee的主要特性</p><p> ZigBee是一種無線連接,可工作在2.14GHz(全球流行)、868MHz(歐洲流行)和915MHz(美國流行)3個頻段上,分別具有最高250kbit/s、20kbit/s和40kbit/s的傳輸速率,它的傳輸距離在10—75m的范圍內(nèi)。</p><p> ZigBee顯
27、著的特點就是低速率、低功耗,低成本、短時延、免許可無線通信頻段、多種組網(wǎng)方式、近距離通信、可靠數(shù)據(jù)傳輸、大容量網(wǎng)絡、安全可靠、自配置和靈活的網(wǎng)絡拓撲結構。</p><p> 2.3.4 ZigBee的協(xié)議架構</p><p> ZigBee堆棧是在IEEE 802.15.4標準基礎上建立的,定義了協(xié)議的MAC和PHY層。ZigBee設備應該包括IEEE802.15.4(該標準定義了RF
28、射頻以及與相鄰設備之間的通信)的PHY和</p><p> MAC層,以及ZigBee堆棧層:網(wǎng)絡層(NWK)、應用層和安全服務提供層。</p><p> 圖2-2 Zigbe堆??蚣?lt;/p><p> 2.4 cc2530片上系統(tǒng)簡介</p><p> 2.4.1 cc2530系統(tǒng)的介紹</p><p>
29、CC2530 是用于2.4-GHz IEEE 802.15.4、ZigBee 和RF4CE 應用的一個真正的片上系統(tǒng)(SoC)解決方案。它能夠以非常低的總的材料成本建立強大的網(wǎng)絡節(jié)點。CC2530 結合了領先的RF 收發(fā)器的優(yōu)良性能,業(yè)界標準的增強型8051 CPU,系統(tǒng)內(nèi)可編程閃存,8-KB RAM 和許多其它強大的功能。CC2530 有四種不同的閃存版本:CC2530F32/64/128/256,分別具有32/64/128
30、/256KB 的閃存。CC2530 具有不同的運行模式,使得它尤其適應超低功耗要求的系統(tǒng)。運行模式之間的轉(zhuǎn)換時間短進一步確保了低能源消耗。</p><p> 2.4.2 cc2530的功能</p><p><b> RF/布局:</b></p><p> –適應2.4-GHz IEEE 802.15.4 的RF 收發(fā)器</p>
31、<p> –極高的接收靈敏度和抗干擾性能</p><p> –可編程的輸出功率高達4.5 dBm</p><p> –只需極少的外接元件</p><p> –只需一個晶振,即可滿足網(wǎng)狀網(wǎng)絡系統(tǒng)需要</p><p> –6-mm ×6-mm 的QFN40 封裝</p><p>
32、 –適合系統(tǒng)配置符合世界范圍的無線電頻率法規(guī):ETSI EN 300 328 和EN 300440(歐洲),F(xiàn)CC CFR47 第15 部分(美國)和ARIB STD-T-66(日本)</p><p><b> 運行條件:</b></p><p> cc2530在此條件下運行能達到最好的效果。</p><p> 運行環(huán)境溫度在-40攝氏
33、度到125攝氏度之間。</p><p> 運行供電電壓在2伏到3.6伏之間。</p><p> 2.4.3 cc2530模塊及外設說明</p><p> CC2530 包括許多不同的外設,允許應用程序設計者開發(fā)先進的應用。</p><p> 調(diào)試接口執(zhí)行一個專有的兩線串行接口,用于內(nèi)電路調(diào)試。通過這個調(diào)試接口,可以執(zhí)行整個閃存存儲器的
34、擦除、控制使能哪個振蕩器、停止和開始執(zhí)行用戶程序、執(zhí)行8051 內(nèi)核提供的指令、設置代碼斷點</p><p> 以及內(nèi)核中全部指令的單步調(diào)試。使用這些技術,可以很好地執(zhí)行內(nèi)電路的調(diào)試和外部閃存的編程。設備含有閃存存儲器以存儲程序代碼。閃存存儲器可通過用戶軟件和調(diào)試接口編程。閃存控制器處理寫入和擦除嵌入式閃存存儲器。閃存控制器允許頁面擦除和4 字節(jié)編程。</p><p> I/O 控制器
35、負責所有通用I/O 引腳。CPU 可以配置外設模塊是否控制某個引腳或它們是否受軟件控制,如果是的話,每個引腳配置為一個輸入還是輸出,是否連接襯墊里的一個上拉或下拉電阻。CPU 中斷可以分別在每個引腳上使能。每個連接到I/O 引腳的外設可以在兩個不同的I/O 引腳位置之間選擇,以確保在不同應用程序中的靈活性。</p><p> 系統(tǒng)可以使用一個多功能的五通道DMA 控制器,使用XDATA 存儲空間訪問存儲器,因此
36、能夠訪問所有物理存儲器。</p><p> 定時器1是一個16 位定時器,具有定時器/計數(shù)器/PWM 功能。它有一個可編程的分頻器,一個16 位周期值,和五個各自可編程的計數(shù)器/捕獲通道,每個都有一個16 位比較值。每個計數(shù)器/捕獲通道可以用。</p><p> 2.5 DS18b20溫度傳感器 </p><p> 2.5.1 DS18b20溫度傳感器特點&l
37、t;/p><p> 本次設計,我選用的是ds18b20溫度傳感器。特點是:它有獨特的單線接口僅需一個端口引腳進行通訊,每個器件有惟一的64位的序列號存儲在內(nèi)部存儲器中,不需要外部器件,可通過數(shù)據(jù)線供電。供電范圍3.0伏到5.5伏之間,測溫范圍在-55攝氏度到125攝氏度之間,并且溫度在-10和85攝氏度之間精度為正負5攝氏度。最多在750ms內(nèi)將溫度轉(zhuǎn)換為12位數(shù)字,用戶可定義的非易失性溫度報警設置。而且它應用廣泛
38、包括溫度控制,工業(yè)系統(tǒng),消費品,溫度計或任何熱感測系統(tǒng)。實物圖如下:</p><p> 圖2-3 DS18b20溫度傳感器</p><p> GND 接地,DQ 數(shù)據(jù)I/O,VDD可選電源電壓。</p><p> 2.5.2 DS18b20的輸出信號</p><p> 輸出的是數(shù)字信號,16位補碼數(shù)值,要根據(jù)你所設定的位數(shù)進行數(shù)據(jù)處
39、理轉(zhuǎn)化為十進制數(shù)值。如設定是9位,則16位的最后一位是小數(shù)值,是0則小數(shù)值是0,是1則小數(shù)值是0.5,默認為12位,16位補碼的最后四位是小數(shù)部分的值。對于DS18B20的使用要先初始化,發(fā)送相關指令工作</p><p> 2.6 L298N電機驅(qū)動模塊介紹</p><p> L298電機驅(qū)動采用L298N雙H橋直流電機驅(qū)動芯片,驅(qū)動部分端口供電范圍為+5伏到+35伏之間;如需要板內(nèi)取
40、電,則范圍為+7伏到+35伏之間。邏輯部分工作電流范圍為0到36毫安之間,最大功耗20W(T=75攝氏度時),存儲溫度-25到130攝氏度之間,驅(qū)動板尺寸:55mm*49mm*33mm(帶固定銅柱和散熱片高度),重量為33g,還帶有控制方向指示燈,邏輯部分板內(nèi)取電接口等。</p><p><b> 3 硬件設計</b></p><p> 3.1 ZigBee發(fā)送和
41、接收模塊設計 </p><p> ZigBee發(fā)送和接收模塊主要有cc2530片上系統(tǒng)和PL2303轉(zhuǎn)換器的底板組成包括LCD座或OLED屏,仿真器接口,氣體傳感器座,DC電源座,USB供電串口,開關,組網(wǎng)指示燈,按鍵(可手動組網(wǎng)),串口收發(fā)指示燈,復位鍵,電源指示燈,人體感應座,核心板引腳與排針,I/O口,降壓電路,繼電器及光敏和熱敏座,DHT11或DS18B20,接口。</p><p&g
42、t; 圖3-1發(fā)送接收模塊電路原理圖</p><p> ZigBee協(xié)議棧由一組子層構成。每層為其上層提供提供一組特定的服務:一個數(shù)據(jù)實體提供數(shù)據(jù)傳輸服務;一個管理實體提供全部其他服務。每個服務實體通過一個服務接入點為其上層提供服務接口,并且每個SAP提供了一系列的基本服務指令來完成相應的功能。</p><p> 本次設計用兩個天線分別接cc2530片上系統(tǒng),對應引腳是cc2530上
43、的第25,26腳,如下圖3-2所示</p><p> 圖3-2天線引腳在cc2530上的位置</p><p> 本次設計接收發(fā)送模塊是3.5伏供電,但供給模塊的電源為4.5伏,需要用到降壓電路,具體連接和電路如下:</p><p> 圖3-3 ZigBee核心板上的降壓電路</p><p> 3.2 DS18b20溫度傳感器模塊設計&
44、lt;/p><p> DS18B20的核心功能是它的直接讀數(shù)字的溫度傳感器。Ds18b20啟動后保持低功耗等待狀態(tài);0當需要執(zhí)行溫度測量和AD轉(zhuǎn)換時,總線控制器發(fā)出44h命令。在那之后,產(chǎn)生的溫度數(shù)據(jù)以2個字節(jié)的形式存儲到高速暫存器的溫度寄存器中,ds18b20繼續(xù)保持等待狀態(tài)。當ds18b20由外部電源供電時,總線控制器在溫度轉(zhuǎn)換指令之后發(fā)起“讀時序”,ds18b20正在溫度轉(zhuǎn)換中返回0,結束后返回1。</
45、p><p> 它在PL2303上,VDD接3.3伏,DQ接P0.7I/O口,GND接地即P1.0口。</p><p> 它的電路原理圖如下所示:</p><p> 圖3-4 DS18b20原理圖</p><p> 3.3 L298N電機驅(qū)動模塊設計</p><p> 該驅(qū)動板可驅(qū)動2路直流電機,使能端ENA,EN
46、B為高電平時有效,控制方式及直流電機狀態(tài)表如下所示</p><p> 表3-1直流電機驅(qū)動狀態(tài)表</p><p> 若要對直流電機進行PWN調(diào)速,需設置IN1和IN2,確定電機的轉(zhuǎn)動方向,然后對使能端輸出PWN脈沖,即可實現(xiàn)調(diào)速。當使能信號為0時,電機處于自由停止狀態(tài);當使能信號為1時,且IN1和IN2為00或11時,電機處于制動狀態(tài),阻止電機轉(zhuǎn)動。</p><p&
47、gt; 以下是L298N電路驅(qū)動電路圖:</p><p> 由于它的工作電壓范圍在5到36伏之間,我把電機驅(qū)動的使能端ENA接ZigBee底板上第P1.0I/O口,IN1接底板感應座5伏I/O口,IN2接底板感應座上的GND。并把電機驅(qū)動上的12伏輸入及電源地接12負電源。并選擇一端(如馬達B輸出)的VCC接小風扇的紅線,GND接小風扇的黑線。</p><p> 圖3-5L298N電
48、機驅(qū)動原理圖</p><p><b> 4 軟件軟件</b></p><p> 4.1 軟件IAR的介紹</p><p> IAR Embedded workbench是瑞典IAR Systems 公司為微處理器開發(fā)的一個集成開發(fā)環(huán)境簡稱IAR EW,支持ARM,AVR,MSP430等芯片內(nèi)核平臺。</p><p>
49、; 主要特點如下:別補兵·</p><p> 1.高度優(yōu)化的IAR ARM C/C++ Compiler。</p><p> 2.一個通用的IAR XLINK Linker。</p><p> 3.功能強大的編輯器。</p><p><b> 4.項目管理器。</b></p><
50、;p> 5.命令行實用程序。</p><p> 6.IAR C-SPY調(diào)試器。</p><p> IAR Systems是嵌入式系統(tǒng)開發(fā)工具和服務的供應商。公司成立于1983年,提供的產(chǎn)品包括:帶有C/C++編譯器和調(diào)試器的集成開發(fā)環(huán)境(IDE)、實時操作系統(tǒng)和中間件、開發(fā)套件、硬件仿真器以及狀態(tài)機建模工具。</p><p> 公司總部在位于瑞典烏普薩
51、拉市,IAR Systems 于1999年1月4日在納斯達克OMX斯德哥爾摩上市。愛亞軟件技術咨詢(上海)有限公司是IAR Systems在中國的全資子公司。</p><p> 4.2軟件總體設計流程</p><p> 軟件程序主要實現(xiàn)ZigBee發(fā)送模塊,溫度傳感模塊,ZigBee接收模塊,通信模塊等各個模塊的功能實現(xiàn)和總體連接并實現(xiàn)。</p><p> 發(fā)
52、送模塊用來發(fā)送數(shù)據(jù),溫度傳感模塊就是DS18b20用來采集溫度,ZigBee接收模塊接收才過來的數(shù)據(jù),通信模塊是用來實現(xiàn)發(fā)送和接收模塊之間無線通信的。具體流程圖如下;</p><p> 是 是</p><p><b> 否</b></p><p><b> 否</b
53、></p><p> 圖4-1軟件總體流程圖</p><p> 程序初始化編程如下:</p><p> void InitCLK()</p><p><b> {</b></p><p> CLKCONCMD &= ~0x40; //設置系統(tǒng)時鐘源為
54、32MHZ晶振</p><p> while(CLKCONSTA & 0x40); //等待晶振穩(wěn)定為32M</p><p> CLKCONCMD &= ~0x47; //設置系統(tǒng)主時鐘頻率為32MHZ </p><p><b> }</b></p><p>
55、; 功能: 定時器初始化,系統(tǒng)不配置工作時鐘時默認是2分頻,即16MHz。</p><p> void InitT3()</p><p><b> { </b></p><p> T3CTL |= 0x08 ; //開溢出中斷 </p><p> T3IE = 1;
56、 //開總中斷和T3中斷</p><p> T3CTL |= 0xE0; //128分頻,128/16000000*N=0.5S,N=62500</p><p> T3CTL &= ~0x03; //自動重裝 00->0xff 62500/255=245(次)</p><p> T3CTL
57、 |= 0x10; //啟動</p><p> EA = 1; //開總中斷</p><p><b> }</b></p><p> 功能: 串口初始化函數(shù)</p><p> void InitUart()</p><p><b&
58、gt; {</b></p><p> PERCFG = 0x00; //位置1 P0口</p><p> P0SEL = 0x0c; //P0用作串口</p><p> P2DIR &= ~0xc0; //P0優(yōu)先作為UART0 <
59、/p><p> U0CSR |= 0x80; //串口設置為UART方式</p><p> U0GCR |= 11;</p><p> U0BAUD |= 216; //波特率設為115200</p><p> U0CSR |= 0x40;
60、 //UART接收器使能</p><p> UTX0IF = 0; //UART0 TX中斷標志初始置位0</p><p><b> }</b></p><p> 功能: 串口發(fā)送函數(shù)</p><p> 4.3 ZigBee發(fā)送模塊設計流程</p><
61、p> ZigBee發(fā)送模塊主要是把ds18b20采集到的溫度進行解析編譯發(fā)送給接收模塊,具體設計流程圖如下:</p><p> 圖4-2 發(fā)送模塊流程圖</p><p> 發(fā)送模塊比較簡單將處理后溫度數(shù)據(jù)發(fā)送給接收模塊就可以了。</p><p><b> 具體程序如下:</b></p><p> stat
62、ic void appSwitch() //發(fā)送</p><p> {//char str[9]="DS18B20:";</p><p> uint8 strTemp[6];</p><p> uchar ucTemp;</p><p> float fTem
63、p;</p><p> //halLcdWriteLine(HAL_LCD_LINE_1, "Switch");</p><p> //halLcdWriteLine(HAL_LCD_LINE_2, "Joystick Push");</p><p> //halLcdWriteLine(HAL_LCD_LINE_3,
64、"Send Command");</p><p> #ifdef ASSY_EXP4618_CC2420</p><p> halLcdClearLine(1);</p><p> halLcdWriteSymbol(HAL_LCD_SYMBOL_TX, 1);</p><p><b> #endif&l
65、t;/b></p><p> pTxData[0] = 0;</p><p> pTxData[1] = 1;</p><p> pTxData[2] = 2;</p><p> pTxData[3] = 3;</p><p> // Initialize BasicRF</p><
66、p> basicRfConfig.myAddr = SWITCH_ADDR;</p><p> if(basicRfInit(&basicRfConfig)==FAILED) {</p><p> HAL_ASSERT(FALSE);</p><p><b> }</b></p><p> //
67、由于模塊只需要發(fā)射,所以把接收屏蔽掉以降低功耗。</p><p> basicRfReceiveOff();</p><p> 4.4 ZigBee接收模塊設計流程</p><p> ZigBee接收模塊是把發(fā)送模塊發(fā)送過來的數(shù)據(jù)進行處理,轉(zhuǎn)換成信號給驅(qū)動。具體流程圖如下:</p><p> 圖4-3接收模塊流程圖</p>
68、<p> 接收模塊對溫度數(shù)據(jù)進行處理并轉(zhuǎn)化成電流或電壓信號給驅(qū)動治風扇轉(zhuǎn)動。</p><p><b> 具體程序如下:</b></p><p> while (TRUE) { </p><p> while(!basicRfPacketIsReady()); //檢查模塊是否已經(jīng)可以接收下一個數(shù)據(jù),如果準備好剛返
69、回 TRUE</p><p> //把收到的數(shù)據(jù)復制到buffer中</p><p> if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0) {</p><p> if(pRxData[3] == 3) {//判斷接收到的數(shù)據(jù)是否就是LIGHT_TOGGLE_CMD</p><
70、p> halLedToggle(1); //改變Led1的狀態(tài)</p><p><b> }</b></p><p><b> }</b></p><p> wen_du=(pRxData[0]&0x0f)*10+(pRxData[1]&0x0f);</p><p>
71、 if(wen_du>=20&&wen_du<=25)</p><p><b> PWM_ON=0;</b></p><p> else if(wen_du>=25&&wen_du<=30)</p><p><b> PWM_ON=0;</b></p&g
72、t;<p> else if(wen_du>=30&&wen_du<=35)</p><p> PWM_ON=90;</p><p> else if(wen_du>35)</p><p> PWM_ON=100;</p><p> else if(wen_du<20)</
73、p><p> PWM_ON=100; </p><p> UartSendString(str, 9); </p><p> UartSendString(pRxData, 2); </p><p> UartSendString(str1, 3);</p><p> UartSendString("
74、;\n", 1);</p><p><b> }</b></p><p><b> }</b></p><p> 4.5溫度采集模塊設計流程</p><p> 本模塊是實現(xiàn)對DS18b20溫度的讀取,并且轉(zhuǎn)化為十六進制數(shù)據(jù)進行處理。具體流程圖如下:</p><p
75、><b> 否</b></p><p><b> 是</b></p><p> 圖4-4溫度模塊流程圖</p><p> 首先,DS18B20輸出的一位(1 bit)信號是不能被單片機變?yōu)槎辔坏?,一位就是一位,單片機需要連續(xù)多次讀取DS18B20輸出的一位信號,來合成它需要的信息。比如DS18B20的溫度輸出
76、是16位數(shù)據(jù),那么單片機就要讀16次1 bit數(shù)據(jù)。讀取溫度偽代碼(temperature為保存溫度數(shù)值的整型變量): for ( i=1; i<=16; i++) { onebit=讀取1位數(shù)據(jù)的函數(shù)(); temperature=temperature|onebit; if(i!=16)
77、 temperature=temperature<<1; }</p><p> 然后,單片機是如何讀取DS18B20輸出的某1bit信息的呢?在具體回答前先明確一點,這一過程必須在單片機拉低數(shù)據(jù)線,發(fā)起讀數(shù)據(jù)過程之后的15微秒(us)內(nèi)完成,否則讀不到正確數(shù)據(jù)(注意:發(fā)起通信時總是由單片機將數(shù)據(jù)總線先拉低,沒有通信時數(shù)據(jù)總線保持高電平狀態(tài))。</p><p>
78、 初始化DS18B20要嚴格控制好時序,即DS18B20的復位。</p><p> 具體溫度處理模塊程序如下:</p><p><b> 發(fā)送時的溫度處理:</b></p><p> while (TRUE) {</p><p> memset(strTemp, 0, ARRAY_SIZE(strTemp));
79、 </p><p> //UartSendString(str, 8); //輸出提示信息</p><p> //廠家提供的程序溫度值不帶小數(shù),Ds18B20本身是支持1位小數(shù)位的,修改后使其支持,精度更高 </p><p> #if defined(FLOAT_TEMP) </p>
80、<p> fTemp = floatReadDs18B20(); //溫度讀取函數(shù) 帶1位小數(shù)位</p><p> sprintf(strTemp, "%.01f", fTemp); //將浮點數(shù)轉(zhuǎn)成字符串 </p><p> //UartSendString(strTemp, 5); //通過串口發(fā)送溫度值到電腦顯示<
81、;/p><p> #else </p><p> ucTemp = ReadDs18B20(); //溫度讀取函數(shù)</p><p> strTemp[0] = ucTemp/10+48; //取出十位數(shù)</p><p> strTemp[1] = ucTemp%10+48; //
82、取出個位數(shù)</p><p> //UartSendString(strTemp, 2); //通過串口發(fā)送溫度值到電腦顯示</p><p> #endif </p><p> //UartSendString("\n", 1); // 回車換行 </p><p>
83、 Delay_ms(100); //延時函數(shù)使用定時器方式</p><p> pTxData[0] = strTemp[0];</p><p> pTxData[1] = strTemp[1];</p><p><b> 接收時溫度的處理:</b></p><p> char
84、str[9]="當前溫度:";</p><p> char str1[3]=" 度";</p><p> #ifdef ASSY_EXP4618_CC2420</p><p> halLcdClearLine(1);</p><p> halLcdWriteSymbol(HAL_LCD_SYMB
85、OL_RX, 1);</p><p><b> #endif</b></p><p> // Initialize BasicRF</p><p> basicRfConfig.myAddr = LIGHT_ADDR;</p><p> if(basicRfInit(&basicRfConfig)==FA
86、ILED) {</p><p> HAL_ASSERT(FALSE);</p><p><b> }</b></p><p> basicRfReceiveOn();</p><p> 通過以上各個模塊的連接和編程,若成功,就可以進行下面的系統(tǒng)調(diào)試了。</p><p><b>
87、 5 系統(tǒng)調(diào)試</b></p><p> 本次設計主要是實現(xiàn).基于ZigBee的無線溫控智能風扇,分為各個模塊,并對各個模塊進行連接,和編程調(diào)試最終實現(xiàn)功能。</p><p><b> 5.1硬件調(diào)試</b></p><p> 本次設計采用ZigBee溫控風扇,設好上下限溫度,當外界溫度低于下限溫度是風扇轉(zhuǎn)速會降低,當外界溫度
88、高于上線溫度時,風扇轉(zhuǎn)速變快,具體硬件運行實物圖如下:</p><p> 圖5-1總模塊運行情況</p><p> 5.1.1發(fā)送模塊調(diào)試</p><p> 首先用一個4.5伏電源盒給發(fā)送模塊供電,并把ds18b20插入模塊上特有的傳感器座,打開開關,看紅藍燈是否亮,亮說明成功,注意ds18b20不要接反了。具體實物圖如下:</p><p&
89、gt;<b> 圖5-2發(fā)送模塊</b></p><p> 5.1.2接收模塊和驅(qū)動模塊</p><p> 接收模塊和驅(qū)動我把它們放在一起,要注意接模塊和驅(qū)動的連接,注意引腳,不要搞錯,這個可以參照原理圖,正負也不要接反了,還有藍燈要閃爍表明在進行數(shù)據(jù)傳輸。具體實物圖如下:</p><p> 圖5-3接收模塊和驅(qū)動模塊</p>
90、;<p> 5.1.3 6伏電源盒升壓模塊</p><p> 這個沒什么好說的,由于我的小風扇是12伏供電,但我只有6伏電源所以我準備了一個升壓模塊用來升到12伏,輸入接電源,輸出接驅(qū)動模塊,同樣注意的是,正負極要對應,且不要接反了。具體實物圖如下:</p><p><b> 圖5-4 升壓模塊</b></p><p>&l
91、t;b> 5.2軟件調(diào)試</b></p><p><b> 5.2.1調(diào)試項目</b></p><p> 從菜單中選定調(diào)試器。從動作菜單中選定單步以啟動源代碼的執(zhí)行。源代碼將顯示在屏幕上,第一條快執(zhí)行語句被突出顯示。</p><p><b> 5.2.2查看變量</b></p>&l
92、t;p> 跟蹤用戶可在其上設置看點的變量。</p><p><b> 5.2.3設置斷點</b></p><p> 用戶可通過在規(guī)定的語句設置斷點而使程序執(zhí)行到該語句。</p><p> 5.2.4使用Make(生成)命令</p><p> 代替單獨編譯和匯編項目中的文件并接著連接他們,用戶可以使用Mak
93、e命令自動使項目得到更新。</p><p> 5.2.5編輯飽和文件并生成調(diào)試。</p><p><b> 具體圖片如下:</b></p><p> IAR開發(fā)環(huán)境包含的文件:</p><p> 圖5-1IAR環(huán)境包含的文件</p><p> 編譯下載按鈕及環(huán)境界面:</p>
94、<p> 圖5-2編譯下載環(huán)境界面</p><p><b> 錯誤及警告顯示:</b></p><p> 圖5-3錯誤及顯示畫面</p><p> 溫度可以用電腦上面的串口調(diào)試助手來顯示。</p><p> 最后,通過軟硬件調(diào)試相互結合,雖然遇到了不少的問題,但都成功的解決了。最終實現(xiàn)本次設計的成
95、功。</p><p><b> 總 結</b></p><p> 本設計主要是基于ZigBee無線溫控智能風扇,當時選到這個題目,我的心就變得非常沉重,ZigBee雖然學過,但只是片面學習了下ZigBee的基礎知識,而且這個編程還需要用到新的開發(fā)軟件IAR ,對這個軟件,我是一無所知的,我只能從頭開始,我先去圖書館和網(wǎng)絡上查閱了大量的關于ZigBee的資料,以及c
96、c2530和PL2303的資料,雖然這些資料很多很復雜,但我只要了解它的大概就可以了,通過對這些知識的了解,我斟酌的從網(wǎng)上買相關的硬件,并嘗試的自己連接,經(jīng)過網(wǎng)上查閱資料和詢問老師和同學,我成功的把個硬件模塊連接成功。</p><p> 但是到下面的軟件使用,和程序編程,我再次遇到了難題,面對新的開發(fā)環(huán)境,我不知所措,我只有和賣家溝通,和同學交流,花了很長的時間才基本學會他的使用和下載方法,在編程方面,我也不是
97、很懂,自己從簡單的程序開始編寫下載,不懂的就問同學和老師,經(jīng)過20幾天的努力,程序成功的出來了,剩下的就比較簡單了,把硬件和軟件結合起來,再通過軟件IAR進行調(diào)試就可以了。</p><p><b> 參考文獻</b></p><p> 1. 海濤,鄒鳴,駱武寧,陳明媛.基于ATmega單片機的DS18B20溫度采集系統(tǒng)[J].通信與信息技術,2010,1(14)。
98、</p><p> 2.吳卻,廖力清.一種基于Zigbee的智能家居無線傳感器網(wǎng)絡的設計[J].桂林航天工業(yè)高等??茖W校學報,2010年,4月。</p><p> 3.鐘雄林.基于ARM9的無線智能家居控制系統(tǒng)[J].信息科技,2010年,9月。</p><p> 4.高雨明.淺析Zigbee無線傳輸技術及其應用[J]. 信息與電腦,2010年,8月。<
99、/p><p> 5.楊浩杰,韓秀玲.一種智能家居監(jiān)控系統(tǒng)的設計[J].微型電腦應用,2011年,4月。</p><p> 6.高守瑋,吳燦陽.zigbee技術實踐教程[m].北京航空航天大學出版社,2009,6 。</p><p> 7.黃磊,付菲閔,華松.基于zigbee技術的智能家居方案研究[j].2009。</p><p> 8.余
100、冰,趙柯.基于zigbee的智能家居遠程控制系統(tǒng)[j].電子設計應用,2009,8。</p><p><b> 附錄A:元器件</b></p><p> 元器件名稱 元器件個數(shù)</p><p> ZigBee cc2530模塊 2個</p><p> L2
101、98N電機驅(qū)動 1個</p><p> 12伏小風扇 1個</p><p> 升壓模塊 1個</p><p> DS18b20溫度傳感器 1個</p><p> 4.5伏電源盒
102、 2個</p><p> 6伏電源盒 1個</p><p> 導線 若干</p><p><b> 附錄B:源程序</b></p><p> #include <hal_lcd.h>
103、</p><p> #include <hal_led.h></p><p> #include <hal_joystick.h></p><p> #include <hal_assert.h></p><p> #include <hal_board.h></p>&l
104、t;p> #include <hal_int.h></p><p> #include "hal_mcu.h"</p><p> #include "hal_button.h"</p><p> #include "hal_rf.h"</p><p> #
105、include "util_lcd.h"</p><p> #include "basic_rf.h"</p><p> #include "ds18b20.h" </p><p> #include <stdio.h></p><p> #include &l
106、t;string.h></p><p> /***********************************************************************************</p><p> * CONSTANTS</p><p><b> */</b></p><p>
107、 // Application parameters</p><p> #define RF_CHANNEL 25 // 2.4 GHz RF channel</p><p> // BasicRF address definitions</p><p> #define PAN_ID 0
108、x2007</p><p> #define SWITCH_ADDR 0x2520</p><p> #define LIGHT_ADDR 0xBEEF</p><p> #define APP_PAYLOAD_LENGTH </p><p> #define LIGHT_TOG
109、GLE_CMD </p><p> // Application states</p><p> #define IDLE </p><p> #define SEND_CMD </p><p> #define ARRAY_SIZE(arr
110、) (sizeof(arr) / sizeof(arr)[0])</p><p> //#define FLOAT_TEMP </p><p> // Application role</p><p> #define NONE </p><p> #define
111、SWITCH </p><p> #define LIGHT </p><p> #define APP_MODES </p><p> #define DCOUT P1_0 </p><p> #define j
112、ia_su P0_7 </p><p> #define jian_su P0_4 </p><p> #define ting_zhi P1_3 </p><p> #define CYCLE 100 </p><p> unsigned char PWM_ON=50; <
113、/p><p> unsigned char wen_du=0;</p><p> unsigned char dofly_DuanMa[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0XBF};</p><p> unsigned char dofly_WeiMa[4]={0xef,0xdf,0xbf
114、,0x7f}; </p><p> char fa_flag=0;</p><p> uint8 appMode = LIGHT; </p><p> typedef unsigned char uchar;</p><p> typedef unsigned int uint;</p><p> /***
115、********************************************************************************</p><p> * LOCAL VARIABLES</p><p><b> */</b></p><p> static uint8 pTxData[APP_PAYLOAD_
116、LENGTH];</p><p> static uint8 pRxData[APP_PAYLOAD_LENGTH];</p><p> static basicRfCfg_t basicRfConfig;</p><p> // Mode menu</p><p> static menuItem_t pMenuItems[] =&
117、lt;/p><p><b> {</b></p><p> #ifdef ASSY_EXP4618_CC2420</p><p> // Using Softbaugh 7-seg display</p><p> " L S ", SWITCH,</p><p>
118、 " LIGHT ", LIGHT</p><p><b> #else</b></p><p> // SRF04EB and SRF05EB</p><p> "Switch", SWITCH,</p><p> "Light", LIG
119、HT</p><p><b> #endif</b></p><p><b> };</b></p><p> static menu_t pMenu =</p><p><b> {</b></p><p> pMenuItems,</
120、p><p> N_ITEMS(pMenuItems)</p><p><b> };</b></p><p> #ifdef SECURITY_CCM</p><p> // Security key</p><p> static uint8 key[]= {</p><
121、;p> 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,</p><p> 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,</p><p><b> };</b></p><p><b> #endif</b><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機溫控風扇轉(zhuǎn)速的設計畢業(yè)設計
- 畢業(yè)設計---無線壁掛爐溫控器設計
- 溫控電風扇畢業(yè)論文
- 電風扇畢業(yè)設計
- 爐溫控制畢業(yè)設計畢業(yè)設計
- 智能溫控調(diào)速電風扇畢業(yè)論文
- 基于單片機的溫控風扇設計畢業(yè)論文
- 紅外遙控風扇畢業(yè)設計
- 風扇畢業(yè)論文--基于51單片機的智能溫控風扇
- [畢業(yè)論文]溫控自動風扇系統(tǒng)論文
- 畢業(yè)論文(設計)基于單片機的溫控風扇的設計
- 畢業(yè)論文(設計)基于單片機的溫控風扇的設計
- 畢業(yè)論文--基于單片機的溫控風扇的設計
- 基于單片機的智能溫控風扇設計-畢業(yè)論文
- 單片機溫控畢業(yè)設計
- 畢業(yè)設計--基于單片機的無線風扇遙控系統(tǒng)設計與實現(xiàn)
- 智能電風扇的畢業(yè)設計
- cpu風扇的控制畢業(yè)設計
- 數(shù)字電風扇畢業(yè)設計---電風扇控制電路設計
- 畢業(yè)設計電風扇搖頭機構設計
評論
0/150
提交評論