張彥麗
(廈門華天涉外職業(yè)技術(shù)學(xué)院 機(jī)電與汽車工程學(xué)院,福建 廈門 361102)
藍(lán)牙(Bluetooth)通訊技術(shù)是一種開放的短距離無(wú)線通信技術(shù)標(biāo)準(zhǔn),頻段為2.4GHz ISM,采用跳頻擴(kuò)頻技術(shù),藍(lán)牙通訊廣泛應(yīng)用于短距離移動(dòng)設(shè)備和固定設(shè)備,可以實(shí)現(xiàn)靈活的網(wǎng)絡(luò)互連,有成本低、耗能低、通訊安全可靠等諸多優(yōu)點(diǎn),隨著藍(lán)牙技術(shù)的發(fā)展,越來(lái)越多的產(chǎn)品內(nèi)置集成藍(lán)牙模塊,極大提升產(chǎn)品功能性與使用效率。遙控小車在控制上使用藍(lán)牙,十分便利,可以利用藍(lán)牙控制小車增添生活樂趣,也可在一些特種環(huán)境遙控使用,保證人身安全。
隨著企業(yè)生產(chǎn)技術(shù)的不斷提高對(duì)自動(dòng)化的要求也越來(lái)越高,智能車輛在工業(yè)層面上得到了更加廣泛的應(yīng)用。從各個(gè)角度來(lái)看,對(duì)智能車輛不斷的探究并追求最大的智能化都是必要的。在智能小車的研究及相關(guān)產(chǎn)品開發(fā)方面,對(duì)國(guó)內(nèi)在此領(lǐng)域技術(shù)發(fā)展與進(jìn)步也非常有利。因此,需要研發(fā)出一款簡(jiǎn)便而又高效化的小車控制系統(tǒng)具有重要的實(shí)際意義亦有遠(yuǎn)大的科學(xué)理論價(jià)值。
本設(shè)計(jì)是基于單片機(jī)的無(wú)線藍(lán)牙遙控小車的控制系統(tǒng),手機(jī)APP 可以發(fā)送指令,靈活巧妙的控制小車運(yùn)動(dòng)。當(dāng)系統(tǒng)開機(jī)時(shí),小車開啟藍(lán)牙,手機(jī)APP 啟動(dòng)后,藍(lán)牙開啟,手動(dòng)連接藍(lán)牙完成配對(duì)。用戶可通過(guò)APP 按鈕選擇運(yùn)行模式,手動(dòng)模式用戶通過(guò)APP 按鈕向小車藍(lán)牙發(fā)送操控指令改變小車運(yùn)動(dòng)方向,APP 能藍(lán)牙接收和顯示小車運(yùn)行速度和距離。在自動(dòng)模式下,能沿著紅外循跡到地面黑線運(yùn)動(dòng),能紅外躲避障礙物,能通過(guò)光電編碼器測(cè)量轉(zhuǎn)速,并液晶顯示、藍(lán)牙發(fā)送運(yùn)行速度和運(yùn)動(dòng)距離。本設(shè)計(jì)主要包括電源模塊、避障模塊、單片機(jī)主控模塊、藍(lán)牙通訊模塊、循跡模塊、電機(jī)驅(qū)動(dòng)模塊、顯示器等模塊。
單片機(jī)編寫程序時(shí)一般使用的語(yǔ)言是匯編語(yǔ)言和C 語(yǔ)言。匯編語(yǔ)言是接近單片機(jī)硬件的編程語(yǔ)言,當(dāng)CPU 不同時(shí),匯編程序也就不容易移植了,通用性較差,程序的開發(fā)周期也比較長(zhǎng),由匯編語(yǔ)言編寫出來(lái)的程序雖然效率比C 語(yǔ)言高,但程序算法卻難懂?,F(xiàn)今,單片機(jī)編程大都采用C 語(yǔ)言,C 語(yǔ)言的編程設(shè)計(jì)思想是將任務(wù)分割為若干個(gè)相互獨(dú)立卻又互有關(guān)聯(lián)的模塊,即模塊化程序思想。C 語(yǔ)言程序易于閱讀理解,編程效率也高,同時(shí)C 語(yǔ)言作為一種功能性描述的語(yǔ)言,其程序容易移植和修改。Keil uVision4 是一款基于PC 機(jī)的單片機(jī)程序開發(fā)軟件平臺(tái)。在Keil 開發(fā)環(huán)境下,能夠完成程序的編寫、編譯、以及軟件調(diào)試等多種行為,該軟件具備有性能強(qiáng)大的編輯器和調(diào)試器,可以對(duì)編寫的程序進(jìn)行快速的檢查和修改。利用Keil 開發(fā)單片機(jī)應(yīng)用程序的步驟如下:新建一個(gè)工程文件→創(chuàng)建C 程序文檔→將程序添加到工程→編譯并修改調(diào)試C 程序→生成HEX 文件→燒寫到單片機(jī)內(nèi)→運(yùn)行程序。
在主程序中,系統(tǒng)經(jīng)過(guò)一系列初始化之后,小車等待藍(lán)牙串口連接,藍(lán)牙串口連接完成后,等待手機(jī)APP 發(fā)出指令,分別有前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、加速、減速、停止、循跡、避障指令,當(dāng)小車接收到指令,就會(huì)根據(jù)相應(yīng)指令運(yùn)動(dòng),顯示屏?xí)恢憋@示小車速度和行駛距離。圖1 為主程序的程序流程圖。
圖1 主程序的程序流程圖
藍(lán)牙遙控小車的設(shè)計(jì),需要使用到三個(gè)定時(shí)器,分別為定時(shí)器0、定時(shí)器1 和定時(shí)器2。定時(shí)器0 是用來(lái)小車速度調(diào)整,定時(shí)器1 是用來(lái)串行通信,為串行通信設(shè)置波特率,定時(shí)器2 是用來(lái)小車實(shí)時(shí)速度顯示定時(shí)。
初始化程序主要是設(shè)置SCON、TCON、TMOD、IE 的幾個(gè)寄存器。設(shè)置TMOD=0X22,定時(shí)器0 和定時(shí)器1 的工作方式選擇方式2,8 位的常數(shù)自動(dòng)重新裝載定時(shí)器,SCON=0X50,串口工作方式為1,允許串口接收和發(fā)送,串口初始化設(shè)置的內(nèi)容如表1 所示。
表1 串口初始化設(shè)置
本設(shè)計(jì)采用L298N 電機(jī)驅(qū)動(dòng)模塊。由L298N 模塊各個(gè)端口的邏輯關(guān)系可知,當(dāng)ENA 與ENB 為1 時(shí),通過(guò)控制IN1、IN2、IN3、IN4 端口電平的高低來(lái)改變電機(jī)的轉(zhuǎn)向。電機(jī)方向控制邏輯表如表2。
表2 電機(jī)方向控制邏輯表
初始化結(jié)束后,連接上手機(jī)藍(lán)牙,接收到藍(lán)牙發(fā)出循跡指令。小車前方有一對(duì)紅外對(duì)管,放別置于黑線兩側(cè),紅外管相對(duì)于黑線有2mm 到4mm 的距離。當(dāng)兩對(duì)紅外管都沒有檢測(cè)到黑線小車保持直走。當(dāng)左側(cè)檢測(cè)到黑線時(shí),左電機(jī)向后轉(zhuǎn)動(dòng),右電機(jī)向前轉(zhuǎn)動(dòng),直到左側(cè)離開黑線左右電機(jī)都向前轉(zhuǎn)動(dòng)。同理當(dāng)右側(cè)檢測(cè)到黑線時(shí),右電機(jī)向后轉(zhuǎn)動(dòng),左電機(jī)向前轉(zhuǎn)動(dòng),直到右側(cè)離開黑線左右電機(jī)都向前轉(zhuǎn)動(dòng)。循跡流程如圖2 所示。
圖2 循跡流程圖
初始化結(jié)束后,連接上手機(jī)藍(lán)牙,接收到藍(lán)牙發(fā)出避障指令。在小車的前面兩側(cè)放置一對(duì)紅外管。當(dāng)左側(cè)的紅外管檢測(cè)到障礙物的時(shí)候,小車開始右轉(zhuǎn)200ms。小車右側(cè)的紅外處于檢測(cè)到障礙物狀態(tài),小車開始左轉(zhuǎn)200ms。當(dāng)小車兩側(cè)紅外都沒有檢測(cè)到障礙物時(shí),小車直走。當(dāng)小車兩側(cè)紅外都檢測(cè)到障礙物時(shí),小車后退100ms,在后右轉(zhuǎn)200ms。避障的程序流程如圖3所示。
圖3 避障流程圖