肖 濤
(湖南科技學(xué)院 智能制造學(xué)院,湖南 永州 425199)
51單片機(jī)雖然誕生很多年,是最簡單的單片機(jī)之一。史上最廉價(jià)的51遙控車,加上充電器兩節(jié),當(dāng)時(shí)價(jià)格是79元左右[1]。藍(lán)牙遙控小車是一個(gè)綜合系統(tǒng),主要是以單片機(jī)為核心進(jìn)行控制移動(dòng),在國內(nèi)的市場還沒有出現(xiàn)真正意義上的跟隨性智能載物小車[2]。本設(shè)計(jì)嘗試通過軟硬件的設(shè)計(jì)實(shí)現(xiàn)藍(lán)牙遙控基本操作和基本的紅外避障、紅外尋跡、超聲波避障等功能。
L298N有兩個(gè)供電功能,一是邏輯控制部分的5 V供電,二是電機(jī)供電。電機(jī)供電能到46 V[3],12 V是給電機(jī)供電的,接通之后,電機(jī)運(yùn)轉(zhuǎn)。板上有一個(gè)5 V穩(wěn)壓管,如果板上5 V有效,L298N的邏輯部分供電就從這個(gè)穩(wěn)壓管獲得,這樣就不用外接5 V,此時(shí)還可以將得到的5 V穩(wěn)壓給別的模塊供電。如果外接5 V,板上5 V會(huì)自動(dòng)斷開而無效[4]。
穩(wěn)壓管的輸入和輸出有壓差,如果給電機(jī)的供電太低,通過壓差后可能會(huì)降低太多,那么邏輯控制部分的5 V電壓達(dá)不到要求,此時(shí)需要將板上5 V斷開,外接5 V的電源給邏輯控制部分供電。
L298N模塊是兩路電機(jī)驅(qū)動(dòng)模塊,左右兩側(cè)的接線帽各接電機(jī),中間的4根插針是控制線,左邊兩個(gè)控制左邊電機(jī)(電平顛倒后電機(jī)反轉(zhuǎn))。其中有兩個(gè)接線帽,每個(gè)接線帽接有兩個(gè)插針,一個(gè)是使能端,一個(gè)是5 V,3P的接線帽中間是接GND,左側(cè)是接高電源輸入(最高可能12 V),右側(cè)是5 V輸出,因此這個(gè)模塊可以作為5 V電源。
藍(lán)牙模塊電路連接是串口線,藍(lán)牙在51遙控車上只需要3根線,即gnd,vcc,tx,其中tx接到51的rx即P3.0引腳。注意藍(lán)牙模塊具有固定的波特率,可以設(shè)置成主模塊或從模塊(主模塊可以主動(dòng)連接其他藍(lán)牙模塊),設(shè)置方式是將藍(lán)牙模塊連接到USB轉(zhuǎn)TTL上。注意tx和rx反接進(jìn)入AT模式,既可以設(shè)置藍(lán)牙名字,又可以設(shè)置密碼、主從角色等。
整個(gè)小車系統(tǒng)可以分為手機(jī)端和單片機(jī)端兩個(gè)部分。手機(jī)端設(shè)計(jì)的App是利用藍(lán)牙,按下某個(gè)鍵會(huì)將對應(yīng)的數(shù)字發(fā)送到安裝于單片機(jī)端的藍(lán)牙模塊,藍(lán)牙模塊再將其發(fā)送到單片機(jī)上的藍(lán)牙模塊。單片機(jī)端要對單片機(jī)程序進(jìn)行設(shè)置具體寄存器,要注意波特率和晶振是對應(yīng)的4800或者9600,注意信號線要連接正確。初始化設(shè)置如下。
SCON=0x50;PCON=0x00;TMOD=0x20;
EA=1;ES=1;TL1=0xfd;TH1=0xfd;TR1=1;
執(zhí)行語句:
void serial() interrupt 4{
while(1){
ES=0;RI=0;buf=SBUF;
switch(buf){
case 0x31: P1=0xfe;FM=1;Car_Run(1);break;
case 0x32: P1=0xfd;FM=1;Car_Run(0);break;
case 0x33: P1=0xfb;FM=0;Car_Run(2);break;
case 0x34: P1=0xf7;FM=1;Car_Run(1);Car_Run(4);break;
case 0x35: P1=0xef;FM=1;Car_Run(1);Car_Run(3);break;
}ES=1;}}
不同case的情況中,按下不同的按鍵會(huì)發(fā)過來不同的代碼,這些代碼是0x31,0x32等。不同的App不一樣,可以使用串口助手通過USB轉(zhuǎn)ttl接收藍(lán)牙模塊的信號,然后根據(jù)發(fā)過來的消息進(jìn)行相應(yīng)的控制。幾個(gè)Car_Run函數(shù)是用來控制小車前進(jìn)后退的程序。串口中斷的原理是執(zhí)行main函數(shù)時(shí)接收到串口信號,則停止執(zhí)行主函數(shù),然后去執(zhí)行中斷函數(shù)里面的函數(shù)。
超聲波模塊共有4只引出腳,從左往右,第一腳為VCC,該模塊工作電壓為5 V;第二只腳為Trig,輸入觸發(fā)信號;第三只腳為Echo,輸出回響信號;第四只腳為接地。這里設(shè)計(jì)的時(shí)候要注意:第一,至少給Trig 10 us的高電平信號;第二,模塊自動(dòng)發(fā)送8個(gè)40 kHz的方波,自動(dòng)檢測是否有信號返回;第三,有信號返回,通過Echo輸出一高電平,高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到放回的全部時(shí)間;第四,測試距離=(高電平時(shí)間×聲速(340 m/s))/2。超聲波測距的關(guān)鍵一點(diǎn)就是對時(shí)間的精確測量。要想精確測量時(shí)間需要用到定時(shí)器,比如前面T0用于PWM,T1用于串口通信。這里我們使用了T2。T2與T0,T1的使用方式有所差異,T2不能直接用于超聲波的計(jì)時(shí),把T2用作波特率發(fā)生器,T1用于計(jì)時(shí),則需要對寄存器重新進(jìn)行配置,充分利用3個(gè)定時(shí)/計(jì)數(shù)器,最終可以達(dá)到預(yù)期效果。
為了調(diào)節(jié)小車前進(jìn)的速度和提高避障速度,采用EC11旋轉(zhuǎn)式編碼器,該編碼器可用于光度、濕度、音量調(diào)節(jié)等參數(shù)的調(diào)節(jié)。EC11編碼器的形狀類似于電位器,中心有一個(gè)旋鈕可以調(diào)節(jié)PWM信號。光電碼盤利用光電轉(zhuǎn)換原理輸出3組方波脈沖,顯示小車轉(zhuǎn)速以及左右編碼器數(shù)值和電池電壓等參數(shù)。OLED顯示模塊,分辨率較高,而且功耗低。正常顯示時(shí)僅0.06 W,供電電壓范圍在3.3~5 V,有IIC和SPI兩種通信協(xié)議可供選擇。顯示模塊的亮度和對比度可以通過程序設(shè)置。由于它使用壽命長以及其他的優(yōu)點(diǎn),OLED更加適合小系統(tǒng)。本系統(tǒng)由于單片機(jī)引腳有限,不適合利用簡單的LCD1602或者12864來顯示,在多方對比之下OLED的效果更好。
車架子作為車的支撐和承載結(jié)構(gòu),極大地影響到車的最終效果,應(yīng)該選購合適的車架。其中有一點(diǎn)需要說明的是,選擇的車架前輪轉(zhuǎn)彎的調(diào)整方式應(yīng)該是通過電機(jī)來調(diào)整比較合適,通過舵機(jī)調(diào)整的效果更好。電機(jī)的實(shí)現(xiàn)比較優(yōu)雅的轉(zhuǎn)彎方式可以查詢相關(guān)的“萬向輪”和“轉(zhuǎn)向前橋”。使用結(jié)構(gòu)比較簡單的萬向輪來實(shí)現(xiàn)轉(zhuǎn)彎。除了轉(zhuǎn)彎實(shí)現(xiàn)方式,電機(jī)是否與小車架子匹配也是很重要的。
本文設(shè)計(jì)實(shí)現(xiàn)的藍(lán)牙智能小車已經(jīng)完成,但小車的功能還遠(yuǎn)遠(yuǎn)不止這些,后期的功能還可以進(jìn)一步提升,比如使用圖像處理、音頻處理、嵌入式、人工智能等,還應(yīng)繼續(xù)拓展小車其他的功能,對小車的探究還需要進(jìn)一步的努力。