郜東賢 袁麗麗 袁勝富 盧穎 王欣宇
摘要:本文采用STC89C52為主控芯片,分別通過(guò)WIFI和藍(lán)牙將手機(jī)PC端與單片機(jī)的通訊,進(jìn)行遠(yuǎn)程操控,實(shí)現(xiàn)前進(jìn)、后退、坦克式轉(zhuǎn)彎、普通左轉(zhuǎn)右轉(zhuǎn)等功能。WIFI控制主要指通過(guò)配置esp8266 AT指令模塊,連接手機(jī)端APP,即可在一定范圍內(nèi)進(jìn)行精準(zhǔn)操作。藍(lán)牙控制是通過(guò)藍(lán)牙地址配對(duì)、密碼校驗(yàn)、預(yù)置指令和手機(jī)APP的設(shè)置,遠(yuǎn)程遙控智能車。
關(guān)鍵詞:STC89C52單片機(jī);手機(jī)APP;ESP8266 WIFI;HC-05藍(lán)牙
中圖分類號(hào):TP23 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2019)10-0167-02
0 引言
智能小車是一個(gè)復(fù)雜而又龐大的系統(tǒng),其控制核心是內(nèi)部的控制芯片。用多種傳感器來(lái)采集外部環(huán)境信息并將接收到的信息傳給主控制器,然后由控制器來(lái)控制其各個(gè)模塊執(zhí)行相應(yīng)的動(dòng)作。智能小車的制造成本相對(duì)來(lái)說(shuō)比較低廉,在我們的日常生活中有著十分廣泛的運(yùn)用。
藍(lán)牙和WIFI在智能設(shè)備的控制領(lǐng)域普及型較高,應(yīng)用廣泛。在一定距離范圍內(nèi),藍(lán)牙可實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的遙控,其成本低廉,產(chǎn)量大;WIFI可實(shí)現(xiàn)遠(yuǎn)距離控制,速度快,且WIFI可實(shí)現(xiàn)多人連線控制,手機(jī)只需下載APP,即可實(shí)現(xiàn)對(duì)小車的遙控,在智能遙控小車的玩具市場(chǎng)有著廣闊的前景,對(duì)智能車的開(kāi)發(fā)有著及其重要的研究意義。
1 電路設(shè)計(jì)
系統(tǒng)結(jié)構(gòu)設(shè)計(jì)見(jiàn)圖1,STC89C52RC是STC公司生產(chǎn)的一種低功耗、高性能CMOS 8位微控制器,有靈巧的8位CPU和系統(tǒng)可編程Flash。其中電源模塊采用AMS1117-3.3V,兩節(jié)3.7V鋰電池,為單片機(jī)和WIFI模塊提供5V和3.3V,另外外擴(kuò)4節(jié)3.7V的鋰電池,產(chǎn)生12V的直流電源。
為保證信息的匹配,可通過(guò)HC-05 AT指令修改BLUTOOTH設(shè)備的波特率,保持與STC89C52RC一致。
ESP8266 WIFI模塊是嵌入式WIFI模塊、體積小、功耗低,采用IEEE802.11協(xié)議,通過(guò)INTERNET網(wǎng)絡(luò)傳輸數(shù)據(jù),實(shí)現(xiàn)用戶串口、以太網(wǎng)、WIFI之間的靈活轉(zhuǎn)換,如圖2所示。
STC89C52RC控制電機(jī)驅(qū)動(dòng)模塊L298N,通過(guò)修改輸入端的邏輯電平,實(shí)現(xiàn)電機(jī)正轉(zhuǎn)與反轉(zhuǎn),從而控制小車的轉(zhuǎn)向。
2 軟件設(shè)計(jì)
本文采用KEIL C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),實(shí)現(xiàn)模擬串口初始化、串口中斷通信、模擬串口通信、模擬串口中斷溢出、智能車驅(qū)動(dòng)等。具體流程圖如圖3所示。
定時(shí)計(jì)數(shù)器采用T0、T1,8位自動(dòng)填充的方式2,波特率4800BPS,TH0=28-211
串口中斷通信:
void Send_Uart(u8 value)
{ ?ES=0; ? ? ? ? //關(guān)閉串口中斷
TI=0; ? ? ? ? //清發(fā)送完畢中斷請(qǐng)求標(biāo)志位
SBUF=value; ? ? //發(fā)送
while(TI==0); ? //等待發(fā)送完畢
TI=0; ? ? ? ? //清發(fā)送完畢中斷請(qǐng)求標(biāo)志位
ES=1; ? ? ? ? //允許串口中斷
}
模擬串口通信:
void SendByte(unsigned char b)
{ unsigned char i=8;
TXD1=0;
TIMER_ENABLE();
TIMER_WAIT();
while(i--)
{if(b&1)TXD1=1; else TXD1=0; TIMER_WAIT(); b>>=1; }
TXD1=1; TIMER_WAIT();TIMER_DISABLE();
}
智能車驅(qū)動(dòng):
if(i=='1')//停止
{stop();}
if(i=='2')//前進(jìn)
{go();}
if(i=='3')//左轉(zhuǎn)
{right();}
if(i=='4')//右轉(zhuǎn)
{left();}
if(i=='5')//坦克左轉(zhuǎn)
{tank_right();}
if(i=='6')//坦克右轉(zhuǎn)
{tank_left();}
智能車直行時(shí),四個(gè)電機(jī)方向相同,同時(shí)為正向;后退時(shí),四個(gè)電機(jī)方向相同,同時(shí)為反相;45°左轉(zhuǎn)時(shí),左邊一個(gè)輪子停止運(yùn)動(dòng),右邊兩個(gè)輪子正向運(yùn)動(dòng);45°右轉(zhuǎn)時(shí),右邊一個(gè)輪子停止運(yùn)動(dòng),左邊兩個(gè)輪子正向運(yùn)動(dòng);90°左轉(zhuǎn)時(shí),左邊兩個(gè)輪子停止運(yùn)動(dòng),右邊兩個(gè)輪子正向運(yùn)動(dòng);90°右轉(zhuǎn)時(shí),右邊兩個(gè)輪子停止運(yùn)動(dòng),左邊兩個(gè)輪子正向運(yùn)動(dòng);360°左轉(zhuǎn)時(shí),左邊兩個(gè)輪子反相運(yùn)動(dòng),右邊兩個(gè)輪子正向運(yùn)動(dòng);360°右轉(zhuǎn)時(shí),右邊兩個(gè)輪子反相運(yùn)動(dòng),左邊兩個(gè)輪子正向運(yùn)動(dòng)。
3 測(cè)試與結(jié)果分析
用于實(shí)現(xiàn)小車控制的客戶端APP是微軟公司研發(fā)的SPP軟件,畫(huà)面簡(jiǎn)潔,操作易于上手,如圖4、圖5所示。只需要普通的網(wǎng)絡(luò)調(diào)試助手APP進(jìn)行連接即可。
經(jīng)測(cè)試藍(lán)牙距離為50~100米,距離的長(zhǎng)短隨障礙物的厚度遞減WIFI距離為400米以內(nèi),當(dāng)具有障礙物如墻時(shí),距離縮減,詳見(jiàn)表1。
模擬串口采用中斷1,正常串口采用中斷4,當(dāng)WIFI控制智能車時(shí),藍(lán)牙可以進(jìn)行阻斷和操作;當(dāng)藍(lán)牙操作時(shí),WIFI無(wú)法改變小車運(yùn)行的一系列操作。其次,小車的速度由L298N的電壓控制調(diào)節(jié),測(cè)得14.8伏、速度為2米/秒;10.8伏、速度為1米/秒;6.8伏、速度為0.5米/秒。
實(shí)際操作中,找到熱點(diǎn)esp8266,輸入密碼***********,連接成功;在手機(jī)端APP與ESP8266選擇的模式2相連接,IP設(shè)置為初始:192.168.4.1端口為預(yù)設(shè)值8080(可通過(guò)AT指令更改)。在手機(jī)客戶端操作一系列指令,可控前進(jìn),后退,停止,坦克左,坦克右等一系列功能。打開(kāi)藍(lán)牙,進(jìn)行匹配,連接,發(fā)送預(yù)置指令同時(shí)遙控智能車。