艾昌雄 吳熊俊 侯 群
江漢大學 湖北 武漢 430000
本文設計的基于單片機的平衡小車采用卷積神經網絡作為網絡架構,卷積神經網絡是一種常見的深度學習架構,是一種多層結構的深度神經網絡。在基于單片機的平衡小車設計中,采用STM32F103C8T6單片機作為主控制器,需要采集和處理的外部信息主要包括平衡小車的速度、當前姿態信息、賽道信息等。在方向控制中,采用OV7620 CMOS數字攝像頭采集賽道信息,將信息輸入訓練好的基于卷積神經網絡的賽道類型識別算法中,識別出當前的賽道元素類型,并輔助賽道中心線提取算法計算賽道中心線位置,根據識別出的賽道單元類型和中心線位置控制平衡小車前進方向[1]。
2.1 單片機模塊 本文所選用的主控制器為STM32F103C8T6單片機。STM32F103C8T6單片機是由意法半導體公司生產的,基于ARM Cortex-m3處理器為核心的微控制器,如圖1即為STM32F103C8T6單片機電路圖。

圖1 STM32F103C8T6單片機電路
2.2 電源模塊 本設計采用傳統的12V鋰電池供電,位置緊貼于電機之上以降低重心。降壓模塊采用的是常見的降穩壓器,分別為LM2596T(12V降5V)和AMS1117-3.3(5V降3.3V)兩個型號的芯片。其輸出端口分別對應連接各模塊電路中的VCC端口,整個系統GND共地。
2.3 電機模塊 本文選用帶編碼器的直流電動機控制平衡小車。TB6612FNG是東芝半導體公司生產的直流電機驅動器,其外圍電路簡單,不需要額外的散熱片,PWM支持頻率高達100k Hz,完全可以滿足要求。因此,本文選用TB6612FNG作為電機驅動器,其中AINl/AIN2、B01/B02、PWMA/PWMB為控制信號輸入端子,A01/A02、B01/B02為控制信號輸出端子,可實現兩個電機的同時控制。
2.4 通信模塊 本文采用無線藍牙通信方式實現平衡小車與上位機的通信,通過STM32F103C8T6單片機串口連接藍牙模塊,將單片機計算出的平衡小車姿態數據發送到上位機實時讀取。藍牙模塊電路主要通過引腳UART-TX和UART-RX與單片機連接。
2.5 姿態檢測模塊 本文采用傳感器MPU6050檢測平衡小車的角加速度和傾角。其中,MPU6050與STM32的通訊方式為IIC通信。該模塊電路有四個接口,VCC、GND、SDA、SCL,將SDA和SCL與STM32相連,通過上述的MPU6050的通訊協議,STM32變可實現對MPU6050數據的讀取。
2.6 速度采集模塊 平衡小車的實時速度采集對精確控制速度起著關鍵作用。在本設計中,使用增量式編碼器來測量速度。當車輪旋轉時,驅動編碼器旋轉。通過對編碼器在固定周期內輸出的脈沖數進行計數,可以測量實時速度。由于編碼器電源為5V,為防止主控制器損壞,外部計數器采用74LV4040A。當Q1引腳為低功率電平時,計數器開始計數,當Q1高功率電平時,計數器值被清除。
3.1 平衡小車算法設計 本文設計的平衡小車采用卷積神經網絡算法,利用大量樣本數據對其進行訓練,并利用卷積神經網絡對賽道元素進行識別,輔助平衡小車跟蹤算法,提高跟蹤精度。在本設計中,基于LeNet-5網絡模型設計了卷積神經網絡結構??紤]到實際使用中賽道元素圖像相對簡單,計算量減少,根據實際設計要求,對LeNet-5網絡結構進行簡化,設計出適合系統實際情況的網絡結構。本文將整個網絡結構由LeNet-5的8層結構簡化為6層結構,在網絡中利用C1-S4層提取特征,S4層輸出完成識別和分類功能[2]。
賽道元素樣本由平衡小車采集,圖像通過文本文件以灰度數據的形式保存到SD卡中,保存的樣本用于訓練。在PC端,首先構造網絡結構,對網絡參數進行隨機初始化,然后從SD卡中讀取樣本進行批量訓練學習。當網絡輸出滿足誤差要求時,訓練結束,網絡參數保存到本地。網絡訓練程序流程圖見圖2。

圖2 網絡訓練程序流程圖
卷積神經網絡主要用于確定賽道單元的類型,輔助平衡小車的轉向算法,提高平衡小車尋跡的精度。平衡小車首先構造卷積神經網絡,然后讀取SD卡中訓練好的網絡參數并初始化網絡。網絡框架完成后,可以對采集到的圖像進行識別。識別后,得到10位的輸出。通過比較十位的輸出,選擇輸出值最大的賽道對應編號。為了提高識別結果的可信度,需要對識別結果進行多次比較[3]。
3.2 平衡小車測試分析 在賽道上測試平衡小車的速度、尋跡精度和平衡穩定性,經過多次參數調試,試驗結果表明,平衡小車能調試的最快平均速度為1.70m/s,平衡小車運行時賽道元件無誤判,尋跡精度高。在平衡小車通過各賽道元件的試驗中,軌跡相對良好,沒有失控情況,平衡狀態相對穩定。由此可知,由此可以得知本文設計的基于單片機的平衡小車在速度、尋跡精度、平衡穩定性等方面具有良好的性能,值得在實踐中投入應用。