王思婷,錢奕辰
(廣東水利電力職業技術學院,廣東 廣州 510635)
單片機相關課程作為電子專業的核心課程,是電子專業學生必須熟練掌握的知識。一直以來,單片機教學的實踐環節主要基于單片機開發板和其外圍器件,實踐條件單一且內容枯燥。學生學習時苦于沒有有趣的實驗,學習積極性不高,課堂參與度不強。為了豐富學生的實踐開發經驗,拓展學生單片機應用知識,提高學生學習興趣,本文設計開發了一套基于單片機的藍牙控制智能小車。
本文設計的藍牙小車,以ATMega328p芯片作為核心控制器,包含了主控模塊、藍牙模塊、電機模塊、巡線模塊、避障模塊和供電模塊。能連接手機藍牙并響應智能手機發出的指令,能通過手機APP實現前進,后退,左轉,右轉,停止等多種動作,能通過避障模塊自主巡線或避障,具有強大的開發潛力,擴展性強,適合各種單片機實踐教學課程。
本設計的基于單片機的藍牙智能小車系統框圖如圖1所示。小車采用ATMEGA328P-AU芯片作為主控芯片,該芯片具有32 KB的閃存容量,2 KB的RAM容量,還具有1 KB的EEPROM容量,足夠智能小車的程序存儲及運行使用。使用HC-05藍牙模塊作為藍牙通信設備,使用紅外開關模塊作為小車的巡線裝置,使用SG90舵機和HC-SR04超聲波模塊的組合作為小車的避障模塊,使用L298N作為電機驅動,使用TT電機作為小車的執行電機,通過4節干電池作為動力電源。整套小車的成本很低,功能豐富,性價比較高。

圖1 系統框圖
本設計采用HC-05藍牙模塊作為藍牙通信設備,HC-05是一套高集成的藍牙通信模塊,可以將藍牙通信協議轉為串行通信協議,實現透明傳輸。模塊通過AT指令集進行功能設置,兼容3~5 V工作電壓,配置簡單,使用方便。
藍牙HC-05是主從一體的藍牙串口模塊,HC-05的特點是,當藍牙設備與手機配對連接成功后,在應用層,我們可以忽視藍牙內部的通信協議,直接將藍牙當作串口用。建立連接時,我們只需要將數據發送到單片機串口,數據便會從藍牙設備中傳送出去,在另一端的串口輸出。
HC-05模塊具有2種工作模式:命令響應工作模式和自動連接工作模式。在自動連接工作模式下模塊又可分為主(Master)、從(Slave)和回環(Loopback)3種工作角色。當模塊處于自動連接工作模式時,將自動根據事先設定的方式連接數據傳輸。模塊可以通過AT指令集進行設置,當模塊處于命令響應工作模式時,能執行內置的AT命令,用戶可向模塊發送各種AT指令,為模塊設定控制參數或發布控制命令。
本設計使用5個紅外開關作為巡線裝置,紅外開關可調節發射功率,從而適應不同的巡線場地。根據其安裝尺寸,循跡范圍在1~40 mm,循跡時有LED燈提示。模塊接通電源后,紅色指示燈亮起,模塊內置多對紅外線發射與接收管,發射管發射出一定頻率的紅外線,當檢測方向遇到障礙物(反射面)時,紅外線反射回來被接收管接收,經過比較器LM393電路處理之后,綠色指示燈會亮起,同時信號輸出接口輸出數字信號(一個低電平信號),可通過電位器旋鈕調節檢測距離,有效距離范圍2~30 cm,檢測角度35°,工作電壓為3.3~5 V。
循跡模塊可以檢測到黑色或偏深色的循跡線,當檢測到黑線時,紅外模塊發射的紅外線被黑線吸收,傳感器接收不到反射的紅外線,因此循跡模塊燈不亮;當檢測到白色地面時,紅外模塊發射的紅外線被地面反射,傳感器接收到反射的紅外線,因此循跡模塊燈常亮。循跡模塊被安裝在車頭位置,共4個紅外開關,每個開關間距3 cm。通過判斷模塊經過黑白線時的電平變化,小車可以判斷車頭是否偏離循跡線,從而控制電機轉速,讓小車車頭保持在循跡線范圍內。
小車還使用了舵機和超聲波的組合作為避障模塊,可以有效探測小車前方180°的障礙物。此外,通過超聲波模塊還可以實現智能跟隨等功能。超聲波模塊采用HC-SR04模塊,模塊可提供2~400 cm的距離感測功能,測量精度可以達到3 mm。模塊包括超聲波發射器,接收器與控制電路。采用Trig引腳觸發,給至少10μs的高電平脈沖信號。模塊自動發送8個40 kHz的方波,自動檢測是否有信號返回。當有信號返回,通過Echo引腳輸出一個高電平脈沖,高電平脈沖持續的時間就是超聲波從發射到反射返回的時間。通過如下公式可以計算出超聲波模塊離前方障礙物的距離。其中340表示超聲波在空氣中的傳輸速率。

避障模塊除了可以規避障礙物外,還可以進行跟隨。當小車進入跟隨模式時,若有一個物體放在超聲波探測范圍內,超聲波會控制小車電機前進或后退,以保證小車離物體始終保持在10 cm范圍內。當物體緩慢移動時,小車也會一直跟隨物體移動。
本文設計的藍牙小車具有4種工作模式,分別是藍牙模式、循跡模式、避障模式和跟隨模式,程序流程如圖2和圖3所示。

圖2 藍牙模式和循跡模式程序流程圖

圖3 循跡模式和跟隨模式程序流程圖
在藍牙模式下,小車會不斷掃描串行緩沖區,如果收到串行數據,小車會自動解析數據判斷是什么指令,然后根據指令進行動作。收到字符“F”,小車左右輪都會正轉,控制小車前進;收到字符“B”,小車左右輪都會反轉,控制小車后退;收到字符“L”,小車左輪反轉,右輪正轉,控制小車左轉;收到字符“R”,小車左正轉,右輪反轉,控制小車右轉。小車每收到一次指令會控制小車執行相應動作一段時間,然后停止,當需要小車連續執行某動作時,需要通過藍牙模塊連續發送相應的指令字符到小車。
在循跡模式下,小車會自行前進,在前進過程中不斷檢測循跡模塊的情況。當循跡模塊碰到循跡線左邊界時,小車會向左轉動一點;同理,當循跡模塊碰到循跡線右邊界時,小車會向右轉動一點,以保持循跡線在小車中間。在調整小車轉動時,我們通過調節左右輪的PWM信號來控制左右輪的轉速。例如,當小車向左偏,右邊的循跡模塊碰到循跡線右邊界時,小車會自動降低右輪的轉速,以幫助小車向右偏轉,直到右邊的循跡模塊離開循跡線右邊界;同理,當小車向右偏時,小車會自動降低左輪的轉速,以幫助小車向左偏轉,直到左邊的循跡模塊離開循跡線左邊界。
在避障模式下,小車會優先檢測正前方的障礙物,當距離大于10 cm時,小車認為前方無障礙,小車前進。當正前方障礙物離超聲波距離小于10 cm時,小車會認為前方遇到障礙物。此時,小車會停止前進,并控制舵機左轉90°,通過超聲波模塊檢測小車左邊是否有障礙物,若小車左邊障礙物離超聲波距離大于10 cm,則小車認為左邊沒有障礙物,小車左轉90°后繼續前進。若小車左邊障礙物離超聲波距離小于10 cm,則小車認為左邊有障礙物,則會控制舵機向右轉90°,繼續檢查右邊是否有障礙物。若小車檢查到左前右三個方向都有障礙物,小車會原地掉頭,即原地轉180°后繼續前進。
在跟隨模式下,小車會先判斷超聲波離前方物體的距離,當距離小于1 m時,才會開啟跟隨模式功能。此時,當物體離超聲波模塊大于10 cm時,小車會自動前進,直到物體離超聲波模塊小于10 cm,小車停止。
本文設計的智能小車采用亞克力底盤,方便學生后續進行改造(如圖4所示)。底盤采用雙電機驅動,通過差速控制進行轉向。后輪采用萬向輪,轉向靈活,不影響車身姿態。車頭前方預留了循跡模塊安裝孔和超聲波舵機安裝位置,可以方便地安裝各種循跡模塊和避障模塊。小車全長21 cm,可以放下單片機控制板、電機驅動和電池盒,還可以通過銅柱安裝第二層底盤,用來安裝其他擴展模塊。

圖4 智能小車底盤實物圖
本文設計了一套基于單片機的藍牙控制的智能小車,可實現手機APP控制小車移動、自主巡線和避障,功能豐富,擴展性強,價格實惠,性價比高。經過課堂實踐,學生學習積極性明顯提高,配合安排比賽等任務,學生課堂參與度很高,具有一定推廣性。