一種基于STM32的撿球機(jī)系統(tǒng)設(shè)計(jì)
本設(shè)計(jì)以STM32單片機(jī)為主控,考慮到撿球機(jī)的獨(dú)立工作性,故采用獨(dú)立電源供電。撿球機(jī)的移動(dòng)裝置以直流電機(jī)驅(qū)動(dòng),尋球裝置以攝像頭圖像傳感器模塊構(gòu)成,并搭配以圖像檢測算法。避障裝置以紅外檢測和報(bào)警模塊為主,以防在行動(dòng)過程中觸碰障礙物。圖1為系統(tǒng)的總體設(shè)計(jì)框圖。
一、主程序流程圖設(shè)計(jì)
此次設(shè)計(jì)開發(fā)環(huán)增是和用Ken uvision5軟件來編寫,本設(shè)計(jì)的主程序設(shè)計(jì)是將硬件部分包括STN32系統(tǒng)板,紅外檢測模塊,OpenV3圖像傳感器摸塊,電機(jī)驅(qū)動(dòng)模塊,蜂鳴器模塊等通過軟件程序語言有機(jī)地結(jié)合在一起,實(shí)現(xiàn)乒乓球自動(dòng)撿球機(jī)的自動(dòng)撿球功能。
本設(shè)計(jì)中,用STM32F103C8T6單片機(jī)串口3與0pnMV3撙塊STM32E676芯片串口連接,即OpenMV3模塊P4引腳連接STM32單片機(jī)PB11接口,P5引腳連接P10、利用STM32串口中斷,實(shí)現(xiàn)OpenMV3模塊與單片機(jī)之間的串口通信。單片機(jī)通信串口與圖像傳感器模塊通信串口連接,不斷接收攝像頭所尋找的信號(hào),當(dāng)鏡頭視野沒有乒乓球時(shí),控制小車稍微向左前方行走帶動(dòng)鏡頭掃描,然后再向右前方行走掃描,若鏡頭識(shí)別到乒乓球,開始判斷乒乓球是否在視野中心的位置。若乒乓球在視野中心,則檢球機(jī)前進(jìn)檢球,若乒乓球不在視野中心,判新乒乓球在視野左邊或右邊,調(diào)整小車左轉(zhuǎn)或右轉(zhuǎn),直到乒乓球在視野中心,然后小車前進(jìn),裝在小車前方的滾輪式乒乓球撿球器將乒乓球拾講球框里,完成自動(dòng)檢球、單片機(jī)。D口PA4連接峰鳴器摸塊,PB4連接紅外模塊,紅外模塊感應(yīng)前方礙物,即感應(yīng)乒丘球、當(dāng)檢測到丘丘球時(shí),即為撿滿丘丘球、單片機(jī)0口接收到一個(gè)件電平信號(hào)單片機(jī)威應(yīng)信號(hào)并給蜂鳴器模塊10口發(fā)出高電平信號(hào),同時(shí)給電機(jī)模塊全部高電平信號(hào),蜂鳴器發(fā)出警報(bào),電機(jī)停止轉(zhuǎn)動(dòng),即自動(dòng)檢球機(jī)停止檢球。程序語言循環(huán)執(zhí)行,不斷完成自動(dòng)檢球動(dòng)作。主程序流程圖如圖2所示。
二、主要功能模塊分析
1、顏色識(shí)別算法
本設(shè)計(jì)軟件編寫首先需要對OpenMV3模塊顏色程序進(jìn)行編寫,使用具有語法高亮的OpenMV IDE來編寫程序,首先在電腦上下載安裝!DE軟件,安裝完成后,打開軟件,將模塊連接電腦,即可看到OpenMV3的界面,用C語言對視覺算法進(jìn)行編寫。
OpenMV3識(shí)別顏色的機(jī)器視覺原理,首先需要利用閾值進(jìn)行二值化,二值圖像是經(jīng)過二值化后的圖像亮度值只有(0)黑和(255)白兩種狀態(tài)。因?yàn)楸驹O(shè)計(jì)要識(shí)別的圖像是彩色的,即本設(shè)計(jì)所要識(shí)別的乒乓球顏色為橙色,所以需要對顏色識(shí)別色彩空間進(jìn)行調(diào)整,本設(shè)計(jì)所使用的是Lab顏色空間,上ab顏色空間中。上代表Luminosix、即照明度。!的取值范用是10.1001.0表示純黑色,100則是純白色。a和b是兩個(gè)不同顏色的顏色軸,a的取值范圍是F-128,1271,負(fù)數(shù)表示的顏色是綠色,正數(shù)為紅色;b的取值范圍和a一樣,負(fù)數(shù)是藍(lán)色,正數(shù)為黃色。所以顏色識(shí)別有(minL,maxL,minA,maxA,minB,maxB)這三個(gè)閾值,一共六個(gè)值。調(diào)整這六個(gè)數(shù)的數(shù)值即可調(diào)出橙色所需的值。
然后,通過對圖像進(jìn)行的逐行逐列的掃描,按照算法一定的規(guī)則標(biāo)記連通區(qū)域,來得到對象的個(gè)數(shù),同時(shí)統(tǒng)計(jì)每一個(gè)區(qū)域所包含的像素個(gè)數(shù),再用標(biāo)尺轉(zhuǎn)換最后就可以得到想要測得的區(qū)域面積,在閾值編輯器上使自己想要的目標(biāo)顯示出來,就可以識(shí)別所需要的目標(biāo)顏色塊,即乒乓球顏色的閾值。
打開編寫軟件,調(diào)用集成模塊程序,打開國值編輯器工具,不斷調(diào)整LAB的聞值,直到識(shí)別物體為調(diào)出乒乓球大小,且顏色為橙色的閾值,經(jīng)過實(shí)物的不斷調(diào)試,在日光燈照明無太陽光線照射下,最終確定,其LAB閾值為(51.86.15.53.17.77)。
在鏡頭視野中間鏡頭設(shè)識(shí)別中心,鏡頭識(shí)別到乒乓球信號(hào),將信號(hào)提取通過電口發(fā)送給STM32單片機(jī),判斷識(shí)別到的乒乓球在所設(shè)中心的左邊還是右邊,單片機(jī)驅(qū)動(dòng)電機(jī)調(diào)整檢球裝置,使乒乓球處干視野中心,然后將確定信號(hào)發(fā)送給STN32E103C8T6單片機(jī),當(dāng)鏡頭視野識(shí)別到多個(gè)乒乓球時(shí),只取離所設(shè)中心最近的乒乓球信號(hào),然后將鏡頭識(shí)別出的信號(hào)通過串口通信發(fā)送給主控單片機(jī)STM32F103C8T6.STM32F103C8T6接收信號(hào)后即可進(jìn)行下一步指令運(yùn)行。
2、避障程序設(shè)計(jì)
撿球機(jī)在行走過程中,為了避免碰到障礙物,需要進(jìn)行避障程序設(shè)計(jì)。避障模塊采用紅外檢測原理,所以軟件程序設(shè)計(jì)也就相對簡單,運(yùn)用STM32單片機(jī)定時(shí)器中斷對避障進(jìn)行算法控制,紅外傳感器模塊輸出端口直接與單片機(jī)的!0口連接,當(dāng)其檢測方向檢測到障礙物后,輸出端接口會(huì)輸出一個(gè)數(shù)字信號(hào),即一個(gè)低電平信號(hào)。其電平信號(hào)的轉(zhuǎn)換即可通過程序語言改變直流電機(jī)轉(zhuǎn)向,從而控制撿球機(jī)的避障。在本設(shè)計(jì)中分別在撿球機(jī)前面與后面的左右兩邊上各裝一個(gè)紅外模塊,當(dāng)左前方檢測到障礙物后,撿球機(jī)后退并向右轉(zhuǎn)彎,當(dāng)右前方檢測到障礙物后,撿球機(jī)后退并向左轉(zhuǎn)彎,然后再繼續(xù)執(zhí)行尋找乒乓球的程序指令。同理,當(dāng)后方紅外檢測到障礙物,撿球機(jī)向前行走躲避。
3、收集框中球滿的處理
當(dāng)乒乓球自動(dòng)檢球機(jī)撿滿乒乓球時(shí),無法在收集球時(shí)需要設(shè)計(jì)相應(yīng)的電路。設(shè)計(jì)一個(gè)報(bào)警電路進(jìn)行提醒,該報(bào)警電路為紅外感應(yīng)模塊與蜂鳴器模塊共同組成。單片機(jī)兩個(gè)引腳被分配來分別連接紅外感應(yīng)模塊和蜂鳴器摸塊,分別對應(yīng)連接為PB4和PA4接口,當(dāng)紅外模塊感應(yīng)到丘丘我滿時(shí),黑要報(bào)警,單片機(jī)PA43購輸出高電平在S850放大作用下,電酒接通 電路導(dǎo)通,蜂鳴器長響,實(shí)現(xiàn)聲音報(bào)警。報(bào)警聲音響時(shí),單片機(jī)驅(qū)動(dòng)電機(jī)停止轉(zhuǎn)動(dòng),即讓撿球機(jī)停止撿球。