基于STM32的重力感應無線智能遙控小車設(shè)計
0 引 言
隨著社會進步,電子消費產(chǎn)品的需求越來越高,遙控智 能車輛以及在智能化車輛基礎(chǔ)上開發(fā)出來的產(chǎn)品已廣泛應用到 自動化物流運輸?shù)阮I(lǐng)域。目前,遙控智能車輛大多采用無線 傳輸方式,而無線傳輸逐漸取代有線傳輸不僅是因為“無線”, 更因為在安裝、增減節(jié)點方面都比有線方式方便、快捷,因此 得到了廣泛的應用 [1]。
本設(shè)計首先采集手持遙控端的傾角信息并進行處理、生 成指令,然后無線發(fā)送給智能小車,賦予智能小車更靈活的 運動狀態(tài)和更寬廣的運動范圍。設(shè)計靈活,操作方便,控制 穩(wěn)定,制作成本低,可應用于視線可觀察但人體涉及不到的區(qū) 域,可制作成高端智能玩具,或應用于工業(yè)控制,與實際相結(jié) 合,有良好的現(xiàn)實意義和市場經(jīng)濟價值 [2]。
1 系統(tǒng)硬件電路設(shè)計
采用整體設(shè)計的方法進行設(shè)計,系統(tǒng)硬件主要由兩大 部分構(gòu)成 [3],即以 NUCLEO-L053 為控制核心的手持遙控 端和以 STM32F103C8Tx 為控制核心的智能小車。手持遙控 端 是 以 ADXL345、OLED12864 與 nRF24L01 為 基 礎(chǔ) 的 檢 測傾角裝置,顯示參數(shù)裝置和無線發(fā)射裝置。采用的 MCU 為STM32L053R8T6,由 ADXL345 不斷檢測手持設(shè)備的姿 態(tài),在 OLED上顯示傾角值,傳給 MCU。MCU 把處理好 的數(shù)據(jù)轉(zhuǎn)為小車動作指令,最后通過 nRF24L01 模塊發(fā)射給 小車。小車以 nRF24L01 和 L298N 為基礎(chǔ),采用的 MCU 為 STM32F103C8Tx,通過 nRF24L01 模塊接收遙控設(shè)備發(fā)送的 數(shù)據(jù)包,然后把數(shù)據(jù)包傳給 MCU 進行處理,MCU 把處理好 的數(shù)據(jù)包轉(zhuǎn)換為相應指令,由 STM32 兩路定時器通道產(chǎn)生兩 路 PWM 波控制電機驅(qū)動 L298N,從而實現(xiàn)對小車運動狀態(tài) 的調(diào)整。并結(jié)合 NUCLEO-L053 板載獨立按鍵對 ADXL345 校準和 OLED 再次初始化,從而增強產(chǎn)品的可靠性、穩(wěn)定性、 功能性優(yōu)勢。
1.1 手持遙控端電路設(shè)計
按照模塊化設(shè)計思想 [4],手持遙控端主要由傾角傳感器 模塊 ADXL345、遙控端控制模塊 NUCLEO-L053、無線收發(fā) 模塊 nRF24L01、液晶顯示模塊 OLED12864、電源模塊等構(gòu) 成。傾角傳感器模塊 ADXL345 主要用于檢測手持遙控端的傾 角狀態(tài),并將傾角信息傳給遙控端控制模塊 NUCLEO-L053 進行處理,生成指令通過無線收發(fā)模塊 nRF24L01 發(fā)送給智 能小車。液晶顯示模塊 OLED12864 進行角度、加速度等信息 顯示,電源模塊給各功能模塊供電,保證這些模塊可正常工作。 本設(shè)計引入卡爾曼濾波算法 [5] 對手持遙控端的狀態(tài)角度進行 優(yōu)化,能夠有效減少輸出信號的毛刺波動,避免小車運行過 程中頻繁出現(xiàn)卡頓現(xiàn)象,從而讓小車的行駛更平滑。手持遙 控端設(shè)計框圖如圖 1 所示。
傾角傳感器模塊使用 ADI 公司生產(chǎn)的基于 iMEMS 技術(shù) 的 3 軸、數(shù)字輸出傾角傳感器 ADXL345[6]。該模塊具有標準I2C 或 SPI 數(shù)字接口及高分辨率等特征,自帶 32 級 FIFO 存儲,是目前廣泛使用的數(shù)字傾角傳感器。傾角傳感器產(chǎn)生經(jīng) 過內(nèi)部 AD 轉(zhuǎn)換電路后輸出的數(shù)字信號,計算導出加速度信息。 在具體工作時,傾角傳感器會因微小振動產(chǎn)生噪聲,此時需要 卡爾曼濾波與加速度計相互作用,調(diào)整參數(shù)將誤差降到最小。
卡爾曼濾波(Kalman Filtering)是一種利用線性系統(tǒng)狀 態(tài)方程,通過系統(tǒng)輸入輸出觀測數(shù)據(jù),對系統(tǒng)狀態(tài)進行最優(yōu) 估計的算法。在本設(shè)計中,主要對角度信息進行最優(yōu)估計,分 為如下 4 步:
(1)根據(jù) k-1 時刻的最優(yōu)角度值及偏差預估 k 時刻的角 度值(估計值);
(2)根據(jù) k-1 時刻的最優(yōu)角度值偏差與 k 時刻的估計值 偏差得到 k 時刻估計值的高斯白噪聲;
(3)根據(jù) k 時刻測量值與估計值的協(xié)方差判定權(quán)重大小, 得到最優(yōu)角度值 ;
(4)根據(jù) k 時刻的最優(yōu)角度值及偏差預估 k+1 時刻的角 度值(估計值)。通過循環(huán)迭代就可以得到最優(yōu)的狀態(tài)角度估 計值。
NUCLEO-L053 為 ST 推出的一種基于 Cortex-M0+ 內(nèi)核 的遙控端控制模塊 [7],其 CPU 最高系統(tǒng)時鐘可達 32 MHz, 可充分滿足本設(shè)計所用的模塊時鐘頻率 ;內(nèi)含 64 KB Flash 和 8 KB RAM,可提供足夠大的堆??臻g,滿足復雜程序;具有 本設(shè)計所需的 I2C、SPI、USB 全速接口,提供 MCU 和模塊 間高速的通信方式 ;板載獨立按鍵和 LED,可供用戶自定義 使用。
無線收發(fā)模 塊 nRF24L01[8] 工作 在 2.4 G 的全球開放 免許可 ISM 頻段,GFSK 調(diào)制,工作速率高達 2 Mb/s 且抗 干擾能力強,擁有多達 125 個可選頻道,可以滿足多點通信 和調(diào)頻通信的需求。采用 SPI 方式進行手持遙控端無線收 發(fā)模塊 nRF24L01 與控制模塊 NUCLEO-L053 之間的連接。 ADXL345 與控制模塊的連接如圖 2 所示。
1.2 智能小車電路設(shè)計
智能小車主要由無線收發(fā)模塊 nRF24L01,小車控制模 塊 STM32F103C8Tx,電機驅(qū)動模塊 L298N,電源模塊等組成。 無線收發(fā)模塊接收手持遙控端發(fā)出的控制指令,傳送給小車 控制模塊進行處理,由 STM32F103C8Tx 的定時器 4 產(chǎn)生對 應的兩路 PWM 波,調(diào)節(jié) L298N 驅(qū)動兩臺直流電機完成對應 動作。智能小車的設(shè)計框圖如圖 3 所示。
STM32F103C8Tx 是目前應用非常廣泛的一款 ARM 芯片, 采用 Cortex-M3 內(nèi)核,擁有 16 KB ~1 MB Flash 存儲,高達 72 MHz 的 CPU 運行速率,多種控制外設(shè),USB 全速接口和 CAN 等。在本設(shè)計中用來處理 nRF24L01 接收的數(shù)據(jù)包、控 制 L298N 電機驅(qū)動模塊等。
電機驅(qū)動使用 L298N 驅(qū)動兩臺直流電機 [9]。此款芯片具 有工作電壓高,輸出電流大等特點,額定功率為 25 W。本設(shè) 計電機驅(qū)動使用 6 節(jié) AA 電池,輸入電壓為 9.5 V,可直接驅(qū) 動兩臺電機。通過引腳 A,B 輸入定時器 4 產(chǎn)生的兩路 PWM 信號對電機進行調(diào)速控制。L298N 模塊驅(qū)動電路如圖 4 所示。
為保證小車的運行速度,無需進行調(diào)速,全速行駛,加 在 L298N 驅(qū)動上的電壓為 6 ~12 V,而 STM32 需要的最大 電壓為 3.3 V,為了節(jié)省資源,減少電源模塊,需要降壓。選 用 AMS1117 芯片降壓 [10]。電源模塊降壓電路如圖 5 所示。
2 系統(tǒng)軟件設(shè)計
本系統(tǒng)軟件程序設(shè)計由兩大部分組成,即手持遙控端軟 件程序和智能小車軟件程序。手持遙控端軟件程序首先上電 進行初始化,主要是 ADXL345 模塊初始化,然后系統(tǒng)正常工 作。ADXL345 模塊不斷檢測傾斜角度的改變,控制模塊對傾 角傳感器姿態(tài)數(shù)據(jù)進行處理,將加速度數(shù)據(jù)轉(zhuǎn)換成傾角角度, 并進行卡爾曼濾波,判斷傾斜角度是否超出閾值,若超過則 發(fā)送小車運動指令。智能小車軟件程序接收手持遙控端的指令進行處理之后驅(qū)動小車,接收端對接收到的指令進行判斷, 控制小車作出前進、后退、轉(zhuǎn)彎等動作。軟件程序流程如圖 6 所示。
完成軟硬件設(shè)計之后就開始對本設(shè)計進行系統(tǒng)整體測試 工作。通過改變手持遙控端的傾角信息,可以在 OLED上正 常顯示傳感器姿態(tài)信息,無線收發(fā)裝置可以正常收發(fā)指令, 控制智能小車的前進、后退、左轉(zhuǎn)、右轉(zhuǎn)等運動狀態(tài)。手持 遙控端和智能小車的實物圖如圖 7 所示。
3 結(jié) 語
本文應用傾角信息采集模塊與無線數(shù)據(jù)傳輸模塊設(shè)計了 一種重力感應無線智能遙控小車,并重點介紹了手持遙控端 與智能小車的硬件電路與軟件程序設(shè)計。手持遙控端采集傾 角信息,經(jīng)卡爾曼濾波處理,控制模塊發(fā)出指令,通過無線 方式控制智能小車完成相應動作。經(jīng)測試,所設(shè)計的重力感 應無線智能遙控小車操作靈活,使用方便,且具有較高的穩(wěn) 定性與廣闊的應用前景。