于 波 張 強 李建成 陳先瑞
(東北石油大學物理與電子工程學院)
隨著計算機和電子技術(shù)的迅猛發(fā)展,智能產(chǎn)品的研究與開發(fā)愈發(fā)受到各領(lǐng)域?qū)W者們的重視,其中,智能車技術(shù)的發(fā)展日新月異,在工業(yè)生產(chǎn)、國防軍工及民用生活等領(lǐng)域都發(fā)揮了重要作用[1]。 智能車以電子技術(shù)為背景,綜合了計算機、傳感器及機械等多學科技術(shù),在眾多領(lǐng)域被廣泛應用,能夠替代人類在一些特定環(huán)境工作,例如美國的“勇氣”號和“機遇”號火星探測機器人為人類探索火星做出了貢獻,我國自主研發(fā)的“月球車”所應用的技術(shù)也處于世界前列;智能車也應用于自動貨運、無人駕駛等場合[2],并取得了相當不錯的成績。 智能車的應用正逐步滲入到工業(yè)和生活的各個層面,提高了生產(chǎn)效率并減少了人為失誤,提升了人們的生活品質(zhì)[3]。
智能小車,即輪式機器人,集環(huán)境感知、動態(tài)決策與規(guī)劃、智能控制與執(zhí)行等多種技術(shù)于一體[4],隨著技術(shù)的不斷成熟,一些前沿技術(shù)被應用于智能小車[5]。 筆者基于STM32F103 單片機,通過規(guī)劃智能小車的總體設計方案,進行硬件電路設計、 程序代碼編寫以及軟/硬件的綜合測試,實現(xiàn)了智能小車的自動循跡避障、 紅外遙控運動、上位機對智能小車的遠程控制及拍照存儲等功能,筆者所設計的智能小車可以在所處環(huán)境中通過傳感器自行判斷和分析,在無人操作的情況下自主完成任務。
為使所設計的智能小車可以沿著黑色膠帶軌跡行駛, 以STM32F103 單片機作為主控芯片,配合電源模塊、L298N 電機驅(qū)動模塊、循跡模塊、自動避障模塊、WiFi 模塊和電路, 設計智能小車系統(tǒng),其結(jié)構(gòu)如圖1 所示。
圖1 智能小車系統(tǒng)整體結(jié)構(gòu)框圖
避障模塊自動檢測障礙物并自動調(diào)整運動軌跡,WiFi 模塊實現(xiàn)手機和電腦端對智能小車的無線操控。
智能小車前部設有2 個HJ-IR2 紅外避障模塊, 可以通過紅外線的發(fā)射和接收實現(xiàn)避障功能。 在智能小車的底盤安裝了3 路紅外循跡模塊,保證智能小車按照預設好的路線行駛。 設計上位機APP,用以操控智能小車系統(tǒng)的WiFi 模塊。
智能小車系統(tǒng)的控制器選用的是STM32F103單片機,該芯片是意法半導體推出的一款32 位單片機,基于ARM Cortex-M 內(nèi)核,具有實時性優(yōu)異、外設豐富及價格低等特點[6]。STM32F103 單片機的內(nèi)部結(jié)構(gòu)如圖2 所示,可以看出,芯片內(nèi)部可以劃分為內(nèi)核和片上外設兩部分。
單片機采用線性穩(wěn)壓芯片AMS1117-3.3V(圖3),其中電容起到濾波的作用,分別濾去高頻和低頻信號,C31、C6 為輸入電容,作用是防止斷電后出現(xiàn)電壓倒置,C32、C2 為輸出濾波電容,作用是抑制振蕩和穩(wěn)壓輸出[7]。
圖3 AMS1117-3.3V 穩(wěn)壓模塊
智能小車采用L298N 電機驅(qū)動模塊,L298N是一種高電壓、大電流電機驅(qū)動芯片,采用15 腳封裝,內(nèi)含兩個H 橋的高電壓、大電流的全橋式驅(qū)動器,可以驅(qū)動直流電動機、步進電機及繼電器線圈等負載[8]。 使用直流兩用驅(qū)動器驅(qū)動兩臺直流電機M1 和M2。引腳A、B 用來輸入PWM 脈寬調(diào)制信號,對電機進行調(diào)速控制。 當輸入信號端IN1 接高電平,輸入端IN2 接低電平,則電機M1 正轉(zhuǎn); 當輸入信號端IN3 接高電平, 輸入端IN4 接低電平,則電機M2 正轉(zhuǎn),反之電機反轉(zhuǎn)。PWM 信號端A 控制M1 調(diào)速,PWM 信號端B 控制M2 調(diào)速。 控制電機驅(qū)動方向見表1。
表1 控制電機驅(qū)動方向
智能小車的避障功能采用3 路紅外循跡模塊,輸出3 路開關(guān)量,接單片機的普通IO 口,3 路紅外傳感器的電路如圖4 所示。
圖4 3 路紅外傳感器電路
3 路紅外傳感器的GND 接地,VCC 供電,X1、X2、X3 各自對應1 對紅外探頭。 紅外發(fā)射管發(fā)射光線到路面,遇到白底則被反射,接收管接收到反射光,經(jīng)觸發(fā)器整形后輸出低電平,紅外探頭亮;遇到黑線時則被吸收,接收管接收不到反射光,經(jīng)觸發(fā)器整形后輸出高電平,紅外探頭滅[9]。 3 路紅外循跡模塊能夠使智能小車沿著黑色線路行駛,并且不脫離黑色軌道。
智能小車選用的避障模塊是紅外光電傳感器,該模塊對環(huán)境光線適應能力強,有1 對紅外線發(fā)射與接收管, 接通電源后紅色指示燈亮起,通過發(fā)射和接收紅外線判斷前方是否有障礙物。可以通過電位器旋鈕調(diào)節(jié)檢測距離(有效距離2~30 cm),工作電壓5 V,電流18~30 mA[10]。該傳感器的探測距離可通過電位器調(diào)節(jié), 具有干擾小,便與安裝的優(yōu)點。
如圖5 所示,紅外遙控模塊由發(fā)射和接收兩部分組成,應用編碼/解碼專用集成芯片進行操作控制,接收頻率為38 kHz。 紅外遙控器的主要作用是將遙控發(fā)射器發(fā)出的紅外光信號轉(zhuǎn)換成電信號,再進行放大、限幅、檢波和整形處理,形成遙控指令脈沖,輸出至遙控微處理器。 紅外遙控方式具有體積小、功耗低、功能強和成本低的優(yōu)點。
圖5 紅外遙控模塊組成框圖
WiFi 模塊可以搭載其他設備模塊,實現(xiàn)不同的控制和視頻傳送功能。 如圖6 所示,WiFi 模塊與STM32F103 單片機連接, 用于發(fā)送和接收數(shù)據(jù)。
圖6 發(fā)送和接收數(shù)據(jù)模塊連接結(jié)構(gòu)框圖
智能小車通過串口轉(zhuǎn)換軟件在上位機發(fā)送指令給單片機串口,經(jīng)單片機串口控制IO 口的電平,驅(qū)動電機的轉(zhuǎn)動,再把USB 攝像頭的視頻進行編碼, 然后通過WiFi 模塊返回給上位機軟件,這樣就可以在控制軟件上看到圖像[11]。
SG90 舵機是一種位置伺服驅(qū)動器, 接收機或單片機發(fā)出信號給舵機,舵機內(nèi)部有一個基準電路,產(chǎn)生周期20 ms、寬度1.5 ms 的基準信號,將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。 舵機的轉(zhuǎn)動角度是通過調(diào)節(jié)PWM 信號的占空比實現(xiàn)的,標準PWM 信號的周期固定為20 ms(50 Hz),控制方式是PWM 時序。舵機控制參數(shù)見表2。
表2 180°舵機控制參數(shù)
按照相應的元器件結(jié)構(gòu)以及組裝接線順序完成智能小車的組裝, 智能小車成品如圖7 所示。
圖7 智能小車成品
硬件設計和安裝完畢之后,需要做的是程序的編寫和燒錄。 智能小車的程序代碼是采用C++語言編寫的, 采用Keil5 軟件生成智能小車需要執(zhí)行的操作文件,通過ST-Link V2 調(diào)制下載器下載程序。 手機端設計HJduino-STM32 APP 對小車進行控制。
智能小車的循跡功能是通過小車前面的3路紅外循跡模塊實現(xiàn)的。 大多數(shù)紅外循跡方式是當左邊的紅外傳感器檢測到偏移黑線時小車往右偏,當右邊的紅外傳感器檢測到偏移黑線時小車往左偏,這種循跡方式無法保證精度,而采用AD 模式采集紅外接收管信號,精度較高。 筆者設計的智能小車循跡是根據(jù)單片機通過內(nèi)部AD 采集循跡傳感器模擬量,然后通過調(diào)整PID 參數(shù)控制舵機角度來實現(xiàn)的[12]。
循跡模塊模擬圖如圖8 所示,左、右紅外傳感器的作用是判斷傳感器距離黑線邊界的距離,離黑線邊界越遠則AD 值越大, 中間紅外傳感器的作用是判斷傳感器是否在黑線內(nèi)。 假設左右兩個紅外傳感器間的距離和軌道黑線的寬度同為4 cm, 則傳感器從左到右移動獲取的圖像如圖9所示。
圖8 循跡模塊模擬圖
圖9 左、右傳感器向右移動獲取的圖像
將右傳感器的值減去左傳感器的值,所得結(jié)果如圖10 所示,可見,獲得的有限數(shù)據(jù)長度在4 cm 的黑線范圍內(nèi),當數(shù)據(jù)為零時表示小車循跡方向沒有偏差,當數(shù)據(jù)大于零時小車左偏,當數(shù)據(jù)小于零時往右偏,數(shù)值越大則小車偏移越大。
圖10 左、右傳感器相減所得的圖像
當智能小車的速度過快時,小車容易沖出黑線循跡范圍, 根據(jù)圖10 可知有效長度左邊和右邊有一段區(qū)域未被使用,可以將左右兩端未被使用的數(shù)據(jù)納入到有效數(shù)據(jù)之內(nèi)。 通過中傳感器獲得左、右閾值點,圖像如圖11 所示,可見,當中傳感器小于閾值時,通過判斷左右傳感器的差值來處理左右兩邊的數(shù)據(jù),數(shù)據(jù)反轉(zhuǎn)斜率為原來的兩倍,最終得到的數(shù)據(jù)處理結(jié)果如圖12 所示,寬度是原來的3 倍,這樣小車就不會偏離軌道。
圖11 中傳感器獲得的左、右閾值點圖像
圖12 數(shù)據(jù)處理的最終圖像
WiFi 模塊是通過串口通信協(xié)議在智能小車與手機建立通信, 通過手機端發(fā)送遙控指令,物體通過鏡頭生成光學圖像投射到圖像傳感器上,光信號轉(zhuǎn)換成電信號,再經(jīng)過A/D 后轉(zhuǎn)換成數(shù)字圖像信號,最后送到DSP 加工處理,由DSP將信號處理成特定格式的圖像傳輸?shù)绞謾C顯示屏[13]。
通過HJduino-STM32 APP 將手機連接上小車的WiFi,設置IP 地址控制端口,然后通過操控按鈕發(fā)送指令,智能小車接收到指令后進行相應的動作。 通過手機軟件可操控智能車。
在手機軟件上,通過云臺控制,調(diào)節(jié)舵機轉(zhuǎn)動角度,使攝像頭能夠捕捉周圍畫面,左邊按鈕能夠使小車完成前、后、左、右和有斜度的方向的行進, 右邊按鈕能夠通過舵機調(diào)節(jié)攝像頭角度。
電腦端同樣可以連接智能小車的WiFi 模塊,實現(xiàn)對智能小車的操控,進行拍照并以jpg 格式保存。
智能小車的避障模塊選擇的是兩個紅外光電傳感器,當前方有障礙物時,紅外發(fā)射管發(fā)出的紅外信號經(jīng)紅外接收管接收后,由集成芯片放大、比較后輸出一個低電平信號,點亮模塊上的LED 發(fā)光管。 智能小車的避障流程如圖13 所示。
圖13 智能小車的避障流程
由圖13 可知,如果沒有檢測到任何物體,則小車直行;左邊探頭檢測到物體時,則小車后退500 ms、右轉(zhuǎn)500 ms;右邊探頭檢測到物體時,小車后退500 ms、左轉(zhuǎn)500 ms;左、右兩側(cè)都檢測到物體時,小車后退700 ms、右轉(zhuǎn)500 ms。避障程序源碼如圖14 所示。
智能小車以STM32F103 單片機作為主控核心, 對外設的驅(qū)動電機、WiFi 及傳感器等模塊進行控制,經(jīng)過多次調(diào)試和測試驗證后,成功實現(xiàn)了自主循跡避障、手機軟件控制等功能,后期加以完善,即可投入市場,應用于勘探、消防、無人駕駛及環(huán)境探測等領(lǐng)域。