摘要
本文利用所學51單片機基礎知識結合自動控制技術和藍牙4.0通信技術、nRF24L01無線技術,設計完成一套兩種不同的上位機控制的無線遙控家電開關系統。本設計詳細地講述了51單片機控制原理和單片機編程技術,HC-05藍牙通信技術、nRF24L01無線技術以及自動化控制技術。整個系統以IAP15F2K61S2單片機為核心,單片機實現HC-05藍牙指令的解析與繼電器開關控制指令的發出。藍牙模塊在整個系統中負責藍牙指令的接收和傳輸;家電開關的自動控制部分采用12路繼電器開關來實現,為了使系統設計簡便,操作演示方便,家用電器部分采用12種LED燈來模擬替代,通過繼電器開關上接的LED燈的亮滅來模擬所控制的電器的開啟和關閉,系統LCD12864液晶實時顯示12種家電開關的開啟與關閉狀態。整個系統設計思路清晰,設計成本較低,具有較高的使用和推廣價值。
基于單片機的藍牙家電開關控制系統設計
(第十四題)
【第四組】
1.系統方案
本系統主要由核心控制模塊、無線模塊、溫度傳感器模塊、顯示模塊、鍵盤模塊、輸出控制模塊、電源模塊組成,下面分別論證這幾個模塊的選擇。
1.1核心控制模塊論證與選擇方案一:采用51系列8位單片機。
51系列單片機價格便宜,編程相對簡單,但I/O口資源緊缺,存儲空間小,響應速度慢,燒寫程序復雜,需專門的下載工具,不支持在線調試。
方案二:采用MSP430系列16位單片機。
MSP430系列單片機功耗低,16位的精簡指令集,8M晶振驅動下125納秒的指令周期,內置JTAG電路,支持Flash在線編程技術,大容量ROM和RAM,能夠存儲大容量程序。當今工業控制向32位處理器ARM發展趨勢日益加快,MSP430 16位處理器相對落后。
方案三:STC15系列單片機,1T STC-Y5 內核,比傳統51系列快6-12倍,并且內部RAM擴大,傳統51為128字節或256字節,它達到了2.25KB,內部高精準可調RC振蕩器,有一個16位自動重載定時器,串口波特率設置更靈活,有片內SPI控制器,速度可達1/4主頻速度,有片內PWM/PCA控制器,可捕獲外部緩沖或者產生PWM,有片內AD,分辨率10位,8通道。
所以綜上方案本系統選擇方案三。
1.2 無線模塊論證與選擇方案一采用NRF24L01無線射頻方式進行遙控控制,采用此方案進行設計具有設計成本低廉,開發難度低等優點,便于推廣和應用;不足之處是發射終端同樣需要單片機進行控制,遠程控制需要隨時隨地攜帶控制設備,同時由于沒有相應的密碼設置,容易被附近同樣頻段的遙控設備誤操作。
方案二采用GSM移動通信網絡的方式進行遠程控制,系統通過手機遠程發送短信的模式實現家用電器的開啟和關閉采用此方案進行設計具有操作靈活,不用攜帶額外控制器即可遠程控制,同時控制不受距離限制的優點;不足之處是開發難度大,設計成本相對較高,通過手機短信進行控制需要繳納一定的通信費用,在一些低端的住宅場合推廣具有一定的難度。
方案三采用手機藍牙終端進行遙控控制,系統通過手機藍牙實現家用電器開關的遙控開啟和關閉,采用此方案進行設計具有控制方便靈活,不用額外攜帶控制設備即可實現家用電器的開啟關閉的操作,同時藍牙遙控具有密碼匹配在操作安全性上有很好的保證,同時又不需要緝拿相應的通信費用。
通過以上三種方案的比較和分析論證,在當今人們追求生活便利作為主要目的的環境下,方案一雖然成本相對低廉,但是由于受制于安全性和操作的便利性,不過我們介于學習中的狀態完全可以加入我們的設計中,因而在三種設計方案進行對比后,首先選擇方案一。方案二和方案三是目前家電開關無線控制系統最好的兩種方案,兩種方案各有千秋,方案三相比方案二開發難度低,開發周期短,推廣相對容易,方案二由于需要借助于移動通信網絡進行遠程控制,因而需要收取一定的通信資費,同時一單手機停機會造成無法遙控控制的情況。鑒于以上三種方案的對比,本文最終選擇方案一、方案三作為整個系統的設計方案。
1.3溫度傳感器模塊選擇與論證方案一采用模擬溫度傳感器AD590,轉換結果需要經過運算放大器和AD轉換器傳送給處理器。它控制雖然簡單,成本低,但是后續電路復雜,且需要進行溫度標定,集成溫度傳感器AD590輸出為電流信號,且輸出信號較弱,所以需要后續放大及A/D轉換電路,如采用普通運放則精度難以保證,而測量放大器價格較高,這樣會使成本升高。
方案二采用了數字溫度傳感器DS18B20,它能在現場采集溫度數據,直接將溫度物理量變換為數字信號并以總線方式傳送到單片機進行數據處理,并且可根據實際要求通過簡單的編程實現9-12位的數字式讀數方式,因此,該方案完全具有可行性,同時體現了技術的先進性,經濟上也有很大的優勢。
綜合上述選擇方案二作為我的上位機采集溫度傳感器。
1.4顯示模塊論證與選擇方案一:采用數碼管顯示。
數碼管顯示清晰,價格較低,性價較高,方便易行,但外部電路復雜,占用I/O口資源較多,顯示信息單一,只能顯示數字和少量字母。動態顯示則需循環刷新數碼管,占用更多的程序儲存空間。
方案二:使用帶中文字庫LCD12864液晶屏顯示。
液晶屏具有顯示質量高,數字式接口,體積小,質量輕,功耗小,顯示內容多,并且帶有漢字庫,能夠顯示漢字、字母、數字、圖形等。
方案三:采用LCD1602顯示,美觀大方,液晶顯示模塊具有體積小、功耗低、顯示內容豐富、超薄輕巧等優點
方案三雖然體積小功耗低,但是方案二都具有方案三的特點,方案二的功能比方案三的功能更強大,所以顯示模塊選擇方案二。
1.5鍵盤模塊論證與選擇方案一:采用矩陣式鍵盤,程序復雜,電路復雜,調試困難,占用I/O資源多。不適合本系統。
方案二:采用獨立按鍵,電路簡單,編程方便,本系統使用按鍵數不多,占用I/O口資源少。
綜上所述:選擇方案二。
1.6輸出控制模塊論證與選擇方案一:采用繼電器,電路簡單,成本較低使用方便,但是有觸點閉合時會產生一定的電弧,壽命在十萬次以上,使用時只能作為開關使用不能起到調光作用。
方案二:采用可控硅,電路簡單,成本低使用方便不僅能作為開關使用還可作為PWM調壓,壽命久合適使用在調光、調速電路。
綜合上述:方案一在系統中只作為簡單的開關使用,方案二作為調速、調光設備使用。
1.7電源模塊論證與選擇由于本系統需要電池供電,我們考慮了如下集中方案為系統供電。
方案一:
采用3節1.5V干電池供電,電壓達到4.5V,給上位機單片機系統和其他芯片供電。這個方案體積小、重量輕、成本低、攜帶方便我們選擇這種方案作為上位機供電。
方案二:
采用220V轉5V的充電頭給主機供電,USB接口給單片機系統和其他芯片供電。出來的電源電流驅動能力以及穩定的電壓輸出性能。這個方案比較合適主機供電,在不經常拿起的情況下使用極為方便,并且充電頭的價格比較低。因此我們選擇了此方案。
方案三:
調試時直接用開關電源,調到12V進行調試。
綜上考慮,我們選擇了方案一作為上位機電源供電、方案二作為主機供電。
2.主機電路與上位機電路、安卓APP設計2.1.1主機總電路圖單片機主機機系統電路為整個系統的控制核心,用于控制這個系統的正常運行,單片機主機系統電路主要有IAP15F2K61S2單片機該芯片內置晶振電路、復位電路,外加 NRF24L01模塊電路,液晶電路、繼電器控制電路、接收指示燈組成。此部分電路圖如圖1所示
圖1 主機總電路圖
2.1.2 NRF24L01上位機總體框圖(見附件)
圖2 上位機設計系統總框圖
2.1.3 NRF24L01上位機總電路圖單片機 NRF24L01上位機系統電路為整個系統的發射控制核心,用于控制這個系統的正常運行,單片機 NRF24L01上位機系統電路主要有IAP15F2K61S2單片機該芯片內置晶振電路、復位電路,外加 NRF24L01模塊電路,DS18B20溫度采集傳感器、鍵盤電路、液晶電路、接收指示燈組成。此部分電路圖如圖3所示。
圖3 NRF24L01上位機總電路圖
2.1.4藍牙上位機軟件框圖
圖4 安卓上位機框架與成果圖
2.1.5主機藍牙通信電路設計系統藍牙通信電路采用HC-05模塊作為核心,加以外圍電路完成系統藍牙通信電路的設計,藍牙部分電路設計如圖5所示。

圖5 HC-05通信模塊電路圖
如圖5所示,U6為系統藍牙通信模塊HC-05模塊,二極管D5、D6和電阻R10、R11組成電平轉換電路以保證系統可以同時在5V和3.3V的電壓下工作,D7為藍牙模塊工作狀態指示燈,其工作狀態有以下三種:一,在模塊上電的同時把BS-KEY引腳設置為高電平(或接到VCC)此時D7以亮一秒滅一秒的頻率慢閃,模塊進入AT狀態,此時波特率為固定的9600。二,在模塊上電的同時把BS-KEY引腳設置為低電平(或接地),此時D7以一秒閃爍2次的頻率快閃,表示模塊進入可配對狀態,如果此時再將BS-KEY引腳電平置高,模塊會進入AT狀態,但是D7的閃爍頻率不變。三,模塊配對成功,此時D7雙閃,一次閃2下,2秒閃一次。系統有了D7指示燈就能夠很直觀的判斷模塊的當前狀態,方便使用。
2.1.6主機藍牙模塊功能測試藍牙模塊電路設計焊接好后,為了保證模塊能夠正常使用,首先要測試一下藍牙模塊收發功能是否正常,具體測試過程如下所述。
首先HC-05模塊通過usb轉TTL模塊連接到電腦串口,連接方式如圖6所示。

圖6藍牙模塊與TTL模塊接線方式圖
HC-05模塊出廠設置為從模式,所以發送AT+ROLE?得到的返回值為+ROLE:0,發送AT+ROLE=1即可設置模塊為主機、具體操作界面如圖7所示。


圖7藍牙模塊測試界面圖
2.1.7 主機家電控制電路設計與原理系統家電控制電路采用12路繼電器控制實現,12路繼電器分別控制飲水機開關、窗簾開關、冰箱開關、風扇開關、大廳燈開關、睡眠燈開關、臥室燈開關、插座1~插座5開關。繼電器控制電路采用弱電控制強電的工作原理,單片機通過控制繼電器的斷開和吸合來控制外接家電的通斷,具體控制電路如圖8所示。

圖8系統家電控制電路圖
如圖8所示,信號口分別接到單片機的IO口上,當單片機輸出低電平的時候繼電器吸合,外部接家電的開關吸合接通,家電啟動工作;當單片機輸出高電平的時候三極管斷開,繼電器外部開關斷開,外接的家電停止工作。考慮到實際的可操作性,以及能夠直觀的分辨出繼電器開發的接通和斷開,外部家電采用LED燈的亮滅來替代,當對應家電的LED燈點亮代表對應家電電源接通,家電處于工作狀態,當對應的LED燈熄滅代表對應的家電電源開關斷開,家電停止工作。
2.1.8 主機與上位機系統顯示電路設計與原理LCD液晶顯示,采用點陣和帶中文字符型 LCD 液晶顯示,液晶顯示模塊具有體積小、功耗低、顯示內容豐富等特點,現在字符型液晶顯示模塊已經是單片機應用設計中最常用的信息顯示器件,但采用LCD液晶顯示會造成設計成本增加。
考慮到為了提高顯示效果,系統選用LCD12864作為顯示部分。LCD12864液晶顯示電路如圖9所示。

圖9系統顯示器件電路圖
2.1.9上位機按鍵電路設計與原理按鍵采用輕觸開關當頁面切換按鍵按下時單片機統計按鍵的次數液晶顯示不同的頁面,同時也通過NRF24L01發送一個相應的信號到主機中讓主機與上位機同步顯示。確定按鍵,按下一次則保存選擇按鍵的數據并且發送相應的數據到主機上控制不同的繼電器開關。選擇按鍵有加也有減、按下按鍵選擇不同的開關信號由確定鍵保存和發送,如下圖所示。

圖10 系統顯示器件電路圖
2.2.0上位機DS18B20電路設計與原理DS18B20數字溫度傳感器是DALLAS公司生產的1—Wire,即單總線器件,具有線路簡單,體積小的特點。因此用它來組成一個測溫系統,在一根通訊線,可以掛很多這樣的樣的數字溫度計,十分方便。 單片機也能直接讀取DS18B20的數據程序也非常簡單。電路如11圖所示。

圖11 DS18B20電路圖
2.2.1接收和發送指示燈電路設計與原理LED指示燈采用共陰極接法,R5與R10為限流電阻,當NRF24L01上位機進入發送函數時P3^6口得到低電平D2亮,否則滅。當主機接收到信號時P4^5得到低電平D8亮,否則滅


圖12接收和發送指示燈電路圖
3.程序的設計3.1系統軟件編程環境介紹系統軟件設計采用C語言編程,編譯環境為Keil。
Keil c51 是美國Keil Software 公司出品的51 系列兼容單片機C 語言軟件開發系統,和匯編相比,C 在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。
Keil c51 軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows 界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil c51 生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發大型軟件時更能體現高級語言的優勢。
Keil C51 可以完成編輯、編譯、連接、調試、仿真等整個開發流程。開發人員可用IDE 本身或其它編輯器編輯C 或匯編源文件,然后分別有C51 及A51 編輯器編譯連接生成單片機可執行的二進制文件(.HEX),然后通過單片機的燒寫軟件將HEX 文件燒入單片機內。軟件主要三個方面:一是初始化系統;二是數據采集;三是數據處理并進行顯示。這三個方面的操作分別在主程序中來進行。程序采用模塊化的結構,這樣程序結構清楚,易編程和易讀性好,也便于調試和修改。
3.2系統主程序流程圖系統主程序主要包括系統的初始化、藍牙串口通信、 NRF24L01通訊、開關狀態的顯示以及信號的輸出控制等,系統主程序流程圖如圖13所示。

圖13 主機程序流程圖
系統主程序流程如圖13所示,當系統上電后首先完成各個組件的初始化,一個系統的初始化是程序運行必不可少的環節,系統初始化部分主要包括:系統的初始化、藍牙串口通信、 NRF24L01通訊、開關狀態的顯示以及信號的輸出控制初始化等;初始化完成以后系統首先要啟動藍牙串口通信模塊,保證藍牙模塊和手機藍牙控制終端完成匹配。單片機通過串口通信的方式實現和藍牙模塊的通信,單片機對藍牙模塊接收到的指令進行解析然后輸出控制指令到繼電器開關,從而實現對家電開關的控制;LCD液晶對12路家電開關的開啟和關閉狀態進行顯示,便于直觀的測試。
3.3系統藍牙通信模塊子程序系統藍牙通信模塊子程序主要完成手機藍牙指令的接收以及和單片機直接的數據通信等,此部分程序的完成是整個系統軟件設計成功與否的關鍵所在。圖14為系統藍牙通信子程序流程圖。
圖14系統藍牙通信子程序流程圖
3.4系統24L01通信模塊子程序圖14系統24L01子程序流程圖
4.測試方案與測試結果4.1測試方案使用自制好的NRF24L01上位機與安卓APP對主機進行測試因為在編程程序時一邊寫一邊調試所以做出來的硬件和程序都沒有任何問題。
硬件測試:核心板子使用完整的IAP15F開發板作為調試主體,使用面包板搭建繼電器電路通過單片機輸出信號對相應的繼電器做開關信號。
4.2 測試條件與儀器測試條件:一臺主機、一臺手機、一臺NRF24L01上位機
儀器: 萬用表、示波器
4.3系統的功能測試與檢驗藍牙遙控測試主要完成12路繼電器的開啟和關閉,為了直觀的看出測試結果,每路繼電器輸出開關上接一個LED指示燈,通過觀察對應繼電器輸出的LED燈的亮滅來測試,具體測試過程如下所述。
手機藍牙發送指令“101”一次繼電器1吸合,LED1點亮,再次發送指令“102”繼電器1斷開,LED1熄滅。
手機藍牙發送指令“103”一次繼電器2吸合,LED2點亮,再次發送指令“104”繼電器2斷開,LED2熄滅。
·
·
·
手機藍牙發送指令“122”一次繼電器12吸合,LED12點亮,再次發送指令“123”繼電器12斷開,LED12熄滅。
NRF24L01也是差不多一樣的模式;
4.4有效距離手機藍牙與主機藍牙有效距離: 最佳距離:30米內
24L01上位機與主機24L01有效距離:最佳距離:100米內
5.總結與分析通過這次畢業設計的制作,鞏固了我在大學3年里學過的知識,尤其是單片機和C語言編程方面的知識,同時也提高了單片機編程的能力,獲得了軟件調試的經驗,并且也了解到了其它相關領域的知識,不論是對今后的工作還是學習都有著極大的幫助。
此次設計完成的作品主要有如下功能和特點:
- 系統能夠實現通過手機藍牙與NRF24L01完成12路家用電器開關的遙控控制;
- 系統可以通過外置顯示終端實時顯示12路開關的開啟和關閉狀態,顯示終端可
以方便直觀的觀察到控制指令的接收和解析是否正確,便于功能的調試。
- 整個系統具有功耗低、操作方便、性能穩定等諸多優點,具有良好
的應用和推廣價值。
同時由于時間倉促,自己經驗不足,在理論方面也相應存在缺陷,在整個系統的設計過程中也存在著一些問題,現總結如下:
1、電子電路的設計中對各種影響因素的考慮不夠完全,比如在對系統電源部分的處理不夠完善,早期系統工作不是很穩定。
2、沒有擴展更多電路,如室內環境監測功能,通訊接口電路與上位機(PC機)進行通訊,上位機顯示功能從而將大量的商品數據存于上位機,然后通過串口或并口通訊與系統相連,達到遠距離監控的目的。
3、對各種實用芯片價格了解不夠,在選擇上有欠缺,如所選的顯示終端價格較貴,從而使設計成本有所提高。
通過此次遠程家電開關控制系統的設計和總結對我今后的學習和工作帶來了積極的影響。
參考文獻
[1] 李朝青.單片機原理及接口技術[M].北京:北京航空航天大學出版社,2005.
[2] 康華光.電子技術基礎模擬部分(第五版) [M].北京:高等教育出版社, 2005.
[3] 閻石.數字電子技術基礎(第四版)[M].北京:高等教育出版社,2005.
[4] 白延敏.51單片機典型系統開發實例精講[M].北京:電子工業出版社,2009.
[5] 張齊,杜群貴. 單片機應用系統設計技術[M]. 北京:電子工業出版社,2007.
[6] 楊金巖等. 8051單片機數據傳輸接口擴展技術與應用實例[M].北京:人民郵電出版社,2005.
[7] 求是科技.單片機通信技術與工程實踐[M].北京:人民郵電出版社,2005.
[8] 郭永貞主編. 數字電子技術[M]. 西安電子科技大學出版社,2000.
[9] 李廣弟. 單片機基礎[M].北京:北京航空航天大學出版社,2001.
[10] 張洪潤. 電子線路與電子技術[M].清華大學出版社[M],2005.
[11] 張齊,杜群貴. 單片機應用系統設計技術[M].電子工業出版社,2004.
[12] Julian W. Gamder, Intelligent Data Acquisition System B, 2005,4:109-115.
[13] Dejie Song, Boxue Tan, Wenfeng Liu. Application of Wireless Communication in Temperature Measurement [J]. Berlin Heidelberg: Springer-Verlag,2011,175(1): 428—433.
[14] Xingrui Liu and Guohong Gao. Temperature Monitoring System Based on AT89C51 [J]. Berlin Heidelberg: Springer-Verlag,2011,105(1): 601—605.
附錄1:電路原理圖
NRF24L01上位機原理圖

主機原理圖
附錄2: 系統硬件實物圖 


附錄3:源程序- /***************主機主程序************************/
- #include "STC15F2K.H"
- #include "intrins.h"
- #include "delay.h"
- #include "io.h"
- #include "api.h"
- #include "shoujie.h"
- #include "12864.h"
- #include "rx_data.h"
- #include "lanya.h"
- /**************************************************
- 函數:main()
- /**************************************************/
- void main(void){
- init_io(); // 初始化IO口
- RX_Mode(); // 設置為接收模式
- LCD_init(); // 初始化液晶
- SerialIni(); // 初始化定時器
- while(1){
- gnenqhuan(); // 藍牙數據處理程序
- RX_MAIN(); // 判斷是否接收到開關數據
- RX_MAIN1(); // 判斷是否接收到溫度數據
- sta = SPI_Read(STATUS); // 讀狀態寄存器
- }
- }
- /***************NRF24L01上位機主程序************************/
- #include "STC15F2K.H"
- #include "intrins.h"
- #include "io.h"
- #include "delay.h"
- #include "18b20.h"
- #include "key.h"
- #define uint unsigned int
- #define uchar unsigned char
- void main(){
- init_io(); //初始化IO
- TX_Mode(TX_BUF); //設置為發送模式
- LCD_init(); //液晶初始化
- while(1){
- fasong(0,0,key_dtat); //發送模式,發送 開關 數據
- fasong(1,1,(tvalue/10)); //發送模式,發送 溫度 數據
- …………
- …………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
1.png (40.55 KB, 下載次數: 60)
下載附件
2018-9-2 17:39 上傳
2.png (8.76 KB, 下載次數: 64)
下載附件
2018-9-2 17:39 上傳
完整的Word格式文檔51黑下載地址(還有源碼與app):