李柯
(沈陽航空航天大學,遼寧沈陽,110136)
智能藍牙小車基于模塊化設計思想,由車體模塊、電源模塊、主控模塊、電機驅動模塊、電機模塊、藍牙模塊、蜂鳴器模塊等構成小車硬件系統。其核心是Arduino UNO開發板,所有的傳感器都將與主板相連接。小車結構設計如圖1所示。

圖1 系統總體結構框圖
智能藍牙小車以Arduino UNO開發板為核心,根據藍牙模塊接收到的數據信號,判別執行的命令,其原理圖如圖2所示。

圖2 藍牙小車原理圖
使用者通過SPP藍牙串口手機軟件發送指令,藍牙模塊接收后將數據傳送給Arduino UNO開發板,開發板進行判斷分析,并進一步為執行模塊發送電壓與PWM信號,執行相應命令。例如,給蜂鳴器發送電壓信號則會實現鳴笛功能;給電機驅動模塊發送PWM信號則會實現運動功能。
該小車采用 Arduino UNO單片機作為主控芯片,用于對藍牙模塊接收的信息的采集和處理,輸出電壓與PWM信號實現小車的運動功能與鳴笛功能。
該小車采用L298N電機驅動模塊,可外接5V或12V電源進行供電。如圖3所示,該模塊具有4個邏輯輸入,分別接入單片機上的4路PWM信號引腳,有4個輸出端口,接到電機的正負極,驅動兩組電機的運轉。

圖3 L298N電機驅動模塊
每組電機的轉速受到輸入驅動模塊的兩個PWM信號的影響:電機輸出轉速大小取決于二者之差的絕對值大小;輸出轉速方向取決于二者之差的正負。以單個電機為例,根據單片機輸出的 PWM 波和相應控制信號,電機驅動模塊 L298N功能邏輯如表1所示。

表1 驅動模塊功能邏輯表
該小車采用HC-06藍牙模塊,其工作原理圖如圖4所示。

圖4 藍牙模塊工作原理圖
使用者需要先將手機端與藍牙模板進行配對,配對成功后即可通過該藍牙模塊實現手機端與單片機的信息交互,使單片機對數據進行邏輯判斷并執行手機端發送的指令[4]。
蜂鳴器是一種電子發聲元器件,可以發出“beep beep”的聲音。蜂鳴器分為有源蜂鳴器和無源蜂鳴器兩種,該小車采用無源蜂鳴器,需要用2K-5K的波形脈沖信號去驅動。使用方法比較簡單,只需要將兩個電源引腳接GND和+5V,另一個引腳接單片機PWM信號引腳即可。在程序中用tone(beep,K)即可驅動,其中beep為設置引腳,K為數值,經過測試當K取350時最接近鳴笛聲。
Arduino IDE是Arduino開發板的編程軟件,其內包含了廣泛的函數庫,因此對于復雜的部件(顯示器、傳感器),變成就會十分容易。在該程序設計中應用到了如下函數:
Serial.available() //用于讀取串口緩沖區中當前剩余的字符個數。
Serial.read() //用于讀取串口的緩沖區中一個Byte的數據。
analogWrite(IN1,0) //用于將模擬值輸出到引腳,驅動電機。
tone(beep,350) //驅動蜂鳴器
notone(beep) //蜂鳴器停止工作
首先判斷是否有數據發送至緩沖區,如果有則讀取1字節數據,隨后進行邏輯判斷并執行相應指令,其流程圖如圖5所示。

圖5 程序流程圖
核心程序如下:


采用SPP手機軟件進行藍牙通信,設置后的操作界面如圖6所示。圖中12個格子為操作區,打開下方編輯模式可以對每個格子進行設置,包括觸發方式(按下、松開)、傳送數據等。

圖6 手機SPP軟件操作界面
例如:對于小車的運動指令(前進、后退等),需要設置為按下觸發,在按下功能塊后持續發送數據;對于小車參數修改指令(1、2、3擋位控制),需要設置為松開觸發,在松開功能塊后發送一次數據;而對于小車的鳴笛指令,則需同時設置按下觸發和松開觸發。
手機控制智能藍牙小車的方式如下:首先點擊右上角連接,與藍牙模塊進行連接,需要注意的是,此時需將電機驅動模塊斷電,否則可能會出現連接失敗情況;連接成功后即可通過手機發送相關指令控制小車運動。
搭建好的藍牙小車如圖7所示。

圖7 藍牙小車實物
實驗過程大致分三部分:
首先將Arduino開發板通過USB與PC端連接,并將編寫的程序錄入開發板;再通過手機APP,將手機與藍牙模塊無線連接,此時發現藍牙模塊閃爍,手機與藍牙模塊成功連接。
打開Arduino IDE的串口監視器,按下手機APP的功能塊,查看傳送的數據是否與程序設定數據一致,不一致則需對程序進行更改,并重新上傳程序。
斷開Arduino與PC端的連接,打開藍牙小車電源,依次點擊手機APP的功能塊,測試各項指令的實際效果。
通過實驗調試,對藍牙小車調擋功能、鳴笛功能以及運動功能進行了測試,發現都能夠較好實現。
本文基于Arduino平臺設計了一種智能藍牙小車,并通過實驗調試實現了所有的預期功能。該藍牙小車具有以下優勢:能夠通過手機端對小車進行控制;能實現多種命令,包括小車的多種轉彎方式、多種運動速度以及鳴笛等;系統成本較低,攜帶便利。