李萌 于洋
摘 要:應(yīng)用STM32F407微控制器平臺(tái)設(shè)計(jì)一款智能小車,結(jié)合紅外線檢測(cè)技術(shù)與超聲波檢測(cè)技術(shù),使小車能夠繞高臺(tái)陣地四周行走,且到邊緣自動(dòng)轉(zhuǎn)向,自動(dòng)檢測(cè)入侵障礙物,當(dāng)檢測(cè)到障礙物時(shí),進(jìn)行報(bào)警并攻擊移動(dòng)進(jìn)攻障礙物,因具備巡邏和防御功能可承擔(dān)“守門員”的任務(wù)。
關(guān)鍵詞:微控制器;紅外檢測(cè)技術(shù);超聲波檢測(cè)技術(shù)
Abstract:Using STM32F407 microcontroller platform to design a smart car,combined with infrared detection technology and ultrasonic detection technology,enables the car to walk around the high-position,and automatically change direction when reaching the edge,automatically detect the intrusion obstacles,Alarm and attack the mobile offensive obstacles when an obstacle is detected,can take on the task of "goalkeeper" because of the patrol and defense function.
Key words:Microcontroller;infrared detection technology;ultrasonic detection technology
現(xiàn)階段的智能小車“巡防”,在有白線或黑線路徑時(shí),多采用循跡方式,利用傳感器對(duì)黑白線進(jìn)行識(shí)別,從而沿預(yù)定軌跡進(jìn)行“巡視”。設(shè)計(jì)方式也多以輪式四輪小車為主,也可用紅外線進(jìn)行障礙物檢測(cè)。
本文針對(duì)形狀規(guī)則的高地,設(shè)計(jì)了一款智能小車,小車車體為方形,車輪采用全向輪,在硬件結(jié)構(gòu)的基礎(chǔ)上選用STM32F407為主要控制核心部件,配合電機(jī)控制板、紅外傳感器、超聲波傳感器等元件,可實(shí)現(xiàn)運(yùn)行速度、紅外傳感器的安裝位置及檢測(cè)精度、超聲波傳感器測(cè)量報(bào)警距離等可調(diào)的控制要求,使其適用在多種高地場(chǎng)合,實(shí)現(xiàn)其自動(dòng)巡查、報(bào)警、防御等功能。
1 硬件結(jié)構(gòu)設(shè)計(jì)
將整車分為行走系統(tǒng)、機(jī)械系統(tǒng)和控制系統(tǒng)幾大部分進(jìn)行設(shè)計(jì)。整車形狀為方形,在車架體四個(gè)方向各裝一個(gè)全向輪,能夠在兩個(gè)垂直的方向切換行走。通過電機(jī)實(shí)現(xiàn)轉(zhuǎn)向和行走,車體四個(gè)方向每一側(cè)各安裝一個(gè)超聲波傳感器,檢測(cè)到障礙物后,停止巡查,采用防御支架進(jìn)行旋轉(zhuǎn)或撞擊,未檢測(cè)到障礙物時(shí)可保持循環(huán)行走。
行走系統(tǒng)由全向輪和連軸器及電機(jī)組成,構(gòu)成了一個(gè)完整的行走單元。輪胎使用4寸全向輪,它的主要特點(diǎn)為可進(jìn)行前后移動(dòng)和左右移動(dòng),使整車可全方向移動(dòng)和旋轉(zhuǎn),采用與全向輪匹配的6mm 聯(lián)軸器,主要用于連接輪胎及電機(jī)。
本文在設(shè)計(jì)的過程將機(jī)械結(jié)構(gòu)分為了車架體和防御支架。車架體采用方形結(jié)構(gòu),設(shè)計(jì)理念為可以隨意旋轉(zhuǎn)移動(dòng),增加側(cè)面攻擊力,快速切換行走方向,雙面都可行走,上下蓋板用支架連接,減輕重量,利于散熱,行走及防御各需兩個(gè)電機(jī)作為執(zhí)行機(jī)構(gòu)。為保護(hù)輪胎、進(jìn)行防御撞擊,車體上配置防御支架。防御支架安裝在四個(gè)輪胎外圍,上下蓋板的連接支架上。
2 控制系統(tǒng)設(shè)計(jì)
控制系統(tǒng)主要包括了STM32F407微控制器、電源、電機(jī)驅(qū)動(dòng)板、檢測(cè)系統(tǒng)等,整機(jī)電源為12V可充電鋰電池,使用多路輸出DC-DC電壓轉(zhuǎn)換模塊,可將12V轉(zhuǎn)3.3V及5V,能夠同時(shí)為控制單元供電,電氣系統(tǒng)的整體設(shè)計(jì)如圖所示:
紅外線檢測(cè)分為4個(gè)探頭和一個(gè)中控板,探頭包括紅外線發(fā)射管和接收管。紅外線檢測(cè)模塊安全工作電壓范圍在3V至6V之間,4 路全開工作電流30mA至55mA之間。車體四個(gè)方向的防御支架下方安裝4個(gè)紅外傳感器檢測(cè)端,檢測(cè)端與紅外傳感器模塊連接,調(diào)整所在通道的電位器可以改變探測(cè)的距離。當(dāng)在高地上正常行走時(shí),紅外傳感器檢測(cè)模塊能夠采集到正常信號(hào),當(dāng)紅外傳感器檢測(cè)到已超出高地邊緣,紅外傳感器將給STM32F407相應(yīng)引腳低電平信號(hào),用以控制電機(jī)的方向,同時(shí)紅外傳感器模塊自帶指示燈,檢測(cè)到高地邊緣時(shí),指示燈即點(diǎn)亮。
超聲波測(cè)距部分使用HC-SRF05 超聲波測(cè)距模塊,HC-SRF05集成了超聲波發(fā)射器、接收器和控制電路,具備2cm-450cm范圍內(nèi)的的非接觸式距離感測(cè)功能,距離測(cè)量精度可達(dá)到3mm。
電機(jī)驅(qū)動(dòng)模塊具備雙路電機(jī)接口,每路額定輸出電流7A,有欠壓保護(hù)和電源瞬態(tài)干擾抑制功能,每路支持三線控制使能、正反轉(zhuǎn)及制動(dòng),使能信號(hào)可外接PWM進(jìn)行調(diào)速。
3 軟件設(shè)計(jì)
在主函數(shù)中完成時(shí)鐘、GPIO及TIM2、TIM3、TIM4、TIM5通用定時(shí)器的初始化,當(dāng)四個(gè)紅外檢測(cè)信號(hào)未觸發(fā),且前、后、左、右四個(gè)超聲波傳感器在檢測(cè)范圍內(nèi)未發(fā)現(xiàn)攻擊物體,小車在電機(jī)的作用下向前運(yùn)動(dòng)。當(dāng)前方紅外檢測(cè)信號(hào)觸發(fā),其它三個(gè)方向紅外檢測(cè)信號(hào)正常,且前、后、左、右四個(gè)超聲波傳感器在檢測(cè)范圍內(nèi)未發(fā)現(xiàn)攻擊物體,小車在電機(jī)的作用下向后運(yùn)動(dòng)2S后改為向左運(yùn)動(dòng),當(dāng)左邊紅外檢測(cè)信號(hào)觸發(fā),其它三個(gè)方向紅外檢測(cè)信號(hào)正常,且前、后、左、右四個(gè)超聲波傳感器在檢測(cè)范圍內(nèi)未發(fā)現(xiàn)攻擊物體,小車在電機(jī)的作用下向右運(yùn)動(dòng)2S后改為向后運(yùn)動(dòng),當(dāng)后方紅外檢測(cè)信號(hào)觸發(fā),其它三個(gè)方向紅外檢測(cè)信號(hào)正常,且前、后、左、右四個(gè)超聲波傳感器在檢測(cè)范圍內(nèi)未發(fā)現(xiàn)攻擊物體,小車在電機(jī)的作用下向前運(yùn)動(dòng)2S后改為向右運(yùn)動(dòng),如此循環(huán)完成四個(gè)方向的行走。一但出現(xiàn)對(duì)向紅外線檢測(cè)信號(hào)同時(shí)觸發(fā),或三個(gè)以上紅外檢測(cè)信號(hào)同時(shí)觸發(fā),系統(tǒng)報(bào)警。當(dāng)任意一方向超聲波傳感器距離值小于150cm(距離可根據(jù)場(chǎng)地情況進(jìn)行調(diào)節(jié)),小車即向此方向行駛,遇到邊緣后向后方退2S后,進(jìn)行原地旋轉(zhuǎn)尋找攻擊物體,并報(bào)警。
3.1 電機(jī)控制
首先定義電機(jī)控制端口,電機(jī)1控制信號(hào)對(duì)應(yīng)PC1、PC2,電機(jī)2控制信號(hào)對(duì)應(yīng)PA3、PA4,電機(jī)3控制信號(hào)對(duì)應(yīng)PB1、PB2,電機(jī)4控制信號(hào)對(duì)應(yīng)PB13、PB14,八個(gè)引腳連接至電機(jī)控制模塊。
進(jìn)行IO口的初始化:
3.1.1 使能時(shí)鐘
需要使用STM32F407的GPIOA、GPIOB、GPIOC、GPIOD、GPIOE的I/O端口,在使用前需要使能時(shí)鐘,才可使端口正常工作,可調(diào)用RCC_AHB1PeriphClockCmd函數(shù)進(jìn)行時(shí)鐘使能。
3.1.2 I/O口的初始化
配置上述I/O口模式為上拉推挽輸出、引腳速率為100MHz。
3.1.3 電機(jī)控制函數(shù)
定義5個(gè)電機(jī)控制子函數(shù),分別控制電機(jī)的前進(jìn)、后退、左行、右行、旋轉(zhuǎn)、停止。
void front_move(void);//小車前進(jìn)
void left_move(void);//小車左行
void right_move(void);//小車右行
void back_move(void);//小車后退
void rotate_move(void);//小車旋轉(zhuǎn)
void stop_move(void);//小車停止
其中,可通過對(duì)PC1、PC2、PA3、PA4、PB1、PB2、PB13、PB14的端口0/1狀態(tài)的改變來實(shí)現(xiàn)電機(jī)運(yùn)動(dòng)狀態(tài)的改變,如前進(jìn)時(shí),PC1、PB1為高電平,PC2、PB2為低電平,且另外四個(gè)引腳應(yīng)為低電平。同時(shí)設(shè)置三個(gè)端口連接電機(jī)驅(qū)動(dòng)模塊使能端,通過使能端的PWM信號(hào)進(jìn)行電機(jī)調(diào)速。
3.2 紅外線檢測(cè)
紅外線檢測(cè)信號(hào)為數(shù)字量信號(hào),定義4個(gè)紅外線檢測(cè)信號(hào)對(duì)應(yīng)的STM32F407的引腳PE5、PE6、PE7、PE8,當(dāng)相應(yīng)引腳檢測(cè)到低電平信號(hào)時(shí),即為處于邊緣狀態(tài),需要向反方向行使,是控制電機(jī)運(yùn)動(dòng)的條件之一。
#define Edge1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_5)
#define Edge2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_6)
#define Edge3 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_7)
#define Edge4 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_8)
紅外線檢測(cè)子函數(shù):
u8 IN_Scan()
{
if(Edge2==1&& Edge3==1)
{
if(Edge1==0&& Edge4==1)return2;
else if(Edge1==1&& Edge4==0)return1;
else return4;
}
else if(Edge2==0&& Edge3==1)return2;
else if(Edge2==1&& Edge3==0)return1;
else return3;
}
3.3 超聲波檢測(cè)
超聲波傳感器采用IO口TRIG觸發(fā)測(cè)距,分別定義PA1、PA2、PA5、PD0為超聲波觸發(fā)信號(hào)控制端口,給相應(yīng)端口15us的高電平信號(hào),例如其中一個(gè)端口控制信號(hào)程序如下:
GPIO_SetBits(GPIOA,GPIO_Pin_5);//引腳置為高電平
delay_us(15);//延時(shí)15us
GPIO_ResetBits(GPIOA,GPIO_Pin_5);//引腳置為低電平
STM32F407的上述相應(yīng)引腳給出15μs的高電平后,超聲波測(cè)距模塊的發(fā)射器會(huì)向前方發(fā)送8個(gè)40khz的方波,同時(shí)測(cè)距模塊檢測(cè)返回信號(hào),若有信號(hào)返回,STM32F407的PD3、PD4、PD5、PD9端口會(huì)接收到高電平;分別使用TIM2、TIM3、TIM4、TIM5中斷來計(jì)算每個(gè)超聲波傳感器的高電平信號(hào)所持續(xù)的時(shí)間,即超聲波從發(fā)射到返回的時(shí)間,(高電平時(shí)間*聲速)/2即為超聲波傳感器到物體之間的距離。
4 結(jié)論
本文設(shè)計(jì)了一款可用于規(guī)則高臺(tái)巡查的智能小車,小車外形為正方形,采用全向輪,四邊各一個(gè)輪胎,直角轉(zhuǎn)向方便。小車具有高臺(tái)邊緣檢測(cè)功能,車底安裝紅外線檢測(cè)裝置,檢測(cè)到小車行走至邊緣后切換行駛方向。小車車體四邊安裝四個(gè)超聲波檢測(cè)傳感器,檢測(cè)四個(gè)方向的進(jìn)攻障礙物,可通過開關(guān)設(shè)置和調(diào)節(jié)2cm-450cm范圍內(nèi)的檢測(cè)距離。檢測(cè)到障礙物后,小車發(fā)出報(bào)警聲音,并可手動(dòng)調(diào)整電機(jī)速度,小車減速緩慢行駛并對(duì)移動(dòng)障礙物攻擊,小車結(jié)構(gòu)輕便,功能全面,在規(guī)則性高臺(tái)環(huán)境下能夠起到較好的巡邏、報(bào)警、和攻擊作用。
參考文獻(xiàn):
[1]呂閃,金巳婷,沈巍.基于STM32的循跡避障智能小車的設(shè)計(jì)[J].計(jì)算機(jī)與數(shù)字工程,2017(03):549-552.
[2]蘇元楷,季磊,聶嘉欣,蔚國將,關(guān)玉琴.基于STM32F407的路徑識(shí)別智能小車設(shè)計(jì)[J].信息通信,2017(08):31-33.
[3]李帥男.基于STM32的循跡避障智能小車的設(shè)計(jì)[J].數(shù)字技術(shù)與應(yīng)用,2018(8):163-164.
[4]李亞巨,李戰(zhàn)勝,熊碧濤,樊東.基于stm32f103zet6的智能小車的制作[J].電子制作,2013(11):52-53.