藍(lán)牙透?jìng)鞯拇型ㄐ烹娐吩O(shè)計(jì)研究
時(shí)間:2022-09-16 11:16:51
導(dǎo)語:藍(lán)牙透?jìng)鞯拇型ㄐ烹娐吩O(shè)計(jì)研究一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要:設(shè)計(jì)串行通信電路,實(shí)現(xiàn)手機(jī)藍(lán)牙與基于51單片機(jī)的藍(lán)牙模塊之間的數(shù)據(jù)透?jìng)鞴δ堋T摴δ軐?shí)現(xiàn)的過程是,手機(jī)上的數(shù)據(jù)經(jīng)藍(lán)牙透?jìng)鳠o線通信方式發(fā)送至單片機(jī)開發(fā)板上,單片機(jī)將接收到的8位數(shù)據(jù)顯示在單片機(jī)開發(fā)板的發(fā)光二極管(LED)上,同時(shí)將接收到的數(shù)據(jù)通過藍(lán)牙模塊發(fā)送至手機(jī)App客戶端上,以確認(rèn)發(fā)送數(shù)據(jù)的正確性。
關(guān)鍵詞:藍(lán)牙數(shù)據(jù)透?jìng)?串行異步通信;數(shù)據(jù)交互;51單片機(jī)
藍(lán)牙技術(shù)是基于WPAN(wirelesspersonalareanetwork)的無線網(wǎng)絡(luò)連接技術(shù),可在固定設(shè)備與移動(dòng)設(shè)備之間建立短程收發(fā)連接[1]。它屬于一種短距離通信技術(shù),應(yīng)用前景良好。尤其在智能家具、智能穿戴設(shè)備的設(shè)計(jì)中,操作易行的藍(lán)牙數(shù)據(jù)交互方式受到了消費(fèi)者的青睞[2]。目前,基于MCS-51系列單片機(jī)的產(chǎn)品占有一部分市場(chǎng),與其配套的各類開發(fā)系統(tǒng)和軟件也在不斷完善。本次研究將針對(duì)串行通信電路進(jìn)行設(shè)計(jì),擬實(shí)現(xiàn)基于STC89C52的藍(lán)牙數(shù)據(jù)透?jìng)髋c串行通信功能。
系統(tǒng)涉及硬件部分和電路部分。其中,硬件部分包括手機(jī)用戶端和51單片機(jī)開發(fā)板及藍(lán)牙模塊。電路部分為手機(jī)藍(lán)牙與基于51單片機(jī)的藍(lán)牙模塊通信電路。其設(shè)計(jì)框圖如圖1所示。手機(jī)與藍(lán)牙模塊之間采用無線通信透?jìng)髂J剑畲笸ㄐ啪嚯x為50m。藍(lán)牙模塊與開發(fā)板之間采用串口通信方式。
2藍(lán)牙數(shù)據(jù)透?jìng)鞣绞?/p>
2.1數(shù)據(jù)透?jìng)鞯母拍睢K{(lán)牙透?jìng)骷赐该鱾鬏敚撬{(lán)牙模塊的一種工作方式,一般應(yīng)用于串口模塊雙向通信[3-4]。現(xiàn)有的藍(lán)牙串口透?jìng)髂K可供用戶更好地開發(fā)藍(lán)牙無線傳輸產(chǎn)品,其透?jìng)鲄f(xié)議沒有封裝,不需要處理,也沒有藍(lán)牙底層協(xié)議棧操作要求。用戶可以參考手冊(cè)直接使用硬件提供的API(applicationprograminterface)接口來實(shí)現(xiàn)數(shù)據(jù)透?jìng)鳎恍枰钊氲亓私馑{(lán)牙技術(shù)[5]。2.2藍(lán)牙標(biāo)準(zhǔn)及參數(shù)配置。目前市面上的產(chǎn)品已經(jīng)開始應(yīng)用藍(lán)牙5.0和藍(lán)牙4.2技術(shù)。藍(lán)牙技術(shù)主要應(yīng)用于有較大數(shù)據(jù)吞吐量和抗干擾能力比較強(qiáng)的傳輸場(chǎng)合,如手機(jī)通訊設(shè)備和音頻數(shù)據(jù)傳輸設(shè)備。JDY-10M透?jìng)髂K基于藍(lán)牙4.0標(biāo)準(zhǔn),工作頻段為2.4GHz范圍,具有成本低、功耗小、尺寸小、信號(hào)強(qiáng)、數(shù)據(jù)傳輸穩(wěn)定等特性。相比于之前的低版本模塊,藍(lán)牙4.0版本透?jìng)髂K具有傳輸功耗更低、傳輸距離更遠(yuǎn)、傳輸穩(wěn)定性更好的特點(diǎn)。低功耗藍(lán)牙設(shè)計(jì)的作用,在于用深度睡眠狀態(tài)來代替?zhèn)鹘y(tǒng)藍(lán)牙的空閑狀態(tài)。在深度睡眠狀態(tài)下主機(jī)長(zhǎng)時(shí)間處于超低功耗的循環(huán)狀態(tài),只在需要運(yùn)作時(shí)由核心控制器來啟動(dòng)。因此,這樣的設(shè)計(jì)可實(shí)現(xiàn)低功耗模式[5]。以上低成本、低功耗的優(yōu)點(diǎn),表明JDY-10M透?jìng)髂K比較適用于DIY開發(fā)。AT指令集用于設(shè)置藍(lán)牙模塊參數(shù),可將USB轉(zhuǎn)TTL工具的VCC、GND、TX、RX等接口與藍(lán)牙模塊對(duì)應(yīng)的管腳相連接。用PC機(jī)將藍(lán)牙模塊的傳輸模式設(shè)置為透?jìng)髂J剑涿顓?shù)為:AT+CLAS-SA0(每條命令結(jié)尾+換行符)。因在單片機(jī)串行通信代碼中選用的波特率為4800bps,故需將藍(lán)牙模塊串口通信波特率設(shè)置為4800bps,其命令參數(shù)為:AT+BAUD5。串口助手與藍(lán)牙模塊參數(shù)設(shè)置界面如圖2所示,具體指令可參考JDY-10M組網(wǎng)模塊中文手冊(cè)。
3STC89C52單片機(jī)的串口通信設(shè)計(jì)
STC89C52單片機(jī)是51單片機(jī)的增強(qiáng)型,設(shè)計(jì)中使用STC89C52單片機(jī)作為接收終端。51單片機(jī)內(nèi)部有一個(gè)全雙工串行口[6-7],能同時(shí)接收和發(fā)送數(shù)據(jù)。SBUF寄存器包括2個(gè)物理結(jié)構(gòu)相互獨(dú)立的數(shù)據(jù)接收器、發(fā)送緩沖器,通過指令對(duì)SBUF寄存器的讀寫可同時(shí)發(fā)送和接收,對(duì)應(yīng)的IO口為RXD(P3.0)、TXD(P3.1)。采用異步通信方式,在12MHz晶振頻率下,配置通信波特率為4800bps,寄存器SMOD位為1,即寄存器PCON=0x80倍增。在方式2下,定時(shí)器T1的初值可自動(dòng)重裝載,定時(shí)更加準(zhǔn)確,因此波特率發(fā)生器工作方式選擇T1的方式2。串行通信工作方式選擇波特率可變的方式1,即寄存器SCON=0x50。利用中斷方式編程,串行中斷函數(shù)的方式編程需設(shè)置允許接收,即REN=1。波特率按式(1)來計(jì)算:S=2SMOD32f12(256-X)(1)式中:S為波特率;f為晶振頻率;X為定時(shí)器T1的初值。
4代碼設(shè)計(jì)與實(shí)現(xiàn)
選用普中科技51單片機(jī)開發(fā)板作為數(shù)據(jù)接收的載體,將編寫好的C代碼HEX文件燒寫在STC89C52中。主程序與中斷服務(wù)程序流程如圖3所示,對(duì)應(yīng)的中斷服務(wù)函數(shù)如下:voidUsart()interrupt4{unsignedcharreceive;receive=SBUF;//將接收SBUF接收到的數(shù)據(jù)傳給變量receiveRI=0;//消除接收中斷標(biāo)志位數(shù)據(jù)P2=receive;//請(qǐng)收到的數(shù)據(jù)賦值給P2的LEDSBUF=receive;//將接收到的數(shù)據(jù)傳給發(fā)送SBUFwhile(!TI);//等待發(fā)送完畢TI=0;//發(fā)送中斷標(biāo)志位清零,為下次發(fā)送作準(zhǔn)備}通過串口調(diào)試助手,先將藍(lán)牙模塊配置設(shè)為數(shù)據(jù)透?jìng)髂J剑ㄌ芈蕿?800bps。然后,將藍(lán)牙模塊與MCS51單片機(jī)的對(duì)應(yīng)管腳相連,進(jìn)行硬件搭建。在搭建好的硬件上,通電,打開手機(jī)藍(lán)牙測(cè)試App,搜索藍(lán)牙模塊,點(diǎn)擊配對(duì)。這時(shí),界面會(huì)顯示藍(lán)牙模塊的MAC地址和狀態(tài)已連接。選擇十六進(jìn)制發(fā)送,輸入十六進(jìn)制數(shù)55,點(diǎn)擊發(fā)送。此時(shí),可以在開發(fā)板上看到0x55在LED上的顯示效果。同時(shí),在App接收界面會(huì)收到單片機(jī)返回的十六進(jìn)制數(shù)55,以確認(rèn)發(fā)送數(shù)據(jù)的正確性。由此實(shí)現(xiàn)藍(lán)牙數(shù)據(jù)透?jìng)骱痛谕ㄐ诺墓δ埽鋵?shí)測(cè)效果如圖4所示。
5調(diào)試及分析
設(shè)置藍(lán)牙模塊參數(shù),默認(rèn)波特率為115200,發(fā)送命令A(yù)T+BAUD,確認(rèn)波特率為4800bps。當(dāng)設(shè)置完成后,需要重啟藍(lán)牙模塊。串行編程中,波特率是否需要倍增,可先將SMOD設(shè)為0,用式(1)計(jì)算后確定。當(dāng)初值X得出小數(shù)X.5的形式時(shí),就需要倍增,倍增后定時(shí)器的初值約等于整數(shù);否則,單片機(jī)接收到的數(shù)據(jù)為誤碼,不能被LED正確顯示,也不能被手機(jī)客戶端正確接收。6結(jié)語針對(duì)STC89C52單片機(jī)進(jìn)行串行通信電路設(shè)計(jì),實(shí)現(xiàn)了藍(lán)牙透?jìng)鞴δ堋1敬卧O(shè)計(jì)中,可將手機(jī)上的數(shù)據(jù)經(jīng)藍(lán)牙透?jìng)鳠o線通信方式發(fā)送至STC89C52單片機(jī)上,并通過LED顯示接收到的8位數(shù)據(jù);同時(shí),單片機(jī)將串口接收到的數(shù)據(jù)通過藍(lán)牙模塊返回至手機(jī)App客戶端上,以確認(rèn)發(fā)送數(shù)據(jù)的正確性。
參考文獻(xiàn)
[1]張凌,姚萌.藍(lán)牙通信過程解析與研究[J].計(jì)算機(jī)應(yīng)用研究,2002(9):146-150.
[2]汪振飛,劉軍.基于藍(lán)牙技術(shù)的單片機(jī)與計(jì)算機(jī)無線通信系統(tǒng)[J].科技創(chuàng)新導(dǎo)報(bào),2007(35):11-12.
[3]王東波,秦會(huì)斌,董勝奎.基于MCS-51和藍(lán)牙的家庭智能照明系統(tǒng)設(shè)計(jì)[J].無線互聯(lián)科技,2013(7):199-200.
[4]張文海.基于物聯(lián)網(wǎng)的智能家居安防系統(tǒng)設(shè)計(jì)[D].西安:西安電子科技大學(xué),2015:1-5.
[5]馬建倉,羅亞軍,趙玉亭.藍(lán)牙核心技術(shù)及應(yīng)用[M].北京:科學(xué)出版社,2003:2-8.
[6]馬忠梅,籍順心,張凱,等.單片機(jī)的C語言應(yīng)用程序設(shè)計(jì)[M].4版.北京:北京航空航天大學(xué)出版社,2007:193-197.
[7]邱春玲,李肅義,張春生,等.單片機(jī)與嵌入式系統(tǒng)基礎(chǔ)[M].北京:機(jī)械工業(yè)出版社,2016:100-112.
作者:朱艷生 劉金亭 武文杰 陳旺 單位:1.重慶郵電大學(xué)移通學(xué)院通信與物聯(lián)網(wǎng)工程學(xué)院 2.西華師范大學(xué)電子信息工程學(xué)院