楊澤璽,李捍東
(貴州大學 電氣工程學院,貴陽 550025)
在面臨一些不適合由人工探測的任務中,機器人為此提供了一個兩全其美的解決辦法。從最初的輪式機器人,到后來的履帶式機器人,再到現在十分熱門的仿生機器人,國內外的學者一直都在對機器人進行研究、并不斷優化,移動機器人已經成為科技工作者關注的焦點,并多次被列入國家863重大課題。當機器人面臨未知的環境時,輪式機器人和履帶機器人就變得不再適用,如果地形不平坦或者不規則,當其執行任務時就會受到許多限制。多足機器人則為探測這些未知地形提出了一個有效的辦法,廣泛應用在各行各業。
本文以STM32F103C8T6作為主要控制中心,3個定時器輸出18路PWM波直接控制舵機,為機器人的動力來源,單片機為整個系統的神經中樞,控制機器人協調行走。同時具有無線遙控功能,HC-05藍牙模塊作為連接機器人和遙控器的通道,可以控制機器人的行走方式。六足機器人還搭載了一塊IMU,當機器人走在斜坡時,仍然能保持機器人水平,機器人前面有一塊超聲波探測器,可以實時檢測前方是否有障礙物,并通過藍牙模塊將障礙物距離回傳給控制端。
藍牙遙控六足機器人,是一個遙控裝置,分為2個部分:機器人部分和遙控部分。其中,機器人部分以STM32F103C8T6單片機為控制核心,PCA9685為舵機控制模塊,HC-05藍牙模塊作為連接遙控器和機器人的樞紐,遙控部分從藍牙模塊獲得機器人的各項數據,并且同樣以STM32F103C8T6單片機為控制核心,8個獨立按鍵作為人機交互的接口,發送行走指令。系統框圖如圖1所示。

圖1 系統設計框圖Fig.1 System design block diagram
藍牙遙控六足機器人主要包括以下模塊:STM32F103C8T6單片機主控制器最小系統模塊、藍牙模塊、電源模塊、搖桿電位器、JY901模塊,現對重要部分進行闡釋分述如下。
HC-05藍牙模塊設計原理如圖2所示。HC-05藍牙模塊是一個主從一體的模塊,在模塊與模塊配對或者模塊與手機配對的時候,只需要單片機通過串口發送數據即可,在本次設計的六足機器人上,RXD和單片機的PA9連接,TXD和單片機的PA10連接。在遙控器上,RXD和單片機的PA1連接,TXD和單片機的PA2連接。GND和VCC分別與電源地和電源正連接。

圖2 藍牙通信模塊Fig.2 Bluetooth communication module
搖桿電位器在許多遙控器中得到了普及應用。在撥動搖桿時,可以改變電位器的電位值,電位值發生變化時,單片機的ADC可以檢測到是否發生變化,電位值輸出的是模擬量,而單片機通過ADC將其轉化成數字量,STM32的ADC是16位的,所以最大值是4 096,將采集的數字量除以40.96,那么搖桿的變化值便在0~100之間,同時數據也比較穩定,也更利于判斷搖桿的撥動情況。搖桿電位器的設計原理如圖3所示。

圖3 搖桿電位器原理圖Fig.3 Schematic diagram of rocker potentiometer
JY901是一個姿態傳感器,該傳感器的核心芯片是MPU6050,可以輸出姿態角度、角速度、加速度等參數。JY901模塊就是在此基礎上增加了其他硬件,該模塊可以通過串口直接輸出姿態角度、角速度、加速度等姿態參數。該模塊可以通過上位機修改模塊的輸出數據、波特率等參數。本次六足機器人的設計中,獲得姿態角這個參數,通過STM32的控制就可以使機器人在不同地形下保持水平姿態,研發實現的程序將會在后面的軟件設計中進行分析討論。
在機器人部分,先接通系統電源,單片機開始運行,進行系統初始化,包括串口配置、GPIO配置、PCA9685配置等。系統程序運行流程如圖4所示。

圖4 機器人運行流程圖Fig.4 Robot operation flow chart
在遙控部分,當接通電源后,單片機對串口、ADC以及按鍵進行初始化,初始化完成后進入主循環。主循環中,不斷進行按鍵掃描和ADC檢測,讀取按鍵值和ADC值以后,將這些數據整理為數據幀,然后發送。系統程序運行流程如圖5所示。

圖5 遙控運行流程圖Fig.5 Remote control operation flow chart
3.2.1 JY901姿態調整模塊
JY901輸出的姿態角是通過串口輸出的,在使用模塊之前,應該將模塊通過上位機修改波特率為115 200,讓模塊的波特率和單片機USART2的波特率一致,修改完成后開始數據傳輸。JY901每幀輸出的數據格式為:

其中,0x55為數據的幀頭。當單片機接收到0x55時,就表明接下來的10個數據是有效數據,程序中創建一個容量為11的數組。當串口接收到0x55時,將接下來的數據逐一存到數組中,接收完成后,將判斷數組的第二位是否是0x51:如果是,則數組里面的數據為有效數據;如果不是,則清空數組重新接收。數據解析流程如圖6所示。

圖6 姿態調整流程圖Fig.6 Attitude adjustment flow chart
單片機在成功接收JY901傳來的姿態信息后,就可以知道機器人的當前姿態,當解析出數據小于180°時,可以知道機器人是向左傾斜的;同樣大于180°時,機器人是向右斜的;當大于0°時,機器人是向后傾斜的;當小于0°時,機器人是向前傾斜的。根據這個反饋關系,可以將、作為舵機的輸入參數,控制機器人腿的伸縮,讓機器人在一定程度上保持水平狀態,提高機器人的穩定性。
3.2.2 機器人避障模塊
機器人避障的原理是超聲波測距。機器人前方安裝有一個超聲波模塊用于測距,而聲波傳感器的原理是測量從模塊發送超聲波經過反射再接收到超聲波這個過程的時間。在程序中,當需要測距的時候,單片機的一個指定GPIO口置高電平,觸發超聲波模塊的發射信號,同時打開定時器開始計時,模塊發射出超聲波經發射接收后,模塊的echo引腳會置高,該引腳會觸發單片機的外部中斷,在中斷程序里將關閉定時器,獲取時間,并計算出距離。
單片機在檢測到前方障礙物的距離后,判斷距離是否小于機器人最大的轉彎距離,當距離小于一定值的時候,機器人左轉,避開障礙物。避障程序流程如圖7所示。

圖7 超聲波避障模塊Fig.7 Ultrasonic obstacle avoidance module
3.2.3 機器人與遙控器的通信
機器人與遙控器之間的通信是否順暢是控制機器人的關鍵,遙控器與機器人之間的通信協議和單片機與JY901之間的通信協議類似,遙控器發送的每幀數據長度為10個數據,前兩位數據為頭。同樣地,機器人接收數據時,當接收到0x55時,開始保存接下來的9個數據,再對其進行處理。將指定電位器的值處理為速度,或者舵機的角度控制的相關控制模式。遙控器接收機器人回傳的數據的目的是驗證數據發送是否成功,其接收方式和機器人接收遙控器數據的方式一樣。
本次設計完成后,六足機器人基本可以完成各項行走命令任務,例如:前進后退、左轉右轉、自主避障、姿態自主調節。功能上可以實現人機交互、即遙控功能。本次涉及的實物拍攝圖片見圖8。

圖8 實物拍攝圖片Fig.8 Real shooting pictures
藍牙遙控六足機器人是基于STM32F103C8T6單片機作為控制中心,通過HC-05藍牙模塊進行無線遙控,PCA9685對舵機直接控制。開機后,藍牙自動配對成功,按下遙控器按鍵,機器人便執行相應動作。為適應可能發生的不確定地形情況,本次設計著重研究了JY901姿態傳感器的開發與實現,能夠使機器人在一些地形上具備更強的適應性,提高了六足機器人的穩定性。