找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 12513|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

基于STC單片機(jī)的藍(lán)牙臺(tái)燈制作 帶源碼 原理圖

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
本帖最后由 橙子不灑脫 于 2017-5-16 16:04 編輯

模電&數(shù)電——卡通臺(tái)燈復(fù)活記

       大學(xué)生活離不開宿舍生活,而宿舍生活又離不開屬于自己的照明設(shè)備。有了它,才可以在熄燈之后的宿舍里繼續(xù)如魚得水。在剛進(jìn)入大學(xué)校園的時(shí)候,母親就給我買了一個(gè)卡通臺(tái)燈,外觀如圖1所示。
                                                   
圖1 臺(tái)燈外觀
此款臺(tái)燈的照明部分由21個(gè)草帽型白發(fā)白高亮LED并聯(lián)構(gòu)成,亮度勉強(qiáng)但是沒有亮度調(diào)整功能,在不同情況下亮度一致有些不盡人意。內(nèi)置鋰電池以及220v直插式充電電路以及充電時(shí)亮起的指示燈。燈的亮滅靠小人腹部的自鎖開關(guān)控制。常有這樣的情況發(fā)生:有光線上床方便,但爬到上鋪卻才想起沒有關(guān)臺(tái)燈,只好下床關(guān)燈在摸黑上床。雖有種種不便,使用久了反倒也習(xí)慣了�?墒蔷驮谇安痪玫囊淮纬潆姇r(shí),插頭插入插座的瞬間外殼內(nèi)發(fā)出“呲啦”聲響,接著LED板短暫的發(fā)出異常亮度接著熄滅。見狀我迅速將其拔出插座,嘗試著按下開關(guān)后LED沒有正常亮起,再次插入插座后充電指示燈也沒有正常亮起,疑似損壞。拆開外殼取出電路板以及電池,發(fā)現(xiàn)充電電路為容阻降壓電路,實(shí)物如圖2所示。


圖2 降壓板實(shí)物     
容阻降壓電路利用電容在一定的交流信號(hào)頻率下產(chǎn)生的容抗來限制最大工作電流,通常用于低成本取得非隔離的小電流電源,電路原理如圖3所示。



圖3 容阻降壓電路     
它的輸出電壓通�?稍趲追饺龓资瑢�(shí)際數(shù)值取決于所使用穩(wěn)壓管的參數(shù),所能提供的電流大小正比于限流電容容量。但是仔細(xì)分析此臺(tái)燈電路,只包括用于整流的四個(gè)二極管,降壓作用的無極性電容,以及并聯(lián)在電容兩端,用于拔掉插頭后對(duì)電容盡快放電的放電電阻,卻并沒有發(fā)現(xiàn)穩(wěn)壓管的蹤影。如果輸入端電壓高于220v,后端電壓也會(huì)隨之升高,可能會(huì)損壞后級(jí)電路。與此同時(shí),插入插座瞬間有浪涌電壓產(chǎn)生,也可能會(huì)損壞后級(jí)電路,所以應(yīng)該加入浪涌抑制電路,但此電路也沒有包括,由此判斷電壓是損壞電路的主要元兇。隨即拆下LED板,發(fā)現(xiàn)所有并聯(lián)在一起的LED全部燒毀。到此,我打消了維修的欲望,打算將它丟掉重買自認(rèn)倒霉。就在我將各部分殘骸聚攏時(shí),我看到了桌子上的一枚三腳管,拿起定神一看,這不是老師前幾天才講過的三端穩(wěn)壓芯片7805么,如果用它來作為輸出穩(wěn)壓,效果會(huì)好很多,增加調(diào)光以及無線控制功能也不是不可能。這么想著,我打開了我的元件箱……一陣頭腦風(fēng)暴后,我發(fā)現(xiàn)我的臺(tái)燈不但有救,還可以來個(gè)華麗大升級(jí)。
先來說說無線控制的實(shí)現(xiàn)。無線傳輸方式有很多種,我根據(jù)它們的主要特點(diǎn)對(duì)比列出了表格,見圖4。

圖4 常用無線通訊技術(shù)的對(duì)比     
                                                      
由表可以看出,藍(lán)牙無線通訊是DIY的不二選擇。價(jià)格對(duì)比其他幾種設(shè)備相對(duì)低廉,技術(shù)成熟且資料豐富。另一方面,藍(lán)牙技術(shù)最初由電信巨頭愛立信公司于1994年創(chuàng)制,當(dāng)時(shí)是作為RS232數(shù)據(jù)線的替代方案,所以藍(lán)牙天生跟串口有著密切的關(guān)系。配對(duì)以后的藍(lán)牙串口模塊可以當(dāng)作半雙工串口使用,無需了解任何藍(lán)牙協(xié)議,但僅支持8位數(shù)據(jù)位、1位停止位、無奇偶校驗(yàn)的通信格式,不支持其他格式。不過這也是最常用的通信格式�?梢哉f只要熟悉串口通信,就可以使用藍(lán)牙串口模塊實(shí)現(xiàn)無線控制了。順帶一提,藍(lán)牙模塊分為主機(jī)模塊、從機(jī)模塊、主從一體模塊,主機(jī)模塊只能配對(duì)從機(jī)模塊,主機(jī)模塊之間不能配對(duì)連接,主機(jī)模塊也不能跟帶藍(lán)牙的電腦或者手機(jī)等其他藍(lán)牙設(shè)備配對(duì)。從機(jī)模塊可以跟帶藍(lán)牙的電腦或者帶藍(lán)牙的手機(jī)配對(duì)使用,從機(jī)模塊之間也不能連接。因?yàn)檫@里僅僅要用手機(jī)的藍(lán)牙連接臺(tái)燈,所以選擇從機(jī)模塊。我選用的模塊型號(hào)為HC-06,外觀如圖5所示。

圖5 藍(lán)牙模塊外觀     
                 
模塊TXD連接到單片機(jī)RXD,RXD連接到單片機(jī)TXD,接著就像串口一樣使用了。其中STA為L(zhǎng)ED狀態(tài)引出腳,單片機(jī)可通過STA引腳狀態(tài)判斷藍(lán)牙是否已經(jīng)連接,LED閃爍表示沒有連接,常亮表示藍(lán)牙已連接并打開了端口。EN為使能腳,懸空或接高時(shí)使能,使能就是當(dāng)被外部拉低時(shí)關(guān)閉模塊電源以節(jié)省電能(電流消耗<20uA),這兩個(gè)引腳這里用不到,只做固定作用。

  接下來說供電方式,我打算去掉鋰電池改為直插電源的形式,正在學(xué)的模電書告訴了我怎么做,如圖6。

圖6 7805典型電路
這么經(jīng)典的電路,自然不用多說什么,就是在7805輸出端上串聯(lián)了一個(gè)自鎖開關(guān)與臺(tái)燈本身的開關(guān)相呼應(yīng),并且在輸出端與地之間并聯(lián)一個(gè)LED跟電阻作為電源指示燈,給原來的充電指示燈一個(gè)新的任務(wù)。由于功率不大,7805的溫度并不高,所以未加裝散熱片。為了迎合臺(tái)燈外殼的形狀以便安裝,我把洞洞板裁成條形,并以條形排列焊接。為方便調(diào)試,接口處使用二端接線柱連線,焊接的實(shí)物如圖7所示。
     
圖7 7805焊接實(shí)物圖
外殼內(nèi)唯一有可能安裝變壓器的空間就是原本安裝鋰電池的位置,我找遍了手頭上所有的變壓器,最后終于在一個(gè)小音響套件里找到了一個(gè)寬度跟鋰電池差不多的9V變壓器,安裝效果如圖8所示。
     
圖8 安裝變壓器
變壓器的220V輸入線從原本插頭的位置穿過,用熱熔膠固定,裸露的線纜全部用熱縮管保護(hù)。
接下來到了整個(gè)電路的核心控制單元了,是誰解讀藍(lán)牙模塊不斷送來的枯燥信號(hào)?又是誰日夜恪盡職守為我們關(guān)閉或開啟臺(tái)燈?沒錯(cuò)!它就是那大名鼎鼎的單片機(jī)。今天我們請(qǐng)來的這位單片機(jī)先生是STC公司旗下的12C4052AD。別看它身材嬌小,干起活來可絕不馬虎,串口中斷的本領(lǐng)可以讓它不錯(cuò)過藍(lán)牙模塊傳來的每一個(gè)消息,PWM(脈寬調(diào)制)的絕活可以使臺(tái)燈不僅具有開或者關(guān)兩種狀態(tài),還可以根據(jù)我們的需要調(diào)整出不同的亮度。脈寬調(diào)制可以理解為:在一個(gè)固定周期內(nèi),產(chǎn)生時(shí)長(zhǎng)不同的高低電平,通過不同時(shí)長(zhǎng)比例的組合,在原本兩種狀態(tài)中間構(gòu)建出一個(gè)線性變化,然后取出你要的比例值,如圖9。


  圖9 圖解PWM
通過PWM功能,我們就可以通過單片機(jī)控制臺(tái)燈的亮度。天生愛偷懶的我好想直接把LED燈板直接連在單片機(jī)的PWM引腳上,但是這樣做會(huì)要了單片機(jī)先生的命�。∫�?yàn)椴还苁抢娏鞯姆绞竭€是灌電流的方式驅(qū)動(dòng)這21個(gè)LED都是強(qiáng)人所難,就算單片機(jī)先生拿出強(qiáng)推挽模式的雄心還是有點(diǎn)牽強(qiáng)了,所以我們找一個(gè)三極管來幫幫它。這款單片機(jī)有兩個(gè)固定的PWM引腳,隨便選擇一個(gè)用限流電阻接到三極管的基極,就可以控制LED燈板的亮滅以及亮度啦。不過三極管控制的是7805輸出的5v電壓,為防止5v的電壓燒毀LED燈板,在三極管的發(fā)射極串聯(lián)了一個(gè)正偏的二極管,它會(huì)帶來0.7v的壓降,再加上電路中別處的壓降,LED就很安全了。同時(shí)電路中可能會(huì)存在雜波造成各種未知的影響,所以我們?cè)陔娐分胁⒙?lián)一個(gè)104濾波電容。我想讓藍(lán)牙模塊可以隨意插拔方便調(diào)試,所以用排插跟控制板連接,焊接完成的電路如圖10所示。


  圖10 單片機(jī)焊接實(shí)物圖
到此,所有的電路部分都已經(jīng)結(jié)束,完整的電路圖如圖11所示


圖11 完整電路圖
其中D3就代表LED燈板,特別說明的是,因?yàn)橛玫剿{(lán)牙串口通訊,所以晶振頻率是11.0592MHz,用12.000MHz的代替會(huì)出錯(cuò)。按照電路的大小對(duì)臺(tái)燈外殼進(jìn)行了最后的修整,最終的效果如圖12所示。



圖12 裝入外殼
最后來說說軟件部分跟手機(jī)app的部分。程序的主要用處就是接收藍(lán)牙的數(shù)據(jù),然后設(shè)置對(duì)應(yīng)的PWM值。首先初始化串口和PWM:
void UART_PWM_init (void){

     EA = 1; //允許總中斷

     ES = 1; //允許UART串口的中斷


     TMOD = 0x20;  //定時(shí)器T/C1工作方式2

     SCON = 0x50;  //串口工作方式1,允許串口接收

     TH1 = 0xFD;   //定時(shí)器初值高8位設(shè)置

     TL1 = 0xFD;   //定時(shí)器初值低8位設(shè)置

     TR1 = 1; //定時(shí)器啟動(dòng)  

/************/  

     CMOD=0x02; //設(shè)置PCA定時(shí)器

     CL=0x00;

     CH=0x00;

     CCAPM0=0x42; //PWM0設(shè)置PCA工作方式為PWM方式

     CCAP0L=0x00;//設(shè)置PWM0初始值與CCAP0H相同

     CCAP0H=0x00;// PWM0初始時(shí)為0

     CR=1; //啟動(dòng)PCA定時(shí)器

}


當(dāng)串口中斷觸發(fā)時(shí),根據(jù)接收的數(shù)據(jù)設(shè)置對(duì)應(yīng)的PWM值:
void UART_R (void) interrupt4  using 1{ //切換寄存器組到1
unsigned char UART_data; //定義串口接收數(shù)據(jù)變量
RI = 0;            //令接收中斷標(biāo)志位為0(軟件清零)
UART_data = SBUF;  //將接收到的數(shù)據(jù)送入變量 UART_data
if(UART_data == 'U'){if(LD !=255){Ch = 1;LD = LD + 51; }}//串口接收到大寫字母U,增加亮度,51*5=255 即5級(jí)調(diào)光
if(UART_data == 'D'){if(LD !=0){Ch = 1;LD = LD - 51; }}  //串口接收到大寫字母D,減少亮度
if(UART_data == 'F'){if(LD !=0){Ch = 1;LD = 0; }}        //串口接收到大寫字母F,改變亮度為0 即關(guān)燈
if(UART_data == 'O'){if(LD !=255){Ch = 1;LD = 255; }}    //串口接收到大寫字母O,改變亮度為255 即開燈
}
其中LD即為要設(shè)置的PWM值,范圍0—255,0為關(guān)燈,255為最亮,現(xiàn)在還需要一個(gè)PWM設(shè)置程序:
void PWM0_set (unsigned chara){
     CCAP0L= a; //設(shè)置值直接寫入CCAP0L
     CCAP0H=a; //設(shè)置值直接寫入CCAP0H
}
各老大已就位,但群龍無主,依然無法運(yùn)作,這時(shí)主程序出來維持秩序了:
void main (void){
     LD = 153;//初始亮度
     Ch = 0;
     UART_PWM_init();//初始化

     while(1){
     if (CH == 1){//產(chǎn)生變化,送入新的pwm值
              PWM0_set(LD);Ch = 0;} //設(shè)置PWM占空比
     }
}
  單片機(jī)這邊的程序就搞定了,如果你懶得自己寫,我會(huì)在下面上傳源碼。至于手機(jī)的app呢,不需要自己寫,因?yàn)橛泻芏喱F(xiàn)成的藍(lán)牙串口的app可供下載,我用的是一款名為“藍(lán)牙串口”的軟件,圖標(biāo)如圖13所示。
                                             


圖13 藍(lán)牙串口圖標(biāo)
打開app后界面如圖14所示,用手在屏幕上從右向左滑動(dòng)2次,就能看到如圖15的界面。




    圖14 進(jìn)入后的界面                圖15 需要用的界面
可能你看到的沒有圖片上的這些字,沒關(guān)系,這些是我自己設(shè)置的,
長(zhǎng)按任意按鈕,會(huì)彈出這樣的設(shè)置窗口,設(shè)置的方式如圖16所示。


16 設(shè)置方式

按照單片機(jī)程序的規(guī)定,發(fā)送字符U是亮度加,字符D是亮度減,字符O是開燈,字符F是關(guān)燈。按照這樣設(shè)置好,程序會(huì)自動(dòng)保存,你的藍(lán)牙臺(tái)燈遙控就做好了。


    做好了這一切,卻只是個(gè)開始,如果你愿意開動(dòng)腦筋,會(huì)發(fā)現(xiàn)這套系統(tǒng)可以控制很多東西。心動(dòng)不如行動(dòng),讓身邊的東西都互聯(lián)起來,親身感受一下物聯(lián)網(wǎng)時(shí)代的魅力吧!


完整源程序下載 藍(lán)牙臺(tái)燈.zip (13.6 KB, 下載次數(shù): 97)


小橙出品,必屬精品!


請(qǐng)大家多多支持宅曉橙




評(píng)分

參與人數(shù) 3黑幣 +145 收起 理由
2430078927 + 30 贊一個(gè)!
h832ea + 15 贊一個(gè)!
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏12 分享淘帖 頂1 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:136460 發(fā)表于 2017-5-10 11:30 | 只看該作者
資料真不錯(cuò).下載學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

板凳
ID:160690 發(fā)表于 2017-5-13 00:39 | 只看該作者
東北那誰 發(fā)表于 2017-5-10 11:30
資料真不錯(cuò).下載學(xué)習(xí)

一起進(jìn)步~
回復(fù)

使用道具 舉報(bào)

地板
ID:278308 發(fā)表于 2018-1-21 15:41 | 只看該作者
不行啊,我的實(shí)現(xiàn)不了藍(lán)牙功能
回復(fù)

使用道具 舉報(bào)

5#
ID:272625 發(fā)表于 2018-1-24 23:37 | 只看該作者
程序出錯(cuò)

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
zqy181818 + 5 確實(shí)有錯(cuò)的

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

6#
ID:235954 發(fā)表于 2018-1-26 12:49 | 只看該作者
數(shù)據(jù)傳輸不過去啊
回復(fù)

使用道具 舉報(bào)

7#
ID:222006 發(fā)表于 2018-2-9 14:26 | 只看該作者
感動(dòng)的快哭了,代碼都寫好了就差樓主的原理圖了可以動(dòng)手焊了
回復(fù)

使用道具 舉報(bào)

8#
ID:288788 發(fā)表于 2018-3-7 17:02 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

9#
ID:454243 發(fā)表于 2018-12-25 11:27 | 只看該作者
哈哈哈   厲害了  大神啊
回復(fù)

使用道具 舉報(bào)

10#
ID:463178 發(fā)表于 2019-1-6 17:28 | 只看該作者
牛牛
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表