楊敏
一、引言
隨著科技的發(fā)展進(jìn)步和人民生活水平的不斷提高,智能手機(jī)正在飛速發(fā)展。手機(jī)已成為人民生活中的依賴品,它集通信、生活、娛樂于一體,給生活帶來(lái)極大的方便,一機(jī)在手,萬(wàn)物盡在掌握之中。為結(jié)合科技與教學(xué),激發(fā)學(xué)生課堂上的興趣,本文就手機(jī)APP藍(lán)牙控制智能小車實(shí)例介紹,通過(guò)借助手機(jī)APP平臺(tái),運(yùn)用藍(lán)牙技術(shù),實(shí)現(xiàn)用手機(jī)對(duì)小車實(shí)時(shí)遙控完成前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止等動(dòng)作,生動(dòng)形象,有利于促使學(xué)生對(duì)科技與生活結(jié)合的理解,同時(shí)也為生活上的遙控玩具和智能家居的制作提供新的路徑。
二、系統(tǒng)設(shè)計(jì)
(一)設(shè)計(jì)總思路
本設(shè)計(jì)的小車系統(tǒng)以STC89C52單片機(jī)為核心,以手機(jī)APP屏幕界面的按鈕遙控小車的轉(zhuǎn)動(dòng),中間采用藍(lán)牙技術(shù)作為客服端發(fā)送接收數(shù)據(jù),單片機(jī)根據(jù)HC-05為藍(lán)牙接收模塊接收到的數(shù)據(jù)信號(hào)指令進(jìn)行分析處理,輸出對(duì)應(yīng)的指令信號(hào),再由L298驅(qū)動(dòng)電路相應(yīng)的小車電機(jī)正、反轉(zhuǎn),實(shí)現(xiàn)控制小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)和停止等動(dòng)作,同時(shí)顯示電路顯示對(duì)應(yīng)用的動(dòng)作碼。電源提供給單片機(jī)5V直流電,L298需要從外部接兩個(gè)電壓,分給電機(jī)和L298芯片。設(shè)計(jì)總電路結(jié)構(gòu)框架圖如圖1所示。
(二)設(shè)計(jì)功能
本系統(tǒng)能自行設(shè)計(jì)手機(jī)APP,并能借助藍(lán)牙技術(shù)傳輸命令,通過(guò)手機(jī)APP的控件控制小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止等動(dòng)作,實(shí)現(xiàn)了手機(jī)APP與單片機(jī)通過(guò)藍(lán)牙技術(shù)實(shí)現(xiàn)了有機(jī)結(jié)合,操作簡(jiǎn)便有趣。
三、硬件設(shè)計(jì)
(一)單片機(jī)及電機(jī)主電路
本系統(tǒng)以STC89C52單片機(jī)為主控單元,STC89C52單片機(jī)是一種8K字節(jié)可編程可擦除只讀存儲(chǔ)器的微處理器,具有高速、電壓低、功耗低、抗干擾能力強(qiáng)等特點(diǎn)的單片機(jī),簡(jiǎn)單、廉價(jià)、實(shí)用。整個(gè)小車系統(tǒng)采用了4輪驅(qū)動(dòng),使用L298N芯片電機(jī)驅(qū)動(dòng)模塊實(shí)現(xiàn)對(duì)左右兩組電機(jī)的實(shí)時(shí)驅(qū)動(dòng)控制;L298N驅(qū)動(dòng)模塊采用ST公司原裝全新的L298N芯片,具有工藝、穩(wěn)定性高的特點(diǎn),其控制端口共有六個(gè),通過(guò)與單片機(jī)的I/O連接,將接收單片機(jī)I/O口的高低電平信號(hào)即可驅(qū)動(dòng)控制電機(jī)的正、反轉(zhuǎn)以及停止的操作。外圍電路還采用了兩組由4個(gè)二極管組成的橋式整流電路,保證輸出穩(wěn)定的控制電機(jī)的電壓。主電路如圖2所示。
(二)藍(lán)牙模塊
本小車系統(tǒng)的藍(lán)牙模塊采用是HC-05芯片集成模塊,如圖3所示左圖藍(lán)牙接口和右圖HC-05藍(lán)牙模塊。HC-05芯片里已經(jīng)封裝帶有藍(lán)牙協(xié)議,我們?cè)谑褂脮r(shí)只需通過(guò)串口連接就能實(shí)現(xiàn)手機(jī)與51單片機(jī)的無(wú)線通信。該藍(lán)牙模塊有6個(gè)引腳,包括VCC、GND、TXD、RXD,藍(lán)牙模塊的引腳TXD與RXD分別與單片機(jī)的RXD與TXD引腳相連接, VCC和GND分別接電源和地給模塊進(jìn)行供電,控制信號(hào)通過(guò)RXD與TXD數(shù)據(jù)無(wú)線傳輸,手機(jī)與藍(lán)牙模塊配對(duì)連接就可以實(shí)現(xiàn)對(duì)小車的無(wú)線控制。該模塊供電電壓范圍寬為3.3V~5.5V,寬波特率范圍4800~1382400,并且模塊兼容5V/3.3V單片機(jī)系統(tǒng),具有成本低,兼容性好,功耗低等優(yōu)點(diǎn)。
(三)顯示電路
為能較好地判斷出小車工作的狀態(tài),本電路加入顯示電路,采用七段數(shù)碼管顯示。該電路主要用來(lái)顯示電機(jī)控制的顯示碼,根據(jù)顯示碼就能對(duì)應(yīng)知道小車正在運(yùn)行的狀態(tài)。顯示電路如圖4所示。小車運(yùn)行狀態(tài)與顯示代碼對(duì)應(yīng)表如表2所示。
四、軟件設(shè)計(jì)
(一)手機(jī)藍(lán)牙APP開發(fā)軟件
本設(shè)計(jì)采用的手機(jī)APP開發(fā)軟件為廣州市教育信息中心開發(fā)的APP INVENTOR 公共平臺(tái)。該系統(tǒng)平臺(tái)屬免費(fèi)開放平臺(tái),只要打開網(wǎng)址http://app.gzjkw.net/login/進(jìn)行注冊(cè)申請(qǐng)帳號(hào)或使用QQ帳號(hào)即可登陸使用,該平臺(tái)編程采用的是積木式程序開發(fā)編程,可任意開發(fā)各種手機(jī)APP程序,簡(jiǎn)單易用。平臺(tái)上APP的操作主要分組件設(shè)計(jì)和邏輯設(shè)計(jì)二部分,組件設(shè)計(jì)主要是對(duì)用戶界面的控件(如按鈕等)的布局設(shè)計(jì),而邏輯設(shè)計(jì)是對(duì)控件添加上邏輯功能,然后通過(guò)客戶端(如藍(lán)牙)進(jìn)行傳送控制信息數(shù)據(jù),以實(shí)現(xiàn)對(duì)小車的控制操作。最后組件設(shè)計(jì)和邏輯設(shè)計(jì)完成后,再點(diǎn)擊打包APK生成手機(jī)APP二維碼。生成的二維碼就可以下載保存到電腦,或手機(jī)直接安裝。手機(jī)安裝好后,就可以進(jìn)入控制界面,系統(tǒng)用戶登陸界面如圖5所示。
(1)該系統(tǒng)的客戶端開發(fā)主要涉及到客戶端界面的設(shè)計(jì)和邏輯功能代碼的設(shè)計(jì),本小車系統(tǒng)的設(shè)計(jì)組件如圖6所示。
(2)邏輯設(shè)計(jì)如圖7所示。
(二)單片機(jī)程序
本小車系統(tǒng)設(shè)計(jì)的主程序主要是由單片機(jī)的控制實(shí)現(xiàn)的,由手機(jī)藍(lán)牙向藍(lán)牙模塊發(fā)送控制指令信息,單片機(jī)通過(guò)讀取藍(lán)牙模塊輸入的控制信息進(jìn)行存儲(chǔ)和分析,分析完畢后,向驅(qū)動(dòng)電機(jī)模塊發(fā)出控制指令,來(lái)實(shí)現(xiàn)控制電機(jī)驅(qū)動(dòng),控制小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)和停止等動(dòng)作。這個(gè)過(guò)程,先由單片機(jī)進(jìn)行初始化,單片機(jī)不斷對(duì)HC-05藍(lán)牙模塊的串口讀取數(shù)據(jù)信息,如果串口 圖8有數(shù)據(jù)指令發(fā)送,那就單片機(jī)將串口的數(shù)據(jù)讀出,并對(duì)讀出的數(shù)據(jù)信息進(jìn)行分析判斷,再向驅(qū)動(dòng)模塊輸出對(duì)應(yīng)的小車動(dòng)作指令,以驅(qū)動(dòng)小車運(yùn)行。如果讀得的數(shù)據(jù)信息為0x31、0x32、0x33、0x34、0x35,那么對(duì)應(yīng)的小車的運(yùn)行狀態(tài)分別為前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止。
(1)流程圖如圖8所示。
(2)小車控制系統(tǒng)單片機(jī)程序如下:
#include
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
void delays(unsigned int k)
{
unsigned int i,j;
for(i=0;i
for(j=0;j<120;j++); //1ms@sTc 11.0592
}
void UartInit(void) //9600bps@11.0592MHz
{
EA=1;
ES=1;
PCON |= 0x80;//使能波特率倍速位SMOD
SCON = 0x50;//8位數(shù)據(jù),可變波特率
TMOD &= 0x0F;//清除定時(shí)器1模式位
TMOD |= 0x20;//設(shè)定定時(shí)器1為8位自動(dòng)重裝方式
TL1 = 0xFA;//設(shè)定定時(shí)初值
TH1 = 0xFA;//設(shè)定定時(shí)器重裝值
ET1 = 0;//禁止定時(shí)器1中斷
TR1 = 1;//啟動(dòng)定時(shí)器1
}
unsigned char ch;
void serilas() interrupt 4
{
if(RI==1)
{
RI=0;
ch=SBUF;
SBUF=ch;
while(TI==0);
TI=0;
}
}
void main()
{
UartInit();
while(1)
{
if(ch==0x31)
{P0=0x9f;P12=1;P13=0;P14=1;P15=0;} //前進(jìn)
if(ch==0x32)
{P0=0x25;P12=0;P13=1;P14=0;P15=1;} //后退
if(ch==0x33)
{P0=0x0d; P12=0;P13=1;P14=1;P15=0;delays(500);P13=0;P14=0;} //左轉(zhuǎn)
if(ch==0x34)
{P0=0x99;P12=1;P13=0;P14=0;P15=1;delays(500);P12=0;P15=0;} //右轉(zhuǎn)
if(ch==0x35)
{P0=0x49;P12=0;P13=0;P14=0;P15=0;} //停止
}
}
五、系統(tǒng)調(diào)試
(一)手機(jī)APP控件安裝
通過(guò)手機(jī)掃描APP二維碼,下載控制模塊App并安裝安裝完畢后,手機(jī)的控制界面圖如圖9所示:
(二)下載單片機(jī)程序并調(diào)試
采用Keil編寫輸入C程序,編譯運(yùn)行通過(guò)后,生成HEX文件,再通過(guò)USB下載口把HEX文件下載到單片機(jī)中,上電后即可以進(jìn)行調(diào)試。調(diào)試程序如下:首先打開手機(jī)APP的小車系統(tǒng)控制界面,點(diǎn)擊藍(lán)牙選擇按鈕,選擇與小車HC-05的藍(lán)牙進(jìn)行配對(duì),配對(duì)成功后,就可以按手機(jī)上的控制小車的動(dòng)作按鈕,手機(jī)通過(guò)藍(lán)牙將動(dòng)作按鈕對(duì)應(yīng)用的控制信息數(shù)據(jù)發(fā)送到小車藍(lán)牙上,單片機(jī)讀取數(shù)據(jù)信息并根據(jù)信息發(fā)出控制小車的信號(hào),由驅(qū)動(dòng)電路驅(qū)動(dòng)控制小車電機(jī)的轉(zhuǎn)動(dòng),實(shí)現(xiàn)小車前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)和停止等功能動(dòng)作;同時(shí)數(shù)碼管也顯示出小車對(duì)應(yīng)的動(dòng)作代碼。例如:按下手機(jī)上的前進(jìn)按鈕,小車四輪正轉(zhuǎn)進(jìn)行前進(jìn)動(dòng)作,數(shù)碼管上顯示數(shù)字“1”。
(1)藍(lán)牙配對(duì)
打開手機(jī)藍(lán)牙,再打開手機(jī)控制小車APP,點(diǎn)擊藍(lán)牙選擇按扭,選擇HC-05藍(lán)牙,選擇成功如圖10所示:
(2)實(shí)物調(diào)試如圖11所示左圖為小車前進(jìn)圖,右圖為小車停止圖,此實(shí)物圖是建立在整個(gè)小車成品系統(tǒng)上調(diào)試的,單獨(dú)也可以調(diào)試。
六、結(jié)束語(yǔ)
本設(shè)計(jì)系統(tǒng)主要是實(shí)現(xiàn)了目前流行的手機(jī)對(duì)小車的無(wú)線控制,雖然整個(gè)系統(tǒng)功能還不夠完美,還可以增加路障檢測(cè)等功能來(lái)完善。但是無(wú)線控制的功能已經(jīng)是實(shí)現(xiàn)的,實(shí)用性較強(qiáng),可以為廣大教師單片機(jī)課程趣味性提供一個(gè)實(shí)例,也可以為智能化和無(wú)線控制技術(shù)的研發(fā)提供一個(gè)新方法和思路。同時(shí)在撰寫論文及調(diào)試的過(guò)程中,大大地?cái)U(kuò)寬了筆者的知識(shí)面,反復(fù)的調(diào)試過(guò)程中,也鍛煉提高了筆者的分析問題和解決問題的能力。endprint