冼進(jìn)
(華南理工大學(xué),計(jì)算機(jī)科學(xué)與工程學(xué)院, 廣東,廣州 510006)
嵌入式系統(tǒng)應(yīng)用課程是計(jì)算機(jī)本科實(shí)踐教學(xué)比較綜合的技術(shù)開(kāi)發(fā)課程,由硬件系統(tǒng)和軟件系統(tǒng)兩部分組成,也是各高校最受歡迎和最熱門(mén)的核心專業(yè)課程之一。由于綜合應(yīng)用了硬件、軟件系統(tǒng),微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)設(shè)計(jì)技術(shù)有機(jī)融合,強(qiáng)調(diào)專業(yè)知識(shí)與社會(huì)前沿硬件開(kāi)發(fā)技術(shù)相結(jié)合,理論知識(shí)點(diǎn)多,覆蓋學(xué)科面廣,學(xué)生要熟練掌握應(yīng)用開(kāi)發(fā)有比較大的難度,學(xué)習(xí)時(shí)感覺(jué)內(nèi)容枯燥乏味,實(shí)踐開(kāi)發(fā)無(wú)從下手,實(shí)踐教學(xué)效果不太理想,綜合能力中下的學(xué)生對(duì)此課程興趣不大。為改變現(xiàn)狀,引入經(jīng)典嵌入式開(kāi)發(fā)模擬項(xiàng)目智能小車(chē)設(shè)計(jì),智能小車(chē)設(shè)計(jì)能體現(xiàn)嵌入式課程實(shí)踐教學(xué)所有知識(shí)點(diǎn),通過(guò)實(shí)現(xiàn)一個(gè)有意義的嵌入式實(shí)體項(xiàng)目開(kāi)發(fā)過(guò)程來(lái)吸引學(xué)生興趣,引導(dǎo)學(xué)生逐步掌握嵌入式系統(tǒng)的開(kāi)發(fā)過(guò)程,圍繞智能小車(chē)開(kāi)展實(shí)踐教學(xué)內(nèi)容,培養(yǎng)學(xué)生創(chuàng)新意識(shí)和創(chuàng)新能力,有助于學(xué)生真正掌握嵌入式系統(tǒng)課程實(shí)踐的關(guān)鍵內(nèi)容,能夠極大地激發(fā)學(xué)生的積極性、想象力和創(chuàng)造力,為學(xué)生后續(xù)從事相關(guān)科研工作奠定良好的基礎(chǔ)[1-3]。
適合嵌入式教學(xué)需求設(shè)計(jì)的智能小車(chē)具有如圖1所示的功能模塊。智能小車(chē)以通用的STM32微處理器作為核心控制單片機(jī),內(nèi)嵌操作系統(tǒng)支持實(shí)時(shí)多任務(wù)、可編程軟件控制、配備多種傳感器模塊、無(wú)線遙控遠(yuǎn)距離操控、四驅(qū)動(dòng)馬達(dá)、具有豐富擴(kuò)展功能的智能車(chē)系統(tǒng)。通過(guò)網(wǎng)上采購(gòu)到通用智能小車(chē)底盤(pán)車(chē)架、STM32核心控制及各類(lèi)功能模塊,并結(jié)合嵌入式實(shí)踐教學(xué)內(nèi)容,模擬項(xiàng)目形式實(shí)踐開(kāi)發(fā),在硬件的基礎(chǔ)上應(yīng)用STM32集成開(kāi)發(fā)環(huán)境Keil MDK-RAM下編寫(xiě)出相應(yīng)控制和驅(qū)動(dòng)程序,使學(xué)生能夠設(shè)計(jì)實(shí)現(xiàn)一款完整的智能小車(chē)平臺(tái)。學(xué)以致用,有效拓展學(xué)生實(shí)踐內(nèi)容和動(dòng)手能力,開(kāi)拓知識(shí)面,激發(fā)創(chuàng)新思維,提升嵌入式系統(tǒng)開(kāi)發(fā)興趣[4-5]。
圖1 智能小車(chē)系統(tǒng)功能模塊框圖
基于STM32嵌入式系統(tǒng)智能車(chē)系統(tǒng)硬件模塊主要有:組合式智能車(chē)架(直流電機(jī)、減速機(jī)構(gòu)、空心胎車(chē)輪)、直流電機(jī)驅(qū)動(dòng)模塊、NRF24L01無(wú)線數(shù)據(jù)收發(fā)模塊、鋰電池、STM32控制主板、DC/DC電源模塊等部件組成。
(1) 智能小車(chē)核心控制STM32處理器
智能小車(chē)控制核心部件選用STM32F103ZET6微控制器處理器芯片,它是半導(dǎo)體廠商ST公司最新推出基于Cortex-M3內(nèi)核的處理器,為增強(qiáng)型高性能的ARM 32位RISC內(nèi)核[6],工作主頻率可高達(dá)72 MHz,處理器算力強(qiáng)大,芯片內(nèi)置了512 KB高速flash存儲(chǔ)器和64 KB的高速SRAM存儲(chǔ)器,工作溫度范圍-40 ℃~+105 ℃,支持寬電壓2.0~3.6 V。功能I/O端口豐富包括I2S音頻接口、SPI接口、I2C接口、SDIO接口、USB接口、UART接口和CAN總線接口以及ADC和DAC等功能接口。具有先進(jìn)的內(nèi)核結(jié)構(gòu)、低功耗、性能出眾且有多功能創(chuàng)新外設(shè),提供豐富的函數(shù)庫(kù),大大簡(jiǎn)化編程的復(fù)雜性,易調(diào)試及方便嵌入式系統(tǒng)實(shí)踐教學(xué)等一系列特點(diǎn),非常適宜作為智能小車(chē)的主控芯片。
(2) 直流電機(jī)與車(chē)架
直流電機(jī)組與車(chē)身架包括亞克力材質(zhì)的智能小車(chē)底盤(pán)架,智能車(chē)底盤(pán)尺寸為260 mm*155 mm,在車(chē)底盤(pán)上安裝4個(gè)直流減速電機(jī)、4個(gè)塑膠防滑車(chē)輪、20線測(cè)速碼盤(pán)。直流減速電機(jī)供電電壓在3~9 V范圍內(nèi),經(jīng)實(shí)驗(yàn)測(cè)試,電機(jī)適宜采用7.4 V直流供電,這樣電機(jī)扭力適中,長(zhǎng)時(shí)間工作溫升小。實(shí)物組裝效果如圖2所示。
圖2 電機(jī)與車(chē)架組裝效果圖
(3) 直流電機(jī)驅(qū)動(dòng)模塊
教學(xué)智能小車(chē)采用L298N大功率恒壓恒流H橋直流馬達(dá)驅(qū)動(dòng)模塊,2片配合使用可驅(qū)動(dòng)控制4個(gè)直流電機(jī),其特點(diǎn)是穩(wěn)定性高,支持2~10 V電壓范圍,具有過(guò)熱保護(hù)自動(dòng)恢復(fù)功能,驅(qū)動(dòng)電流可以達(dá)到持續(xù)1.5 A的電流,最大驅(qū)動(dòng)電流可達(dá)2.5 A、微安級(jí)待機(jī)流<0.1 μA、控制信號(hào)輸入電壓范圍在1.8~7 V范圍內(nèi)、可以實(shí)現(xiàn)電機(jī)的速度調(diào)節(jié)控制和電機(jī)的轉(zhuǎn)向控制,很方便實(shí)現(xiàn)直流電機(jī)運(yùn)行正轉(zhuǎn)、正轉(zhuǎn)制動(dòng)、反轉(zhuǎn)、反轉(zhuǎn)制動(dòng)。具體直流電機(jī)接線如圖3所示。
獨(dú)立驅(qū)動(dòng)兩路直流電機(jī),INX為控制信號(hào)輸入端,信號(hào)電壓范圍是1.8~7 V,IN1、IN2控制電機(jī)A,IN3、IN4控制電機(jī)B。
(4) NRF24L01無(wú)線數(shù)據(jù)收發(fā)模塊
采用NRF24L01高速無(wú)線收發(fā)模塊、射頻頻率2.4 GHz、無(wú)線數(shù)據(jù)傳輸速率可達(dá)2 Mbps,I/O輸入最高電平達(dá)到5 V,可直接接5 V供電系統(tǒng)單片機(jī)的I/O口、通信接口SPI數(shù)據(jù)傳輸速率8 Mbps。使用此模塊可以快速實(shí)現(xiàn)無(wú)線傳輸系統(tǒng)的搭建,無(wú)線信號(hào)穩(wěn)定搭配全向天線效果更佳,可以搭配多種型號(hào)的單片機(jī)或微處理器,硬件SPI控制器或GPIO模擬SPI控制器均可驅(qū)動(dòng)[7-9]。
圖3 直流電機(jī)驅(qū)動(dòng)模塊接線圖示意圖
(5) 超聲波測(cè)距模塊
避障檢測(cè)模塊由主動(dòng)式紅外光信號(hào)發(fā)射管和被動(dòng)式紅外光信號(hào)接收管以及模擬集成運(yùn)算放大器等組成。主要用于障礙物檢測(cè)自動(dòng)避障功能,當(dāng)有物體靠近模塊探測(cè)范圍內(nèi)紅外信號(hào)被物體反射回來(lái),當(dāng)紅外接收管接收到反射回來(lái)的紅外信號(hào)再送入集成運(yùn)算比較放大器處理模塊的DOUT信號(hào)引腳輸出低電平。
紅外循跡檢測(cè)模塊主要用作黑白線循跡功能,模塊的探測(cè)端安裝有紅外收發(fā)原件,因?yàn)楹谏矬w對(duì)紅外光波信號(hào)吸收率要大于白色物體對(duì)紅外光波的吸收率,因此當(dāng)模塊探頭遇到黑色軌跡線時(shí),模塊發(fā)射的紅外光波信號(hào)大部分被黑色軌跡線吸收掉,模塊DOUT引腳輸出高電平,當(dāng)模塊遇到離開(kāi)黑色軌跡線時(shí)模塊DOUT引腳輸出低電平,通過(guò)判斷模塊的輸出信號(hào)電平高低即可檢測(cè)到智能車(chē)是否脫線。
(6) 避障、循跡檢測(cè)模塊
超能波測(cè)距模塊主要由一個(gè)超聲波信號(hào)發(fā)送換能器和一個(gè)超聲波信號(hào)接收換能器和驅(qū)動(dòng)電路組成,測(cè)距原理是依靠發(fā)送超聲波信號(hào)再精確計(jì)算接收到反射回來(lái)的超聲波信號(hào)的時(shí)間,通過(guò)聲音在空氣中的傳播速度就可計(jì)算出被探測(cè)物體與測(cè)距模塊之間的距離。
超聲波測(cè)距模塊采用HC-SR04:模塊引腳VCC電源、TRIG控制信號(hào)、ECHO接收信號(hào)、GND電源地。使用方法為T(mén)RIG控制信號(hào)保持10 μs以上的高電平之后等待ECHO接收信號(hào)輸出高電平,當(dāng)ECHO接收信號(hào)變?yōu)楦唠娖綍r(shí)應(yīng)立刻開(kāi)啟計(jì)時(shí)器計(jì)算時(shí)間,當(dāng)ECHO接收信號(hào)變?yōu)榈碗娖綍r(shí)停止計(jì)時(shí)器計(jì)時(shí),此時(shí)計(jì)時(shí)器所計(jì)時(shí)間及時(shí)聲波的收發(fā)時(shí)間再通過(guò)公式計(jì)算出被測(cè)距離:被測(cè)距離=(高電平保持時(shí)間*聲速)/2;聲速約等于340 M/S。實(shí)物如圖4所示,控制時(shí)序圖如圖5所示。
(7) 舵機(jī)組件
為了避障功能準(zhǔn)確、平穩(wěn),智能小車(chē)選用SG90型號(hào)舵機(jī)配合超聲波傳感器一起使用[10-13],舵機(jī)重量13 g,角度90~180度通用型,紅色線為電壓,粽色線為地線,橙色是信號(hào)線。技術(shù)數(shù)據(jù):尺寸21.5 mm*11.8 mm*22.7 mm;空載速度0.12 s/60度;重量約9 g;工作電壓4.8~6 V;扭矩1.2~1.4 kg/cm;4.8 V供電。
圖4 超聲波模塊實(shí)物圖
圖5 超聲波控制時(shí)序圖
舵機(jī)屬于執(zhí)行單元組件,是一種位置角度伺服驅(qū)動(dòng)器,適用于需要角度不斷變化并可保持控制系統(tǒng),通過(guò)信號(hào)輸入引腳,脈沖寬度調(diào)制(PWM)信號(hào)的脈沖寬度實(shí)現(xiàn)控制多盤(pán)的角度0~180度,如圖6所示,通過(guò)調(diào)節(jié)基準(zhǔn)信號(hào)的占空比可以實(shí)現(xiàn)舵機(jī)角度位置的控制,基準(zhǔn)信號(hào)是20 ms周期的脈沖寬度調(diào)制信號(hào),改調(diào)制脈沖的高電平部分一般從0.5~2.5 ms的范圍內(nèi)調(diào)節(jié)、脈沖信號(hào)的總間隔為2 ms,下面是180度角度控制范圍內(nèi)高電平時(shí)間和角度位置的對(duì)應(yīng)關(guān)系:
圖6 控制時(shí)序圖
(8) 彩色液晶顯示屏
TFT LCD彩色液晶顯示屏(3.2寸)、262 K color、分辨率240×320、驅(qū)動(dòng)芯片ILI9341: RGB565 CPU屏接口,支持背光PWM亮度調(diào)節(jié),支持圖形上下翻轉(zhuǎn)、鏡像顯示等顯示方向調(diào)節(jié)。支持電阻TP觸摸功能,在顯示屏的表面貼有3.2寸電阻式觸摸屏,定位精度高、抗干擾能力強(qiáng)。電阻TP觸摸屏驅(qū)動(dòng)芯片TSC2046:新一代觸屏驅(qū)動(dòng)控制器支持低壓I/O接口1.5~5.25 V、低功耗2.7 V供電<0.75 mW。
(9) 直流電源供電模塊
直流電源供電模塊包括:DC/DC直流降壓模塊、鋰電池18650、電池充放電管理模塊。鋰電池18650:3.7 V 2000 mAh本項(xiàng)目采用兩串兩并電池總輸出電壓為7.4 V,滿電8.2 V。電池充電模塊:主要用于鋰電池充電管理,支持恒流充電、恒壓充電、涓流充電等充電過(guò)程,科學(xué)的充放電過(guò)程可以延長(zhǎng)電池的使用壽命。DC/DC降壓模塊:如入電壓3.5~10 V、輸出電壓3.3 V/1.2 A,電源紋波小于200 mV。
(1) 硬件功能定義及實(shí)現(xiàn)原理
小車(chē)運(yùn)動(dòng)動(dòng)作分為向前運(yùn)動(dòng)、向后運(yùn)動(dòng)、向左轉(zhuǎn)彎、向右轉(zhuǎn)彎、向左原地旋轉(zhuǎn)和向右原地旋轉(zhuǎn)等運(yùn)動(dòng),通過(guò)控制運(yùn)動(dòng)動(dòng)作和維持時(shí)間以及運(yùn)動(dòng)速度,可以控制小車(chē)實(shí)現(xiàn)非常復(fù)雜的運(yùn)動(dòng)軌跡。2.4 GHz無(wú)線遙控:通過(guò)STM32+NFR24L01無(wú)線射頻模塊實(shí)現(xiàn)無(wú)線遙控器,遙控器包括1個(gè)油門(mén)操縱桿和1個(gè)方向操縱桿以及2個(gè)物理按鍵,操作油操縱桿可以實(shí)現(xiàn)油門(mén)量的調(diào)節(jié),即實(shí)現(xiàn)小車(chē)速度的控制,操作方向桿可以控制小車(chē)的運(yùn)動(dòng)方向。
避障功能:智能小車(chē)前后安裝有紅外避障傳感器,當(dāng)智能車(chē)快碰撞到物體時(shí),紅外避障傳感器輸出碰撞信號(hào),中央處理器收到信號(hào)后自動(dòng)處理,停止運(yùn)動(dòng)或向反方向運(yùn)動(dòng),達(dá)到避障功能。
防跌落功能:智能小車(chē)四角安裝有紅外傳感器,當(dāng)智能車(chē)某一車(chē)輪處于懸空位置(比如運(yùn)行到桌子邊時(shí),繼續(xù)運(yùn)動(dòng)智能小車(chē)可能會(huì)跌落下去)傳感器輸出懸空信號(hào),中央處理器收到信號(hào)后自動(dòng)處理,停止運(yùn)動(dòng)或向反方向運(yùn)動(dòng),達(dá)到防止跌落的功能。
(2) 整車(chē)硬件組裝
智能小車(chē)整機(jī)組裝實(shí)物圖如圖7所示。主要步驟:將鋰電池充電模塊、DC/DC降壓模塊、USB座、PIN座等焊接于PCB萬(wàn)用板上;安裝直流電機(jī)于車(chē)架再安裝車(chē)輪;將紅外避障模塊、紅外循跡模塊、超聲波測(cè)距模塊、舵機(jī)組件用緊固螺絲安裝于車(chē)架對(duì)應(yīng)位置;然后使用杜邦線把各模塊扎在STM32控制主板上。
圖7 智能小車(chē)整車(chē)組裝實(shí)物圖
軟件設(shè)計(jì)是智能小車(chē)控制系統(tǒng)設(shè)計(jì)的重要組成部分,對(duì)硬件進(jìn)行合理有效的編程,才能實(shí)現(xiàn)智能小車(chē)特定功能和應(yīng)用,以主控芯片STM32F103ZET6作為智能小車(chē)的大腦,接收處理傳感器探測(cè)信號(hào)和無(wú)線遙控器信號(hào),運(yùn)算處理后輸出控制信號(hào)給到馬達(dá)執(zhí)行單元完成指定動(dòng)作。軟件框架如圖8所示,包括嵌入式操作系統(tǒng)μcos-iii、無(wú)線模塊驅(qū)動(dòng)程序、馬達(dá)驅(qū)動(dòng)程序、傳感器驅(qū)動(dòng)程序、應(yīng)用業(yè)務(wù)邏輯處理程序等部分組成。
圖8 軟件開(kāi)發(fā)框圖
使用STM32開(kāi)發(fā)板提供的軟件安裝包,搭建軟件開(kāi)發(fā)環(huán)境,配置好參數(shù),對(duì)操作系統(tǒng)μC/OSiii進(jìn)行移植,μC/OSiii的核心功能就是負(fù)責(zé)系統(tǒng)任務(wù)的調(diào)度,系統(tǒng)應(yīng)答時(shí)鐘是STM32的PendSV特殊中斷功能實(shí)現(xiàn)產(chǎn)生系統(tǒng)基準(zhǔn)時(shí)間,μC/OSiii通過(guò)這個(gè)時(shí)間基準(zhǔn)進(jìn)行主要調(diào)動(dòng)任務(wù)的調(diào)度。顯示系統(tǒng)μC/GUI也要進(jìn)行移植。然后對(duì)各種驅(qū)動(dòng)程序編寫(xiě)并測(cè)試。
把嵌入式系統(tǒng)課程中所掌握的各知識(shí)點(diǎn)編程和測(cè)試與智能小車(chē)各功能模塊結(jié)合起來(lái),如表1所示。配合嵌入式系統(tǒng)基礎(chǔ)驗(yàn)證性實(shí)驗(yàn),在小車(chē)調(diào)試中應(yīng)用,觀察各功能模塊測(cè)試效果,幫助學(xué)生理解和掌握基礎(chǔ)知識(shí)、基本原理、基本程序編寫(xiě)和調(diào)試技能。并對(duì)智能小車(chē)各功能模塊聯(lián)動(dòng)調(diào)試,加深對(duì)理論知識(shí)的理解以及對(duì)智能小車(chē)原理和功能實(shí)現(xiàn)知識(shí)點(diǎn)學(xué)習(xí)。
表1 智能小車(chē)各功能測(cè)試相對(duì)應(yīng)嵌入式課程知識(shí)點(diǎn)
把各功能模塊編程內(nèi)容綜合起來(lái),整體移植到單片機(jī)上,實(shí)現(xiàn)智能小車(chē)整體運(yùn)行,測(cè)試智能小車(chē)閉環(huán)控制,包括小車(chē)電機(jī)速度控制、電機(jī)速度測(cè)量及閉環(huán)速度控制等;調(diào)整小車(chē)方向定位,讀取小車(chē)姿態(tài)傳感器數(shù)據(jù),方向定位控制測(cè)試;小車(chē)人機(jī)交互綜合調(diào)試,通過(guò)無(wú)線模塊與手機(jī)或遙控器通信,手機(jī)或遙控器可以通過(guò)無(wú)線模塊駕駛智能小車(chē),調(diào)節(jié)車(chē)速、方向,控制小車(chē)實(shí)現(xiàn)非常復(fù)雜的運(yùn)動(dòng)軌跡,在顯示屏觀察接收或發(fā)送的信息。最終驗(yàn)證智能小車(chē)各大模塊尋跡、避障、速度控制、轉(zhuǎn)向等響應(yīng)動(dòng)作,實(shí)現(xiàn)整車(chē)精確穩(wěn)定、安全駕駛功能演示。結(jié)合嵌入式綜合實(shí)驗(yàn)教學(xué)內(nèi)容,智能小車(chē)設(shè)計(jì)能形象顯示嵌入式系統(tǒng)綜合實(shí)驗(yàn)教學(xué)內(nèi)容并起到強(qiáng)化知識(shí)點(diǎn)作用,有利于培養(yǎng)學(xué)生分析問(wèn)題解決問(wèn)題的能力、實(shí)踐動(dòng)手能力、創(chuàng)新設(shè)計(jì)思維和團(tuán)隊(duì)協(xié)作意識(shí),提高學(xué)生綜合應(yīng)用能力以及軟、硬件開(kāi)發(fā)設(shè)計(jì)、調(diào)試、測(cè)試等技能[14-15]。
對(duì)智能小車(chē)實(shí)物組裝焊接及硬件程序調(diào)試,驗(yàn)證各功能模塊通信協(xié)議與小車(chē)仿真駕駛,結(jié)果顯示基于STM32嵌入式教學(xué)智能小車(chē)電路及軟件設(shè)計(jì)正確,它集成運(yùn)用微處理器、現(xiàn)代傳感器、信息融合及自動(dòng)控制等技術(shù),適合嵌入式項(xiàng)目實(shí)踐教學(xué)典型案例,應(yīng)用于嵌入式系統(tǒng)實(shí)驗(yàn)教學(xué)中,能很好體現(xiàn)嵌入綜合實(shí)驗(yàn)教學(xué)優(yōu)點(diǎn),學(xué)生通過(guò)軟件修改及完善,觀察智能小車(chē)機(jī)動(dòng)性能,激發(fā)對(duì)嵌入式系統(tǒng)設(shè)計(jì)課程的學(xué)習(xí)興趣,加深對(duì)嵌入式系統(tǒng)課程理論與工作原理的認(rèn)識(shí),提升實(shí)踐教學(xué)效果。智能小車(chē)作為一款嵌入式編程學(xué)習(xí)實(shí)體設(shè)備,未來(lái)還可以擴(kuò)展支持Python、Lua等解釋型腳本編程語(yǔ)言。