我要實(shí)現(xiàn)的功能就是能用我手機(jī)控制電源的通、對(duì)家里的電器的開(kāi)關(guān)進(jìn)行控制。(目前只是內(nèi)網(wǎng)操作)
1.首先是藍(lán)牙APP
易安卓編寫(xiě)的,說(shuō)編寫(xiě)其實(shí)我只是修改了其中的一些內(nèi)容,主要的部分都是通過(guò)視頻學(xué)習(xí)的,不過(guò)我已經(jīng)懂得了那些命令,(后面有工程文件,如果不懂,可以去找易錦老師的視頻來(lái)看,如果找不到,我這存的有),兩張界面和代碼截圖,非常簡(jiǎn)單,功能也很簡(jiǎn)單,程序前后修改了兩個(gè)主要地方,主要原因是測(cè)試的時(shí)候發(fā)現(xiàn)第一種程序會(huì)出現(xiàn)錯(cuò)誤,在單片機(jī)哪里會(huì)仔細(xì)說(shuō)明!
操作界面,很簡(jiǎn)單,打開(kāi)之后打開(kāi)藍(lán)牙,然后點(diǎn)擊搜索設(shè)備,找到你的模塊名字,點(diǎn)擊之后就可以連接了,連接之后下面會(huì)顯示藍(lán)牙的名稱(chēng)和地址信息。這個(gè)是編程軟件中顯示的界面,可能和在手機(jī)上面運(yùn)行的不一樣,因?yàn)橛行〇|西是非可視的,不過(guò)不影響,這反而能讓我們知道更多的細(xì)節(jié)。
2.單片機(jī)程序
這個(gè)程序也很簡(jiǎn)單,只要學(xué)過(guò)一些單片機(jī)程序的人應(yīng)該都知道吧,串口通信,設(shè)置好通信的波特率,初始化工作做好,然后在串口中斷程序里寫(xiě)上你要做的事情就可 以了,這里雖然說(shuō)11.0592的晶振定時(shí)器初值為fd,但是如果用12m的晶振也是可以的,差距不多,沒(méi)有問(wèn)題。(說(shuō)的不怎么專(zhuān)業(yè),我也不是很專(zhuān)業(yè)的 人,所以請(qǐng)大神誤噴,見(jiàn)笑了?。┻@里是修改前后的程序不一樣的地方,前面的程序是單片機(jī)沒(méi)接收到數(shù)據(jù)之后讀取前一次的IO狀態(tài),然后改變其狀態(tài),但是測(cè)試 的時(shí)候發(fā)現(xiàn)讀取狀態(tài)有錯(cuò)誤,估計(jì)是我的電路有問(wèn)題,第一個(gè)繼電器可以正常工作,第二個(gè)和第三個(gè)都有問(wèn)題,當(dāng)?shù)谝粋€(gè)關(guān)閉的時(shí)候可以打開(kāi),但是當(dāng)打開(kāi)的了卻不 能關(guān)閉,只能用關(guān)閉所有的命令來(lái)關(guān)閉,(找了一下午也沒(méi)發(fā)現(xiàn)問(wèn)題,元件換了幾個(gè)都沒(méi)找到,后來(lái)放棄了),后來(lái)就換了后面程序,直接發(fā)送狀態(tài)命令,不用判斷 當(dāng)前的狀態(tài)了,我覺(jué)得后面這種可能更好!而且實(shí)際測(cè)試的時(shí)候也可以,沒(méi)有問(wèn)題。(補(bǔ)充一下,我發(fā)現(xiàn)12M的晶振不能用11.0592M的數(shù)據(jù),原因是定時(shí) 器計(jì)數(shù)產(chǎn)生的波特率與9600差距有點(diǎn)大,誤差到達(dá)了8.5%左右,理論上誤差要小于4%才能正常通信,所以通信有錯(cuò)誤,雖然能通信,但是數(shù)據(jù)不對(duì),后來(lái) 我把晶振換回來(lái)就可以了,看來(lái)要實(shí)踐才知道真理。)
第 一、二張是修改之前的程序,有問(wèn)題,最后一張是修改之后的,沒(méi)有問(wèn)題,后來(lái)仔細(xì)想了一下,后面一種才是正確的,前面一種的改變狀態(tài)可能會(huì)出現(xiàn)錯(cuò)誤,就是手 機(jī)上顯示的開(kāi)關(guān)是關(guān)的,然而實(shí)際電路中的電路是開(kāi)著的(這也是沒(méi)有數(shù)據(jù)回傳的原因吧,現(xiàn)在只是單向的手機(jī)發(fā),模塊接的形式,以后再研究)!,但是后面一種 不會(huì)出現(xiàn)這個(gè)問(wèn)題!
3.實(shí)物電路連接
我也是在測(cè)試,所以先用LED 等來(lái)代替繼電器輸出,然后才用到繼電器上面。單片機(jī)直接放在我做的最小系統(tǒng)版上面,然后用導(dǎo)線(xiàn)來(lái)連接到藍(lán)牙開(kāi)關(guān)的小板子上,等測(cè)試無(wú)誤之后再安裝在上面,不然不好寫(xiě)程序上去。輸出接的是一個(gè)小電機(jī),用的一個(gè)12v蓄電池代替220V電源,如果要用220V的電源,要注意安全了!提醒一下,絕緣一定要做好,畢竟不是開(kāi)玩笑的。簡(jiǎn)單說(shuō)一下電路連接,首先你得需要焊接一個(gè)51單片機(jī)最小系統(tǒng)板,(如果這個(gè)都不會(huì),那你需要先學(xué)習(xí)一下,不然肯定是沒(méi)辦法做的)然后是由三極管驅(qū)動(dòng)繼電器的電路,記得加二極管,不然三極管很有幾率被擊穿,最后是藍(lán)牙模塊與單片機(jī)的連接,電源接好,一般藍(lán)牙模塊都是寬電壓的,所以直接接到5V電源上,與單片機(jī)共用電源,不用什么電壓轉(zhuǎn)換,很方便的,把藍(lán)牙模塊的TX與單片機(jī)的RX連接,就是P3.0那個(gè)引腳,RX接單片機(jī)的TX,就是P3.1那個(gè)引腳,至于繼電器哪里你需要接成常開(kāi)還是常閉的模式就你自己決定了,當(dāng)然還要加一點(diǎn)錄濾波的,因?yàn)槔^電器啟動(dòng)的一瞬間電流很大,擔(dān)心是單片機(jī)死機(jī)!這些就是主要的東西了?。?/p>
前一張是之前測(cè)試用的,后面一張是后來(lái)直接把單片機(jī)裝上去的,看著沒(méi)有那么亂了,可以看到,當(dāng)手機(jī)上的開(kāi)關(guān)23打開(kāi)時(shí),電路板上的燈23也是兩的,表明繼電器已經(jīng)被打開(kāi)了。
4.打完收工,作品完成
好了至此最簡(jiǎn)單的藍(lán)牙開(kāi)關(guān)就做好了,可以躺在床上遙控在遠(yuǎn)處的風(fēng)扇了(好吧你們都用的是空調(diào),當(dāng)我沒(méi)說(shuō)?。?,定時(shí)關(guān)機(jī)(這個(gè)功能沒(méi)做,不過(guò)原理都一樣,自由發(fā)揮了),其他神馬的!感興趣的同學(xué)可以試一下,比如說(shuō)高級(jí)一點(diǎn)的外網(wǎng)控制的,把電腦作為服務(wù)器,把藍(lán)牙模塊接好,和控制器連接起來(lái),然后讓手機(jī)與電腦通過(guò)互聯(lián)網(wǎng)通信,用手機(jī)給電腦發(fā)送指令,再通過(guò)電腦給藍(lán)牙模塊發(fā)送指令,比如提前開(kāi)個(gè)空調(diào)什么的(提前開(kāi)風(fēng)扇沒(méi)用,還是開(kāi)你們的空調(diào)吧),然后其他什么的東西就自己發(fā)揮了!我想這個(gè)應(yīng)該是屬于傳說(shuō)中的最簡(jiǎn)單的物聯(lián)網(wǎng)吧,雖然沒(méi)有那么高大上,但是原理是一樣的。雖然是手動(dòng)控制的,不過(guò)可以發(fā)揮你聰明大腦,讓他自動(dòng)控制??!