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