王浩楠,黃宇新,唐金榮,肖江,周宇洋,胡安正
(湖北文理學(xué)院 物理與電子工程學(xué)院,湖北襄陽,441053)
該智能小車系統(tǒng)主要有四個(gè)基本部分,包括單片機(jī)、攝像頭處理模塊、載物檢測(cè)模塊和無線通信模塊,系統(tǒng)總體設(shè)計(jì)框圖如圖1所示。其中,使用STM32F103RC單片機(jī)作為主控單元;OpenMV攝像頭作為巡線單元,OpenART攝像頭用來識(shí)別數(shù)字;載物檢測(cè)選擇電阻式壓力傳感器;選用NRF24L01模塊做雙車通信,電機(jī)采用L298N驅(qū)動(dòng)。該系統(tǒng)可服務(wù)于電商物流、醫(yī)藥、食品等領(lǐng)域,代替人工對(duì)物體進(jìn)行配送或執(zhí)行無菌作業(yè)。
圖1
本單元主要由 STM32F103RC 單片機(jī)最小系統(tǒng),OLED顯示模塊、無線通信模塊NRF24L01組成。單片機(jī)的最小系統(tǒng)由電源電路、復(fù)位電路、時(shí)鐘電路和下載電路組成。
STM32F103RC單片機(jī)基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計(jì)的 ARM Cortex-M3 內(nèi)核,CPU 時(shí)鐘頻率72MHz,1.25DMips/MHz,2×12位ADC,256kFalsh,48K RAM,12個(gè)獨(dú)立的可配置的 DMA通道[1]。
智能送藥小車主控電源管理系統(tǒng)由供電電源,5V電源,3.3V攝像頭電源,舵機(jī)電源,電機(jī)驅(qū)動(dòng)電源組成。供電電源由8.4V航模電池給整個(gè)智能送藥小車供電。
2.2.1 舵機(jī)電源
舵機(jī)電源采用AS1015舵機(jī)方案,AS1015是一款高效率DC—DC轉(zhuǎn)換器,滿足5V輸出電流,帶負(fù)載能力強(qiáng)。該器件內(nèi)部包括電壓基準(zhǔn)源,使得輸入、輸出電壓可調(diào),AS1015輸入電壓范圍為3.6~23V,輸出電壓范圍為0.8V~VIN。原理圖如圖2所示。
圖2 舵機(jī)電源原理圖
2.2.2 主控電源
STM32單片機(jī)是系統(tǒng)的控制核心,它的穩(wěn)定性直接影響整個(gè)系統(tǒng)的工作。為了保證其正常工作且減少其他模塊對(duì)它的干擾,采用LM2940低壓差線性三端穩(wěn)壓器(LDO)方案,標(biāo)準(zhǔn)輸出電壓5V,最大輸出電流1A,器件內(nèi)部含有過流保護(hù)和電壓保護(hù),可以有效的保護(hù)單片機(jī)。原理圖如圖3所示。
圖3 主控電源原理圖
2.2.3 攝像頭電源
攝像頭的工作電壓一般為3.3V,采用RT9013-33方案,RT9013是一款高性能、輸出電流能力 500mA 的線性穩(wěn)壓器。其特性包括超低壓差電壓、高輸出精確度、限流保護(hù)、輸入電源和負(fù)載瞬態(tài)下具有超快的回應(yīng)的特點(diǎn)。攝像頭是模擬傳感器,其供電電壓的波動(dòng)性將會(huì)直接影響其性能,RT9013穩(wěn)壓后電壓波動(dòng)較小,用其對(duì)攝像頭單獨(dú)供電。
2.2.4 其他電源
考慮到系統(tǒng)還有其他模塊需要供電,但是對(duì)電源的線性度和精確度無過多的要求,故采用了AMS1117穩(wěn)壓。AMS1117是一個(gè)正向低壓降穩(wěn)壓器,且其內(nèi)部集成過熱保護(hù)和限流電路。線性調(diào)節(jié)器對(duì)輸出電壓進(jìn)行采樣,然后將其反饋給調(diào)節(jié)電路,以調(diào)整輸出級(jí)調(diào)節(jié)管的阻抗。當(dāng)輸出電壓較低時(shí),調(diào)整輸出級(jí)的阻抗以減小調(diào)節(jié)管的壓降。當(dāng)輸出電壓較高時(shí),調(diào)整輸出級(jí)的阻抗以增加調(diào)節(jié)管的壓降,從而保持輸出電壓的穩(wěn)定性。
2.3.1 L298N簡(jiǎn)介
電機(jī)驅(qū)動(dòng)采用L298N。L298N是一種特殊的驅(qū)動(dòng)集成電路,屬于H橋集成電路。L298N和L293D的區(qū)別在于其輸出電流增加,功率增加。其輸出電流為2A,最大電流為4A,最大工作電壓為50V??沈?qū)動(dòng)大功率直流電機(jī)、步進(jìn)電機(jī)、電磁閥等感性負(fù)載,特別是其輸入端可直接與單片機(jī)連接,便于單片機(jī)控制。在驅(qū)動(dòng)直流電機(jī)時(shí),可直接控制步進(jìn)電機(jī),實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn)。要實(shí)現(xiàn)此功能,只需改變輸入端的邏輯電平即可。
2.3.2 驅(qū)動(dòng)的實(shí)現(xiàn)方式
L298N一共有四個(gè)邏輯輸入口,每?jī)蓚€(gè)為一組可以控制一個(gè)電機(jī)的正轉(zhuǎn)和反轉(zhuǎn)。在該設(shè)計(jì)中需要驅(qū)動(dòng)四個(gè)電機(jī)運(yùn)行,故將四個(gè)電機(jī)分成兩組,兩兩并聯(lián)。使用單片機(jī)的定時(shí)器PWM模式生成四路頻率為10kHz的PWM波。然后單片機(jī)的I/O端口分別與L298N的四個(gè)邏輯輸入口相連,以便于控制小車的正轉(zhuǎn)和反轉(zhuǎn),將兩個(gè)電機(jī)的正極和負(fù)極分別接入L298N的輸入口。該芯片的控制邏輯如表1所示[2]。
從表1可以看出,單片機(jī)通過I/O端口將不同的高電平或低電平組寫入芯片的信號(hào)輸入端可以相應(yīng)地控制電機(jī)的轉(zhuǎn)向。在本設(shè)計(jì)中,IN1和IN3為一組控制一個(gè)電機(jī),IN2和IN4為一組控制另一個(gè)電機(jī),當(dāng)IN1、IN3 為高電平,IN2、IN4 為低電平時(shí),小車前進(jìn),當(dāng)IN1、IN4 為高電平,IN2、IN3 為低電平,左側(cè)輪正轉(zhuǎn),右側(cè)輪反轉(zhuǎn),實(shí)現(xiàn)小車的差速轉(zhuǎn)向。
表1 電機(jī)控制方式
載物檢測(cè)采用了FSR402電阻式薄膜壓力傳感器,它是一款重量輕、體積小、感測(cè)精度高、超薄型電阻式壓力傳感器。這款傳感器是將施加在FSR傳感器薄膜區(qū)域的壓力轉(zhuǎn)換成電阻值的變化,從而獲得壓力信息。壓力越大,電阻越低。其適用于壓力為0g~10kg的場(chǎng)合。
根據(jù) FSR402數(shù)據(jù)手冊(cè)中對(duì)于FSR402特性的描述,可以知道在輸出管腳之間的的電阻和壓力之間的關(guān)系如下。
在起始階段,當(dāng)壓力突破一定壓力閾值之后,導(dǎo)通電阻有一個(gè)突破,這個(gè)閾值之前FSR相當(dāng)于一個(gè)開關(guān)。當(dāng)超過這個(gè)閾值的時(shí)候,F(xiàn)SR的電阻與壓力之間就呈現(xiàn)一種連續(xù)變化的關(guān)系。通過單片機(jī)ADC采集得到壓力的數(shù)值,當(dāng)時(shí)壓力的數(shù)值超過設(shè)定的閾值后,認(rèn)為藥品裝載完畢,從而完成藥品的檢測(cè)。
軟件程序設(shè)計(jì)主要包括:①OpenMV獲取病房走廊的路線信息,主控MCU得到路線信息后對(duì)小車進(jìn)行調(diào)整,保證其能夠穩(wěn)定行駛。②OpenART識(shí)別不同類型的目標(biāo)病房號(hào)碼,將識(shí)別的圖像作為一個(gè)信息單元進(jìn)行存儲(chǔ)。③主控MCU獲取到的號(hào)碼信息與目標(biāo)病房進(jìn)行匹配,通過攝像頭識(shí)別算法,將小車準(zhǔn)確無誤地行駛到對(duì)應(yīng)的病房。
3.1.1 自動(dòng)尋徑算法
自動(dòng)尋徑算法主要使用OpenMV的像素顏色統(tǒng)計(jì)實(shí)現(xiàn),尋徑示意圖如圖4所示。首先從OpenMV的視野中設(shè)置一個(gè)感興趣區(qū)(ROI)的矩形區(qū)域,然后對(duì)這個(gè)區(qū)域進(jìn)行顏色統(tǒng)計(jì),如果顏色閾值在紅色閾值范圍內(nèi),則認(rèn)為該區(qū)域內(nèi)包含紅實(shí)線。將包含紅實(shí)線的區(qū)域使用庫函數(shù)img.draw_rectangle()框選出來,然后將blob色塊對(duì)象中的中心坐標(biāo)blob.cx()通過串口發(fā)送給單片機(jī)。最后單片機(jī)通過標(biāo)記信息判斷小車相對(duì)于紅實(shí)線的偏移程度,并利用PID算法精準(zhǔn)控制小車的轉(zhuǎn)向角并及時(shí)調(diào)整小車的前進(jìn)方向,即可完成自動(dòng)尋徑。
圖4 循跡示意圖
3.1.2 自適應(yīng)閾值算法
由于攝像頭圖像容易收到環(huán)境光的影響,提前設(shè)置好的閾值有可能并不適合實(shí)際比賽或者應(yīng)用場(chǎng)地,故提出一種基于OpenMV攝像頭的自適應(yīng)閾值算法,該算法適合比賽應(yīng)用或者抗光干擾實(shí)驗(yàn)。
首先獲取感興趣區(qū)域(ROI)中最大的色塊,將其余干擾濾除,然后調(diào)用OpenMV的統(tǒng)計(jì)函數(shù),分別計(jì)算R、G、B三個(gè)顏色分量的眾數(shù),得到它們的最大值和最小值并轉(zhuǎn)換為L(zhǎng)AB值,將新的閾值數(shù)據(jù)重新賦值給閾值數(shù)組,最終實(shí)現(xiàn)閾值的自動(dòng)更替。算法流程框圖如圖5所示。
圖5 自適應(yīng)閾值算法流程框圖
3.2.1 輸入層圖像大小
神經(jīng)網(wǎng)絡(luò)的輸入層決定了輸入圖像大小。圖像越大,越能更好的保存原始圖像信息,但運(yùn)算時(shí)間也會(huì)大大增加。相反,小圖像可以快速完成矩陣運(yùn)算,但是對(duì)原始圖像信息保存并不完整。考慮到OpenART的工作性能,經(jīng)過多次實(shí)驗(yàn),我們最終選擇將圖像縮放為48×48像素[3]。
3.2.2 卷積層、池化層疊加
由于卷積運(yùn)算過于消耗算力,同時(shí)數(shù)字1~8的特征比較明顯,提取起來并不困難,所以不需要太多的卷積層連接。同時(shí)池化層能夠減小運(yùn)算后圖像大小,節(jié)約算力的同時(shí)實(shí)現(xiàn)降采樣,防止過擬合。因此,將網(wǎng)絡(luò)模型設(shè)計(jì)為3層卷積層與池化層連接,最終以全連接層輸出實(shí)現(xiàn)數(shù)字分類[4]。數(shù)字識(shí)別效果如圖6所示。
圖6 數(shù)字識(shí)別效果圖
本系統(tǒng)采用 STM32 作為小車控制核心,通過使用兩個(gè)攝像頭分別處理尋線和識(shí)別數(shù)字等操作,加強(qiáng)了系統(tǒng)的圖像分析處理能力,使小車能夠快速的識(shí)別病房號(hào),實(shí)現(xiàn)了設(shè)計(jì)要求的巡線,數(shù)字識(shí)別等內(nèi)容,小車采用四輪驅(qū)動(dòng)抗干擾性較強(qiáng),實(shí)物圖如圖7所示。在圖像識(shí)別的過程中,能夠減少抖動(dòng)提高了巡線的穩(wěn)定度和精確度。在當(dāng)前新冠疫情背景下,該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,可以救助病人,為隔離者提供服務(wù),可避免醫(yī)護(hù)人員與患者的直接接觸,從而降低傳染風(fēng)險(xiǎn)。
圖7 作品實(shí)物圖