劉鵬,王雅欣,李晟堯,羅元澤,于夢龍
(天津職業技術師范大學 電子工程學院,天津, 300222)
隨著電子工業的發展,智能技術廣泛應用于各種領域,智能小車也因此快速發展起來,目前,國外已經開始研發無人駕駛汽車,并取得了明顯的進展;相比于國外,我國對于智能車的研究開發起步較晚,但是隨著這些年的不斷努力,我們也取得了顯著的成果。基于STM32的無線智能小車更是我們以后研究智能車過程中的基礎,我們要結合我國國情,在這一方面,對智能小車進行深入研究,為它今后的發展和應用打下堅實的基礎。本設計研究的無線視頻監控防疫智能小車是一種最新的設計理念,其主要功能是視頻監控,口罩識別,貨物的運輸等。它相對于其他智能小車具有無線操控的優點,可以靠WiFi來進行操控,便于工作開展,同時,它具有的視頻監控功能也可以做一個實時監控使用,能夠極大方便防疫工作者,它還可以在突發情況下執行危險任務,可以極大地減少人力成本,并且降低了受傷的風險。總的來說,無線視頻監控防疫智能小車人們的現代化生活起著不可缺失的作用[1~6]。
本文研究設計的智能小車以STM32C8T6單片機為主控芯片,其具備強大的數據運算和控制能力。小車系統主要由以下幾大模塊組成:STM32最小系統、K210視覺模塊、無線通訊模塊、電機驅動模塊和循跡模塊,可以實現視頻監控,口罩識別等功能。通過攝像頭采集小車前方信息,把采集到的信息反饋給用戶。同時,用戶也可以發送指令信息給小車,控制小車的移動。
本文設計的基于STM32的智能小車能夠實現的功能如下:
(1)自動循跡:通過三路紅外采集場景的最大值和最小值,紅外傳感器的值與最大值和最小值做差比和算法作為偏差PID的輸入值,開始循跡,通過手柄與NRFL2G4模塊輸入與輸出的轉換來自動循跡。
(2)口罩識別:通過K210視覺模塊實現口罩的佩戴檢測,K210能夠捕捉每一幀畫面,通過對人臉的檢測與分析,從而判斷客人是否戴口罩,并進行進一步處理。
(3)移動控制:控制手柄控制小車的前進、后退、左轉彎和右轉彎等功能。
(4)視頻監控:采用K210作為視頻信息的采集模塊,通過小車前面的攝像頭采集視頻信息,傳送到上位機端,從而使用戶可以清晰地獲取視頻信息。
該小車系統總體設計分為兩大類,硬件設計和軟件設計。
其設計的總體框架圖如圖1所示。

圖1 無線視頻監控防疫智能小車總體設計
用戶到達指定位置按下開關按鍵無人小車將會從起點出發到達指定位置,到達指定位置將會在小車的OLED屏幕進行提示,此時用戶可以通過OLED提示將所需運輸的物品放置于小車中,完成后撥動手柄的操作按鍵,小車便可以自動返回起始位置。
開始時手柄的NRFL2G4模塊為輸出模式,小車的NRFL2G4模塊為輸入模式,小車收到手柄發來的開始信號時小車的NRFL2G4模塊轉為輸出模式,手柄轉為輸入模式,小車開始掃描環境,通過三路紅外采集場景的最大值和最小值,紅外傳感器的值與最大值和最小值做差比和算法作為偏差PID的輸入值,開始循跡,小車速度閉環以編碼器的采集的值與目標速度做差作為速度閉環PID的輸入,偏差PID的輸出值與速度閉環PID的輸出值相加作為電機的PWM值發給進電機,當小車達到目標位置時電機速度值為零停轉,并向手柄發送信號,手柄與小車NRFL2G4模塊輸入輸出轉換,等用戶物品放置完成后,小車轉動再次開始循跡返回原點。
本文采用了K210模組來進行口罩識別。K210擁有強大的功能,智能小車可以在公共場所,比如藥店、菜市場門口、醫院入口等人員密集的地方使用,提醒人們佩戴口罩。
首先打開攝像頭,攝像頭捕捉每一幀畫面,從而檢測出人臉,在單個人臉區域的基礎上通過分析人臉屬性,進行區域剪裁,識別對比,從而判斷人臉是否佩戴口罩。如果未戴口罩,則反饋信息給STM32。經STM32處理后,通過語音來提示客人佩戴口罩。
手柄的設計如圖2所示,通過手柄來實現小車的移動控制,攝像頭實時獲取路況,通過無線通訊模塊把信息發送到手柄,手柄接收到信息后,用戶通過操控手柄的方向鍵來實現小車的基本移動功能。

圖2 遙控手柄的設計
攝像頭的基本工作原理為:攝像頭把采集到的物體景象生成光學圖像投射到圖像傳感器表面上,從而轉化為電信號,將此模擬電信號經過數模轉換為數字圖像信號,再對此信號進行數字信號處理和加工,即可在顯示器上看到相應的圖像了[7]。文獻[8-10]采用單片機分析人臉特征點,檢測其與頭部姿態的關系,實現了攝像頭的自動追蹤,但程序較為復雜。本文小車采用K210作為視頻信息的采集模塊,簡化了設計過程。當主控制器發出采集視頻指令,攝像頭便開始實時采集視頻信息,并且通過無線通訊模塊把采集到的信息傳輸到上位機端。從而使用戶可以清晰地獲取視頻信息。
電源模塊的作用主要是為控制系統提供穩定的工作電壓。LM2596是降壓型電源管理單片集成電路的開關電壓調節器,能夠輸出3A的驅動電流,而且它還具有很好的線性和負載調節特性。可以輸出多種電壓,比如3.3V、5V、12V,可調節版本可以輸出小于37V的各種電壓值。
本次設計采用LM2596作為穩壓電路,該芯片可以通過電路設計實現多電壓輸出,與線性穩壓電路相比,雖然電壓轉換效率相對低一些,但是產熱卻要低得多,防止主板被燒壞。LM2596電路原理圖如圖3所示。

圖3 LM2596電路圖
本設計采用的電機驅動模塊是TB6612,它是一款新型驅動器件,能獨立雙向控制2個直流電機。它占用體積小,發熱也少,輸出PWM也很簡單。TB6612電路原理圖如圖4所示。

圖4 TB6612電路原理圖
引腳功能描述,VM:最大可接+15V電源,本文采用+12V。VCC采用5V供電。板子上的三個GND、電源以及STM32的GND都要接在一起(共地)。STBY:使能端口,加3.3V或者5V電壓(高電平)。AIN1、AIN2、BIN1、BIN2:單片機對驅動模塊的輸入。AO1、AO2、BO1、BO2:驅動模塊對電機的輸入。PWMA、PWMB:對A和B口輸出PWM,通過PWM來調節電機的轉速。假如要驅動一個直流電機,那么PWMA口接單片機的PWM口,A01,A02 接電機的兩個腳。STBY置1,通過AIN1 AIN2,BIN1,BIN2 來控制正反轉。驅動一個直流電機的真值表如表1所示。

表1 真值表
小車采用了以K210為控制器的攝像頭模組,如圖5所示,該處理器使用Python語言來開發。Python的強大之處是封裝了大量的庫,用戶通過調用庫函數就可以高效地完成大量復雜的開發工作,零基礎的用戶也可以快速上手。K210集成了24P攝像頭接口,可以直接連接標準OV2640等24P攝像頭模塊,排線接線方式均為下接(排線金手指朝下)。由于攝像頭的排針均沒有電氣連接,所以可以根據自己需要任意擺放位置。大大增強了我們使用的靈活性。

圖5 攝像頭模組
隨著時代的進步,無線通訊技術也在快速地發展。WiFi作為一種無線局域網運用技術,組網方便、傳輸速度快以及易于擴展,應用十分廣泛[11]。與傳統通信方式相比,該通信方式覆蓋面積更大,傳輸速度高,適用于遠程操控和一些危險環境中使用。
本設計無線模塊選擇的是NRF24L01,它是一款工作2.4~2.5GHz世界通用ISM頻段的單片收發芯片,無線收發器包括:頻率發生器、模式控制器、功率放大器、晶體放大器、調制器、解調器。輸出功率頻道選擇和協議的設置可以通過SPI接口進行設置極低的電流消耗,通過單片機軟件模擬SPI與其通信調整輸入輸出模式,以及數據位。小車初始為接收模式,手柄調為發送模式。
K210作為識別模塊,主要實現口罩識別的功能,并將識別到的信息通過串口傳遞給STM32。首先通過MaixHub訓練一個口罩模型。準備至少100張戴口罩的圖片和至少100張不戴口罩的圖片。然后對這些圖片進行大小處理,建議設置為224*224,如果太大了訓練起來時間比較久。再對這些圖片進行標注,最后讓機器去學習,圖片越多識別率越高,當然訓練時間也越長。然后使用KFlash軟件,將模型下載到K210的flash中。口罩檢測流程圖如圖6所示。

圖6 口罩檢測流程圖
首先攝像頭讀取圖片,如果檢測到鼻子,則說明沒有佩戴口罩。如果沒有檢測到鼻子,則接著檢測眼睛,如果沒有檢測到眼睛,則結束。如果檢測到眼睛,則把RGB顏色空間轉為HSV顏色空間,進行口罩區域的檢測。最后,在知道口罩區域后,然后對像素點進行判斷就可以得出是否佩戴口罩。
紅外采用三路模擬輸出模塊,通過三路紅外采集場景的最大值和最小值,紅外傳感器的值與最大值和最小值做差比和算法作為偏差PID的輸入值,小車速度閉環以編碼器采集的值與目標速度做差作為速度閉環PID的輸入,偏差PID的輸出值與速度閉環PID的輸出值相加作為電機的PWM值給步進電機。移動控制系統流程圖如圖7所示。

圖7 移動控制系統流程圖
首先把編寫好的程序燒錄到開發板中,通過對Kp進行調整通過串口向主機發送數據通過VOFA的軟件觀察速度變化圖像,在Kp確定后引入Ki在消除穩態誤差后引入Kd,使抖動減小至系統穩定來調試參數,調參過程和結果分別如圖8,表2,圖9所示。

圖8 PID控制原理

圖9 不同Kp、Ki、Kd的輸出圖像

表2 不同Kp、Ki、Kd所對應的狀態
通過PID控制系統來對電機進行控制,數據結果如表3所示,然后對小車各個功能進行終測。小車可以正常掃描場地,可以從起始位置完整地運行到目標位置,通信方面在100m外仍然可以正常接收與發送信息,發送與接收模式的轉化也沒有問題。其中ad3為P0.2的檢測值,ad1為P0.0的檢測值,adelast為上一次的ade。

表3
圖10為作者本人口罩佩戴識別測試圖。首先K210會對檢測獲取到的目標框位置以及對人臉是否佩戴口罩進行打分。從圖10(a)中可以看到當K210檢測到人臉佩戴了口罩時,在顯示屏中會顯示綠框,并給出預測評分。從圖10(b)圖中可以看出當K210檢測到人臉未佩戴口罩時,則會在顯示屏中顯示紅框,并且會并給出預測評分。當分數超過65就判定為佩戴了口罩,在顯示屏當中顯示綠框標記;如果分數小于設定的閾值(本文設置為52),則判定為沒有佩戴口罩,在顯示屏當中顯示紅框標記,顯示對應的預測評分,然后返回繼續執行上述口罩識別的過程。

圖10 人臉口罩佩戴識別測試圖
經測試,隨著檢測距離的增加,口罩識別的準確性會慢慢下降。測試距離大于2m后,測試結果顯示沒有戴口罩,K210測試結果不準確。由此得出當距離在1.5m內測試結果比較準確。測試距離在0.5m時測試準確性最高。0.85~1.5m之間最為穩定。測試結果如表4所示。

表4 測試評分隨距離的變化
小車自動循跡測試圖如圖11所示,小車可以實現自動循跡功能。

圖11 小車循跡測試圖
本文設計的小車基本達到了預期的設計要求,可以在復雜環境中平穩運行,具有穩定的功能,實用的操作能力,有著高負載低功耗的優點,可以精準的識別是否佩戴口罩。它還可以減少社區人員交叉感染的風險,對疫情的防控和管理有著積極的作用。隨著自動化和智能化的普及,工業生產對于智能小車的要求也越來越高。本文的小車只是智能化小車的一個分支,設計的小車硬件比較簡單,功能不夠完善,但為以后更加智能化的設計打下了一個基礎。小車未來可以增加對人體體溫的檢測和二維碼的識別功能,并且結合人工智能大數據分析技術,對采集到的數據進行深入的研究和分析,在疫情防控中實現對日常人群的健康監控檢測[12]。