高識杰
(山東科技大學,山東 青島 266590)
近年來,我國人工智能技術取得了迅猛的發(fā)展,計算機技術和各類傳感器技術也都有著很大的進步,正是這些技術的快速發(fā)展為智能掃地機器人在科技領域取得重大成就做出了鋪墊[1]。智能掃地機器人的最終目的是實現(xiàn)智能化與自主化,即在無人控制的情況下能獨立自主地完成安排的清掃任務。本文基于單片機設計原理,設計了一款智能掃地機器人,具體思路如下。
本文基于單片機設計的智能掃地機器人系統(tǒng)如圖1所示,整個硬件系統(tǒng)包括超聲波測距模塊、紅外線避障模塊、姿態(tài)檢測模塊、單片機模塊、電機及其驅動電路模塊、清掃模塊6個模塊[2]。
圖1 系統(tǒng)硬件系統(tǒng)
智能掃地機器人的軟件流程如圖2所示,單片機上電之后先對GPIO引腳、紅外線避障模塊、姿態(tài)檢測模塊、超聲波測距模塊以及電機控制模塊進行初始化。
圖2 系統(tǒng)軟件流程
初始化后,先檢測前方的距離,當掃地機器人前方距離障礙物很遠就直接前進,向前移動的同時檢測前方的距離[3];當掃地機機器人移動到障礙物前時,就觸發(fā)避障程序(該程序將會在軟件設計部分中詳細說明)。
本設計中,單片機控制模塊選擇ARM單片機作為控制核心,硬件連接思路如下。
(1)GPIOA.1連接到超聲波模塊的觸發(fā)端口Echo。
(2)GPIOA.2作為終端捕獲口連接到超聲波模塊的距離信息發(fā)送口Trig。
(3)GPIOA.5—GPIOA.7和GPIOB.0是電機的控制端口,連接到電機控制芯片左側正反轉和右側正反轉。
(4)GPIOB.1連接清掃電機控制芯片。
(5)GPIOA.4、GPIOA.15、GPIOB.10、GPIOB.11 4個引腳為單片機的IIC引腳,與MPU6050的INT、AD0、SCL以及SDA連接。
(6)GPIOB.9和GPIOB.8為IO口,接收掃地機器人兩側紅外避障模塊的傳感器信號。
本設計選取MPU6050六軸加速度陀螺儀傳感器作為智能掃地機器人的姿態(tài)傳感器,如圖3所示。該數字運動處理器可以幫助使用者省去大量的姿態(tài)數據運算,可以減輕加速度計和陀螺儀的運行壓力,有效地減少加速度計和陀螺儀的溫漂所帶來的誤差。
圖3 MPU6050硬件接線
紅外避障模塊主要由紅外避障傳感器完成工作,當模塊通電后,紅外線發(fā)射二極管開始工作。當遇到不透明障礙物時,障礙物會吸收一小部分紅外線,并反射絕大部分的紅外線,模塊另一個光敏二極管接收到紅外線后會改變其反向的導通阻值[4],這樣只需再配備一個分壓電阻就可以將紅外線信號轉變成電壓信號。
本設計使用小型直流電機作為掃地機器人的動力來源,電機額定工作電壓為5 V,額定工作電流為100 mA,額定轉速為190 r/s,最終算出每臺電機額定功率。
掃地機器人需要4個輪子,且每個輪子都由一個電機來驅動,一共需要4個電機,總功率為2 W。設計中,共需要3組L9110 H芯片,L9110 H支持正反轉控制,如果電機的正極接OB,負極接OA,IB就是正轉控制,IA為反轉控制,反之亦然。硬件連接電路如圖4所示。
圖4 L9110H硬件連接
本設計使用HC-SR04超聲波測距模塊測量掃地機器人與前方障礙物之間的距離,模塊為3.3 V低壓工作模塊,不需要額外使用電源電路給模塊提供電能。HC-SR04超聲波模塊可以測量圓錐角15°、高為4 m的圓錐體范圍內的所有物體與模塊的距離。該模塊有兩根通信線,但其通信協(xié)議既不屬于同步通信,也不屬于異步通信,而是一種極其特殊的TTL電平通信[5-6]。
本設計需要一個框架支撐4個電機以及電源模塊和控制板,框架參數如下。
整個車體由兩塊透明亞克力板組成,車體長260 mm,寬140 mm,6個銅柱支撐兩塊亞克力板構成一個夾層,夾層寬35.5 mm用于固定電機。車輪直徑為6.6 cm,根據上節(jié)電機的額定轉速可以算出,掃地機器人的行進速度為39 m/min。
本設計使用3個5號電池串聯(lián)組成的干電池組作為外置電源,額定輸出電壓為4.5 V,電池組容量為2 700 mAh。使用專門的電池盒裝配(電池盒上有電源開關),足以支撐整套智能掃地機器人系統(tǒng)的電能供應。
本設計使用旋轉式清掃裝置,由一個48 V的電機拖動,轉速為1 200 r/min。通過外置繼電器間接驅動,清掃裝置直徑為20 cm,刷頭材質為棉材質,以保證更高效率的清掃。
本文設計的兩個紅外避障模塊程序,是將GPIOB的IDR寄存器的第9位和第8位重命名為Lift_sen和Right_sen,以便操作。當模塊未檢測到障礙物時,默認輸出高電平;當遇到障礙物時,輸出低電平。
首先,在整個庫中有3個文件,分別是IIC的通信函數驅動文件、DMP驅動文件和MPU6050陀螺儀與監(jiān)督度計的驅動文件。其中,mpuiic.c文件主要是IIC通信協(xié)議的定義。
其次,inv_mpu.c文件是MPU6050姿態(tài)運算的相關函數和算法,其中的函數是對DMP算法的配置,加載了DMP模塊固件,最后再重置陀螺儀;mpu_dmp_get_data函數是操作DMP單元獲取翻滾角、俯仰角和航向角3個歐拉角量姿態(tài)數據。
最后,MPU6050.c驅動文件包含了MPU6050六軸加速度陀螺儀傳感器的初始化。本設計不會直接使用三軸加速度量和三軸陀螺儀量,只使用MPU6050的初始化函數MPU_Init。通過將GPIOA.15設置成MPU60 50模塊的AD0模塊為地址設置端口,將GPIOA.4設置成模塊的中斷輸入端口。
首先,捕獲中斷初始化函數CAP_Init。觸發(fā)方式設置成上升沿中斷觸發(fā),對中斷優(yōu)先級和中斷服務函數進行配置。具體如圖5所示。
圖5 捕獲中斷服務函數程序流程
其次,TIM2_IRQHandler函數。當中斷觸發(fā)時,會先查看捕獲完成標志位是否為高,為高說明已經捕獲完成。如果沒有捕獲完成,則要查看觸發(fā)了什么中斷,如果是更新中斷,要看溢出計數是否溢出。如果溢出,則需要強制結束捕獲;如果未溢出,則需要溢出計數+1。
最后,Lenth函數。函數運行后,會檢測捕獲完成標志位是否為1,如果為1,就讀取溢出計數,并乘65 536后再加計數器內的計數數值,最后將計數的數值除以58,這樣計算出來的是以cm為單位的距離數據;如果捕獲未完成,則返回上一次計算的距離數據。
car_movtion_Init函數是將GPIOA.4、GPIOA.5、GPIOA.6、GPIOA.7以及GPIOB.0設置成推挽輸出模式。因此,本次定義了小車向前、向后、左轉、右轉和靜止5個動作模式,分別為car_front、car_back、car_lift、car_right和car_static 5個函數。
當執(zhí)行car_right函數時,單片機驅動左側輪子向前行駛并驅動右側輪子向后行駛,機器人車體則原地右轉;當執(zhí)行car_lift函數時,單片機驅動左側輪子向后行駛并驅動右側輪子向前行駛,機器人車體則原地左轉。
3.5.1 變量定義介紹
關于float pitch、roll、yaw 3個量,分別是儲存俯仰角、翻滾角和航向角的浮點量變量。
u32 time_F=0;
該變量用于測算障礙物的長度。由于小車避障時一定會偏移“主航線”一定的距離,在避障結束后需要再返回到主航線上。
static u8 dir=0;
該變量用于標記當前為正向行駛還是反向行駛的方向標志位。1為反向行駛,0為正向行駛。
3.5.2 轉向控制程序介紹
掃地機器人的轉向控制函數共設計了4個轉向函數。
(1)right_first_corr函數。該函數是控制避障時的第一次右轉,在執(zhí)行函數之前會先確定是正向行駛還是反向行駛。
(2)Lift_first_corr函數。該函數為避障時第一次左轉,在轉向之前會判斷是正向行駛還是反向行駛。
(3)Lift_second_corr函數。該函數為第二次左轉函數,其轉向邏輯與第一次左轉函數類似,先判定是正向行駛還是反向行駛,如果正向行駛,需要左轉將航向角修正至90±2°;反向行駛,需要左轉將航向角修正至-90±2°。
(4)right_second_corr函數。該函數為第二次右轉函數,其轉向邏輯與第一次右轉函數類似,當正向行駛時,需要將當前的航向角修正至0±2°;反向時,需要將當前的航向角修正至180±2°。
3.5.3 避障控制程序介紹
本文設計的智能掃地機器人在房間內的行走路徑為“弓”字形,其避障邏輯無論是正向行駛還是反向行駛都是右轉避障,即當掃地機器人在“弓”字形路徑上行駛時,遇到障礙物的第一動作先右轉90°躲避障礙物。
3.5.4 主函數程序介紹
單片機上電后,會初始化各個模塊。首先,初始化delay系統(tǒng)延時功能,再設置中斷組為組別2,即兩位搶占優(yōu)先級和兩位相應優(yōu)先級;其次,對小車運動模塊進行初始化,再初始化MPU6050模塊和DMP處理單片機;最后,初始化超聲波測距模塊和紅外線避障模塊。
按照以上設計思路,對小車的硬件和功能進行測試,包括機器人的驅動能力、姿態(tài)檢測模塊對航向角的測量以及小車的避障功能。
測試得出,當把電池倉的電源開關打開,各模塊的電源指示燈都亮起,說明供電正常;上電后,機器人會靜止一段時間,主要是對各模塊進行初始化;初始化完成后,掃地機器人會向前移動。
當掃地機器人運行到障礙物前時,會向右旋轉90°,沿著障礙物向前移動,直到左側的紅外避障傳感器不再觸發(fā)信號,當確定左側沒有障礙物時,機器人會左轉90°躲避障礙。當掃地機器人運行到障礙物的后方時,會回到“主航線”繼續(xù)運行,如果前方有障礙物,則會繼續(xù)進行避障操作。
本文基于紅外測距原理,結合單片機設計了一款智能掃地機器人,由各類硬件電路構成的執(zhí)行模塊進行避障測試,旨在完成特定的清掃任務。經系統(tǒng)軟硬件聯(lián)調測試,本文設計的掃地機器人在實際操作中具有較為顯著的可行性,不僅造價劃算,而且性能優(yōu)越,適合在今后的居家應用中推廣。