關鍵詞:智能小車;STC8;STM32;尋跡;避障
中圖分類號:G242 文獻標識碼:A
文章編號:1009-3044(2024)28-0020-03
1 總體設計
系統(tǒng)總體設計框圖如圖1所示,分為路徑障礙識別和行車驅動兩個部分,均采用嵌入式控制技術[1-4]。路徑障礙識別部分的核心控制器件為STC8系列單片機。該單片機首先通過串口獲取循跡模塊、避障模塊、攝像頭及無線通信模塊中的路徑障礙信息,然后根據(jù)獲取的信息通過串口發(fā)送相應指令至行車驅動部分。行車驅動部分的核心控制器件為STM32系列單片機,該單片機通過串口接收來自STC8單片機的指令,并根據(jù)指令控制驅動電路,以實現(xiàn)對電機和舵機的控制,從而實現(xiàn)對整個小車行進狀態(tài)的控制。
2 系統(tǒng)硬件設計
2.1 循跡模塊
智能小車的行走區(qū)域固定在由專用磁條圍成的12宮格中,如圖2所示。循跡模塊通過磁循跡來確定小車的行走路線,共采用8路霍爾傳感器來檢測磁場信息[5-7]。這些霍爾傳感器按照一定的物理間隔排列(如圖3所示),分別感應所在位置的磁條信息。小車的控制核心器件STC8單片機依據(jù)各路霍爾傳感器反饋的信號,能獲知磁條與小車中心位置的偏差信息以及12宮格中磁條相交的路口信息,從而發(fā)送相應指令給行車驅動核心器件STM32單片機,確保小車沿著磁條的路徑行進,并在預定的12宮格某一特定路口改變行車方向,從而實現(xiàn)智能小車的自動尋跡功能。
模塊中附有8路霍爾傳感器電位器,用于調節(jié)霍爾傳感器的電阻值,以調節(jié)其靈敏度。為方便現(xiàn)場調試,模塊還配有8路循跡指示燈,用以顯示霍爾傳感器檢測到的磁場信息。當未檢測到正確的磁場時,指示燈常亮;檢測到磁場時,指示燈熄滅。
霍爾傳感器檢測磁場信息的原理圖如圖4所示。系統(tǒng)中使用的霍爾傳感器型號為1302E,共有3個接口,其中2個用于接電源和地,剩下1個為輸出信號接口,通過1個上拉電阻連接至5V電壓,從而形成開關脈沖信號。
2.2 避障模塊
智能小車在行進過程中僅對正前方的障礙物進行檢測。當障礙物距離小車小于40 cm時,小車會通過橫移到相鄰磁條來避開障礙物。避障模塊采用超聲波傳感器,正前方固定有兩路超聲波傳感器,通過對這兩路超聲波數(shù)據(jù)的融合處理來檢測障礙物。超聲波測距的原理是利用超聲波在空氣中的傳播速度已知,通過測量聲波在發(fā)射后遇到障礙物反射回來的時間,根據(jù)發(fā)射和接收的時間差計算出發(fā)射點到障礙物的實際距離[8-10]。
系統(tǒng)采用HC-SR04超聲波測距模塊,模塊共有4 個接口,其中2個為電源和地,另外2個為接收觸發(fā)控制口和輸出回響口。具體的測距流程如下:STC8單片機向超聲波測距模塊發(fā)送1個持續(xù)10 μs以上的觸發(fā)高電平信號,測距模塊接收到觸發(fā)信號后會發(fā)出40 kHz 的超聲波,回響口隨后輸出高電平信號給STC8單片機。當單片機檢測到高電平后,啟動定時器計時。當超聲波遇到障礙物并被反射回時,回響口的輸出電平變低,定時器停止計時。通過讀取定時器的值可以計算出測距時間,從而測出小車與障礙物的距離。當距離小于40 cm時,小車會通過橫移來進行避障。超聲波測距的時序圖如圖5所示。
2.3 無線通信模塊
小車行走區(qū)域設有道閘,道閘內部配備有從Lora 無線通信模塊。小車啟動后,會根據(jù)行走路線推算出道閘的位置。當識別到道閘后,小車通過內部的主Lora無線通信模塊依次發(fā)送開啟和關閉命令給道閘的從模塊,以實現(xiàn)小車行進過程中對道閘的控制。
Lora無線通信模塊是一款將工業(yè)級單片機和高性能射頻收發(fā)器集成在一起的半雙工無線數(shù)據(jù)傳輸模塊,具有體積小、工作穩(wěn)定的特點。模塊內置的MCU負責對數(shù)據(jù)進行包裝和處理,系統(tǒng)開發(fā)中只需通過UART接口即可實現(xiàn)無線通信。在通信過程中,主從Lora模塊分別設有不同的固定地址。通信過程首先由STC8單片機按照通信協(xié)議通過串口發(fā)送數(shù)據(jù)到主模塊,然后主模塊與從模塊建立通信,從而實現(xiàn)對道閘開關的控制。具體發(fā)送的數(shù)據(jù)如表1所示,其中校驗和是從字頭開始到數(shù)據(jù)的累加和,數(shù)據(jù)0x01表示打開道閘命令,數(shù)據(jù)0x02表示關閉道閘命令。
2.4 攝像頭
智能小車的行走路線中設有交通信號燈,小車通過攝像頭持續(xù)獲取信號燈信息,并通過串口將其發(fā)送至STC8單片機。STC8單片機根據(jù)獲取的信息發(fā)送相應指令給行車驅動部分的STM32單片機,再通過驅動電路控制電機,實現(xiàn)小車行進過程中對交通信號燈的自動識別。小車使用的是OpenMV攝像頭,OpenMV 是一款開源、低成本、功能強大的機器視覺模塊,以STM32F427 CPU為核心,并集成了OV7725攝像頭芯片。在系統(tǒng)開發(fā)中,利用OpenMV上的尋找色塊開源算法來識別交通信號燈。攝像頭模塊自帶UART接口,可直接連接至STC8單片機,通過該串口完成信號燈信息的讀取[11-12]。
2.5 電機驅動模塊
系統(tǒng)采用L298N芯片作為驅動電機的核心元件。L298N 是一款專用驅動集成電路,屬于H 橋集成電路,單個芯片可驅動兩路二相電機。驅動電路原理圖如圖6所示。芯片的輸入端直接連接至單片機,單片機通過控制IN1-IN2和IN3-IN4兩組輸入腳的邏輯電平,實現(xiàn)對兩路二相電機的正向和反向控制。OUT1-OUT2和OUT3-OUT4兩組輸出腳分別連接至被控電機。ENA和ENB為使能控制腳,只有當其輸入為高電平時,單片機的輸入控制信號才能起作用。智能小車采用2個L298N芯片以驅動4路二相電機。
3 系統(tǒng)軟件設計
系統(tǒng)軟件開發(fā)采用Keil5平臺。由于Keil5沒有自帶STC型號的MCU,因此需要先手動將STC型號的MCU添加到Keil5設備庫中,隨后新建工程并添加目標芯片,最后完成相關工程配置后進行系統(tǒng)軟件開發(fā)[13-15]。系統(tǒng)需實現(xiàn)的功能是智能小車在多種障礙路況下按照規(guī)定路線完成自動尋跡。障礙路況包括路障、道閘和交通信號燈。
按照圖7所示的小車行駛路線圖,系統(tǒng)功能實現(xiàn)的具體過程如下:
1) 小車從起點出發(fā),在第2個路口左轉,在第6個路口左轉,并在第9個路口左轉,此時發(fā)送打開道閘的命令。
2) 在第10個路口左轉,并發(fā)送關閉道閘的命令。
3) 在第11個路口進入路障檢測,判斷超聲波是否檢測到路障。如果檢測到路障,小車則進入平移狀態(tài),直行一段后往下平移一格至12S路口處繞過路障,并在第13個路口右轉。如果沒有檢測到路障,則在第12個路口右轉。
4) 在第14 個路口右轉進入交通信號燈檢測區(qū)域。此時小車會降低速度前進,以增加攝像頭識別時間。如果檢測到綠燈,小車繼續(xù)前進;如果檢測到紅燈,小車則停止等待,直到綠燈出現(xiàn)再繼續(xù)行進。
5) 在第15個路口左轉,第16個路口左轉,回到起點并停車。
軟件程序流程圖如圖8所示。程序通過邏輯判斷和傳感器反饋來實現(xiàn)上述功能,確保小車能在不同的路況和指令下正確運行。
4 結束語
該智能小車自動控制系統(tǒng)以STC8系列單片機為控制核心,配合相應的外圍電路模塊。經(jīng)過測試與驗證,該系統(tǒng)在自動尋跡過程中能夠成功避開紅燈、道閘和路障等障礙物。這表明系統(tǒng)在實際應用中具備良好的穩(wěn)定性和可靠性,能夠有效地完成預定的任務。