楊澤璽,李捍東
(貴州大學(xué) 電氣工程學(xué)院,貴陽 550025)
在面臨一些不適合由人工探測的任務(wù)中,機(jī)器人為此提供了一個(gè)兩全其美的解決辦法。從最初的輪式機(jī)器人,到后來的履帶式機(jī)器人,再到現(xiàn)在十分熱門的仿生機(jī)器人,國內(nèi)外的學(xué)者一直都在對(duì)機(jī)器人進(jìn)行研究、并不斷優(yōu)化,移動(dòng)機(jī)器人已經(jīng)成為科技工作者關(guān)注的焦點(diǎn),并多次被列入國家863重大課題。當(dāng)機(jī)器人面臨未知的環(huán)境時(shí),輪式機(jī)器人和履帶機(jī)器人就變得不再適用,如果地形不平坦或者不規(guī)則,當(dāng)其執(zhí)行任務(wù)時(shí)就會(huì)受到許多限制。多足機(jī)器人則為探測這些未知地形提出了一個(gè)有效的辦法,廣泛應(yīng)用在各行各業(yè)。
本文以STM32F103C8T6作為主要控制中心,3個(gè)定時(shí)器輸出18路PWM波直接控制舵機(jī),為機(jī)器人的動(dòng)力來源,單片機(jī)為整個(gè)系統(tǒng)的神經(jīng)中樞,控制機(jī)器人協(xié)調(diào)行走。同時(shí)具有無線遙控功能,HC-05藍(lán)牙模塊作為連接機(jī)器人和遙控器的通道,可以控制機(jī)器人的行走方式。六足機(jī)器人還搭載了一塊IMU,當(dāng)機(jī)器人走在斜坡時(shí),仍然能保持機(jī)器人水平,機(jī)器人前面有一塊超聲波探測器,可以實(shí)時(shí)檢測前方是否有障礙物,并通過藍(lán)牙模塊將障礙物距離回傳給控制端。
藍(lán)牙遙控六足機(jī)器人,是一個(gè)遙控裝置,分為2個(gè)部分:機(jī)器人部分和遙控部分。其中,機(jī)器人部分以STM32F103C8T6單片機(jī)為控制核心,PCA9685為舵機(jī)控制模塊,HC-05藍(lán)牙模塊作為連接遙控器和機(jī)器人的樞紐,遙控部分從藍(lán)牙模塊獲得機(jī)器人的各項(xiàng)數(shù)據(jù),并且同樣以STM32F103C8T6單片機(jī)為控制核心,8個(gè)獨(dú)立按鍵作為人機(jī)交互的接口,發(fā)送行走指令。系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)設(shè)計(jì)框圖Fig.1 System design block diagram
藍(lán)牙遙控六足機(jī)器人主要包括以下模塊:STM32F103C8T6單片機(jī)主控制器最小系統(tǒng)模塊、藍(lán)牙模塊、電源模塊、搖桿電位器、JY901模塊,現(xiàn)對(duì)重要部分進(jìn)行闡釋分述如下。
HC-05藍(lán)牙模塊設(shè)計(jì)原理如圖2所示。HC-05藍(lán)牙模塊是一個(gè)主從一體的模塊,在模塊與模塊配對(duì)或者模塊與手機(jī)配對(duì)的時(shí)候,只需要單片機(jī)通過串口發(fā)送數(shù)據(jù)即可,在本次設(shè)計(jì)的六足機(jī)器人上,RXD和單片機(jī)的PA9連接,TXD和單片機(jī)的PA10連接。在遙控器上,RXD和單片機(jī)的PA1連接,TXD和單片機(jī)的PA2連接。GND和VCC分別與電源地和電源正連接。
圖2 藍(lán)牙通信模塊Fig.2 Bluetooth communication module
搖桿電位器在許多遙控器中得到了普及應(yīng)用。在撥動(dòng)搖桿時(shí),可以改變電位器的電位值,電位值發(fā)生變化時(shí),單片機(jī)的ADC可以檢測到是否發(fā)生變化,電位值輸出的是模擬量,而單片機(jī)通過ADC將其轉(zhuǎn)化成數(shù)字量,STM32的ADC是16位的,所以最大值是4 096,將采集的數(shù)字量除以40.96,那么搖桿的變化值便在0~100之間,同時(shí)數(shù)據(jù)也比較穩(wěn)定,也更利于判斷搖桿的撥動(dòng)情況。搖桿電位器的設(shè)計(jì)原理如圖3所示。
圖3 搖桿電位器原理圖Fig.3 Schematic diagram of rocker potentiometer
JY901是一個(gè)姿態(tài)傳感器,該傳感器的核心芯片是MPU6050,可以輸出姿態(tài)角度、角速度、加速度等參數(shù)。JY901模塊就是在此基礎(chǔ)上增加了其他硬件,該模塊可以通過串口直接輸出姿態(tài)角度、角速度、加速度等姿態(tài)參數(shù)。該模塊可以通過上位機(jī)修改模塊的輸出數(shù)據(jù)、波特率等參數(shù)。本次六足機(jī)器人的設(shè)計(jì)中,獲得姿態(tài)角這個(gè)參數(shù),通過STM32的控制就可以使機(jī)器人在不同地形下保持水平姿態(tài),研發(fā)實(shí)現(xiàn)的程序?qū)?huì)在后面的軟件設(shè)計(jì)中進(jìn)行分析討論。
在機(jī)器人部分,先接通系統(tǒng)電源,單片機(jī)開始運(yùn)行,進(jìn)行系統(tǒng)初始化,包括串口配置、GPIO配置、PCA9685配置等。系統(tǒng)程序運(yùn)行流程如圖4所示。
圖4 機(jī)器人運(yùn)行流程圖Fig.4 Robot operation flow chart
在遙控部分,當(dāng)接通電源后,單片機(jī)對(duì)串口、ADC以及按鍵進(jìn)行初始化,初始化完成后進(jìn)入主循環(huán)。主循環(huán)中,不斷進(jìn)行按鍵掃描和ADC檢測,讀取按鍵值和ADC值以后,將這些數(shù)據(jù)整理為數(shù)據(jù)幀,然后發(fā)送。系統(tǒng)程序運(yùn)行流程如圖5所示。
圖5 遙控運(yùn)行流程圖Fig.5 Remote control operation flow chart
3.2.1 JY901姿態(tài)調(diào)整模塊
JY901輸出的姿態(tài)角是通過串口輸出的,在使用模塊之前,應(yīng)該將模塊通過上位機(jī)修改波特率為115 200,讓模塊的波特率和單片機(jī)USART2的波特率一致,修改完成后開始數(shù)據(jù)傳輸。JY901每幀輸出的數(shù)據(jù)格式為:
其中,0x55為數(shù)據(jù)的幀頭。當(dāng)單片機(jī)接收到0x55時(shí),就表明接下來的10個(gè)數(shù)據(jù)是有效數(shù)據(jù),程序中創(chuàng)建一個(gè)容量為11的數(shù)組。當(dāng)串口接收到0x55時(shí),將接下來的數(shù)據(jù)逐一存到數(shù)組中,接收完成后,將判斷數(shù)組的第二位是否是0x51:如果是,則數(shù)組里面的數(shù)據(jù)為有效數(shù)據(jù);如果不是,則清空數(shù)組重新接收。數(shù)據(jù)解析流程如圖6所示。
圖6 姿態(tài)調(diào)整流程圖Fig.6 Attitude adjustment flow chart
單片機(jī)在成功接收J(rèn)Y901傳來的姿態(tài)信息后,就可以知道機(jī)器人的當(dāng)前姿態(tài),當(dāng)解析出數(shù)據(jù)小于180°時(shí),可以知道機(jī)器人是向左傾斜的;同樣大于180°時(shí),機(jī)器人是向右斜的;當(dāng)大于0°時(shí),機(jī)器人是向后傾斜的;當(dāng)小于0°時(shí),機(jī)器人是向前傾斜的。根據(jù)這個(gè)反饋關(guān)系,可以將、作為舵機(jī)的輸入?yún)?shù),控制機(jī)器人腿的伸縮,讓機(jī)器人在一定程度上保持水平狀態(tài),提高機(jī)器人的穩(wěn)定性。
3.2.2 機(jī)器人避障模塊
機(jī)器人避障的原理是超聲波測距。機(jī)器人前方安裝有一個(gè)超聲波模塊用于測距,而聲波傳感器的原理是測量從模塊發(fā)送超聲波經(jīng)過反射再接收到超聲波這個(gè)過程的時(shí)間。在程序中,當(dāng)需要測距的時(shí)候,單片機(jī)的一個(gè)指定GPIO口置高電平,觸發(fā)超聲波模塊的發(fā)射信號(hào),同時(shí)打開定時(shí)器開始計(jì)時(shí),模塊發(fā)射出超聲波經(jīng)發(fā)射接收后,模塊的echo引腳會(huì)置高,該引腳會(huì)觸發(fā)單片機(jī)的外部中斷,在中斷程序里將關(guān)閉定時(shí)器,獲取時(shí)間,并計(jì)算出距離。
單片機(jī)在檢測到前方障礙物的距離后,判斷距離是否小于機(jī)器人最大的轉(zhuǎn)彎距離,當(dāng)距離小于一定值的時(shí)候,機(jī)器人左轉(zhuǎn),避開障礙物。避障程序流程如圖7所示。
圖7 超聲波避障模塊Fig.7 Ultrasonic obstacle avoidance module
3.2.3 機(jī)器人與遙控器的通信
機(jī)器人與遙控器之間的通信是否順暢是控制機(jī)器人的關(guān)鍵,遙控器與機(jī)器人之間的通信協(xié)議和單片機(jī)與JY901之間的通信協(xié)議類似,遙控器發(fā)送的每幀數(shù)據(jù)長度為10個(gè)數(shù)據(jù),前兩位數(shù)據(jù)為頭。同樣地,機(jī)器人接收數(shù)據(jù)時(shí),當(dāng)接收到0x55時(shí),開始保存接下來的9個(gè)數(shù)據(jù),再對(duì)其進(jìn)行處理。將指定電位器的值處理為速度,或者舵機(jī)的角度控制的相關(guān)控制模式。遙控器接收機(jī)器人回傳的數(shù)據(jù)的目的是驗(yàn)證數(shù)據(jù)發(fā)送是否成功,其接收方式和機(jī)器人接收遙控器數(shù)據(jù)的方式一樣。
本次設(shè)計(jì)完成后,六足機(jī)器人基本可以完成各項(xiàng)行走命令任務(wù),例如:前進(jìn)后退、左轉(zhuǎn)右轉(zhuǎn)、自主避障、姿態(tài)自主調(diào)節(jié)。功能上可以實(shí)現(xiàn)人機(jī)交互、即遙控功能。本次涉及的實(shí)物拍攝圖片見圖8。
圖8 實(shí)物拍攝圖片F(xiàn)ig.8 Real shooting pictures
藍(lán)牙遙控六足機(jī)器人是基于STM32F103C8T6單片機(jī)作為控制中心,通過HC-05藍(lán)牙模塊進(jìn)行無線遙控,PCA9685對(duì)舵機(jī)直接控制。開機(jī)后,藍(lán)牙自動(dòng)配對(duì)成功,按下遙控器按鍵,機(jī)器人便執(zhí)行相應(yīng)動(dòng)作。為適應(yīng)可能發(fā)生的不確定地形情況,本次設(shè)計(jì)著重研究了JY901姿態(tài)傳感器的開發(fā)與實(shí)現(xiàn),能夠使機(jī)器人在一些地形上具備更強(qiáng)的適應(yīng)性,提高了六足機(jī)器人的穩(wěn)定性。