張彥麗
(廈門華天涉外職業技術學院 機電與汽車工程學院,福建 廈門 361102)
藍牙(Bluetooth)通訊技術是一種開放的短距離無線通信技術標準,頻段為2.4GHz ISM,采用跳頻擴頻技術,藍牙通訊廣泛應用于短距離移動設備和固定設備,可以實現靈活的網絡互連,有成本低、耗能低、通訊安全可靠等諸多優點,隨著藍牙技術的發展,越來越多的產品內置集成藍牙模塊,極大提升產品功能性與使用效率。遙控小車在控制上使用藍牙,十分便利,可以利用藍牙控制小車增添生活樂趣,也可在一些特種環境遙控使用,保證人身安全。
隨著企業生產技術的不斷提高對自動化的要求也越來越高,智能車輛在工業層面上得到了更加廣泛的應用。從各個角度來看,對智能車輛不斷的探究并追求最大的智能化都是必要的。在智能小車的研究及相關產品開發方面,對國內在此領域技術發展與進步也非常有利。因此,需要研發出一款簡便而又高效化的小車控制系統具有重要的實際意義亦有遠大的科學理論價值。
本設計是基于單片機的無線藍牙遙控小車的控制系統,手機APP 可以發送指令,靈活巧妙的控制小車運動。當系統開機時,小車開啟藍牙,手機APP 啟動后,藍牙開啟,手動連接藍牙完成配對。用戶可通過APP 按鈕選擇運行模式,手動模式用戶通過APP 按鈕向小車藍牙發送操控指令改變小車運動方向,APP 能藍牙接收和顯示小車運行速度和距離。在自動模式下,能沿著紅外循跡到地面黑線運動,能紅外躲避障礙物,能通過光電編碼器測量轉速,并液晶顯示、藍牙發送運行速度和運動距離。本設計主要包括電源模塊、避障模塊、單片機主控模塊、藍牙通訊模塊、循跡模塊、電機驅動模塊、顯示器等模塊。
單片機編寫程序時一般使用的語言是匯編語言和C 語言。匯編語言是接近單片機硬件的編程語言,當CPU 不同時,匯編程序也就不容易移植了,通用性較差,程序的開發周期也比較長,由匯編語言編寫出來的程序雖然效率比C 語言高,但程序算法卻難懂。現今,單片機編程大都采用C 語言,C 語言的編程設計思想是將任務分割為若干個相互獨立卻又互有關聯的模塊,即模塊化程序思想。C 語言程序易于閱讀理解,編程效率也高,同時C 語言作為一種功能性描述的語言,其程序容易移植和修改。Keil uVision4 是一款基于PC 機的單片機程序開發軟件平臺。在Keil 開發環境下,能夠完成程序的編寫、編譯、以及軟件調試等多種行為,該軟件具備有性能強大的編輯器和調試器,可以對編寫的程序進行快速的檢查和修改。利用Keil 開發單片機應用程序的步驟如下:新建一個工程文件→創建C 程序文檔→將程序添加到工程→編譯并修改調試C 程序→生成HEX 文件→燒寫到單片機內→運行程序。
在主程序中,系統經過一系列初始化之后,小車等待藍牙串口連接,藍牙串口連接完成后,等待手機APP 發出指令,分別有前進、后退、左轉、右轉、加速、減速、停止、循跡、避障指令,當小車接收到指令,就會根據相應指令運動,顯示屏會一直顯示小車速度和行駛距離。圖1 為主程序的程序流程圖。

圖1 主程序的程序流程圖
藍牙遙控小車的設計,需要使用到三個定時器,分別為定時器0、定時器1 和定時器2。定時器0 是用來小車速度調整,定時器1 是用來串行通信,為串行通信設置波特率,定時器2 是用來小車實時速度顯示定時。
初始化程序主要是設置SCON、TCON、TMOD、IE 的幾個寄存器。設置TMOD=0X22,定時器0 和定時器1 的工作方式選擇方式2,8 位的常數自動重新裝載定時器,SCON=0X50,串口工作方式為1,允許串口接收和發送,串口初始化設置的內容如表1 所示。

表1 串口初始化設置
本設計采用L298N 電機驅動模塊。由L298N 模塊各個端口的邏輯關系可知,當ENA 與ENB 為1 時,通過控制IN1、IN2、IN3、IN4 端口電平的高低來改變電機的轉向。電機方向控制邏輯表如表2。

表2 電機方向控制邏輯表
初始化結束后,連接上手機藍牙,接收到藍牙發出循跡指令。小車前方有一對紅外對管,放別置于黑線兩側,紅外管相對于黑線有2mm 到4mm 的距離。當兩對紅外管都沒有檢測到黑線小車保持直走。當左側檢測到黑線時,左電機向后轉動,右電機向前轉動,直到左側離開黑線左右電機都向前轉動。同理當右側檢測到黑線時,右電機向后轉動,左電機向前轉動,直到右側離開黑線左右電機都向前轉動。循跡流程如圖2 所示。

圖2 循跡流程圖
初始化結束后,連接上手機藍牙,接收到藍牙發出避障指令。在小車的前面兩側放置一對紅外管。當左側的紅外管檢測到障礙物的時候,小車開始右轉200ms。小車右側的紅外處于檢測到障礙物狀態,小車開始左轉200ms。當小車兩側紅外都沒有檢測到障礙物時,小車直走。當小車兩側紅外都檢測到障礙物時,小車后退100ms,在后右轉200ms。避障的程序流程如圖3所示。

圖3 避障流程圖