打造 Devastator 機器人,藉此學習感測器、MCU、軟體與馬達控制器的相關知識,並從中獲得樂趣
資料提供者:DigiKey 北美編輯群
2017-10-18
使用套件來打造多功能的機器人,是創客入門的絕佳方式之一,因為您可從中瞭解許多相關領域,包含微控制器、感測器、馬達、軟體開發等。此外,市面上有許多機器人套件、附加組件以及各種線上說明,可供初學者與經驗豐富的創客參考及使用。
本篇文章將探討一些以 DF Robot 的 Devastator 坦克車平台為基礎打造機器人時的實際步驟、相關問題以及可考慮的升級方案 (圖 1)。
圖 1:DFRobot 的 Devastator 是多功能的平台,能夠協助設計人員和創客學習多種電子與軟體技能。(圖片來源:DFRobot)
為何選擇 Devastator?這款套件堅固耐用,具有鋁製結構以及兩個金屬齒輪的有刷直流馬達。此套件可以承載高達 3 公斤的重量,具有多個安裝孔,可裝上感測器、伺服馬達、機器人手臂等各種配件,並且相容於所有廣受創客歡迎且容易使用的微控制器板。
打造完整的機器人系統
這款機器人隨附機殼、輪子、履帶以及兩個馬達,讓設計者能夠選擇其他的搭配元件。完整的系統需要微控制器板、馬達驅動板,以及輸入指令的方式。選購的附加配件包含機器人手臂、影像攝影機或防碰撞系統等,提供某種程度的自主運作。
選擇一個微控制器平台
Devastator 機器人相容於多款廣受歡迎的微控制器平台。Arduino 開放原始碼平台在 2003 年時起源於義大利,並且廣受新手與專業設計人員採用。Arduino Uno (圖 2) 使用 Microchip Technology (原 Atmel) 的 ATmega328P 8 位元 RISC 微控制器。
其他標準特點包含由程式預先設定的 ATmega16U2 微控制器所控制的 USB 連接埠、數位輸入與輸出、類比輸入連接埠,以及可用於軟體更新的線路內序列編程 (ICSP) 埠。較新款的 Arduino Due 則是將核心升級至 32 位元的 ARM® Cortex®-M3。此核心也用於以下將討論的 DFRobot 控制器板;該板結合了 Arduino 相容能力與馬達驅動器。
圖 2:Arduino Uno 是廣受創客專案歡迎的選項,以 Microchip Technology ATmega328P 8 位元 RISC 微控制器作為基礎。(圖片來源:Arduino)
Raspberry Pi 單板電腦原本的開發目的,是在學校內用來教授基礎電腦科學,但現在在創客社群中頗受歡迎。最新版的 Raspberry Pi 3 搭載 Broadcom 的 64 位元四核心 CPU,以 1.2 GHz 運作。此開發板包含 802.11n 無線 LAN、Bluetooth 4.1 以及低功耗藍牙 (BLE)。此外,還具備 1 GB 的 RAM、一個 micro SD 卡插槽、4 個 USB 連接埠、HDMI 與乙太網路埠、一個攝影機介面、40 個 GPIO 引腳以及其他專用介面。
希望善加利用現有經驗的 Windows 高階使用者,能夠從相容於 Devastator 的 LattlePanda 控制器板著手,因為這些板件已安裝且啟用完整版 Windows 10。這些板件使用四核心的 1.8 GHz 處理器,並搭配 Microchip 的 8 位元 ATmega32u4 作為協同處理器,以提供 Arduino 的相容能力。
LattePanda 搭載 2GB 的 DDR3L RAM 以及高達 32 GB 的儲存容量、一個 USB 3.0 以及兩個 USB 2.0 連接埠、Wi-Fi、Bluetooth 4.0、協同處理器,以及分別供兩個處理器使用的共 22 個 GPIO 端子。
控制馬達
在選定微控制器核心後,下一個步驟是選擇馬達控制板。Devastator 包含兩個以 160 rpm (空載) 運作的 6 V 馬達。每個馬達都具有 0.8 kgf.cm (0.058 ft-lb.) 的最大輸出轉矩,以及最大 2.8 A 的堵轉電流。
針對機器人的部分特定功能,Raspberry Pi 需要使用外掛擴充板,但對 Arduino 的愛好者來說,DFRobot 的 DFR0398 Romeo BLE Quad 板包含微控制器以及馬達驅動器,提供了單板選項 (圖 3)。此板的核心比 UNO 版本威力更為強大,但維持 Arduino 的軟體相容性。
其微控制器為 STMicroelectronics 的 STM32F103RET6:此元件的核心使用以 72 MHz 運作的 ARM® Cortex®-M3 32 位元處理器,並包含 512 KB 的快閃記憶體、馬達控制脈寬調變 (PWM) 模塊、16 通道的 12 位元類比轉數位轉換器,以及兩個通道的 12 位元數位轉類比轉換器 (DAC)。
圖 3:DFR0398 Romeo BLE Quad 是相容於 Arduino 的機器人控制板,具有藍牙相容能力以及可驅動四個馬達的驅動器。(圖片來源:DFRobot)
馬達驅動器採用兩個 Microsemi HR8833 元件每個 MOSFET 驅動器都包含兩個全橋驅動器,可用於 Devastator 馬達的雙向控制。Romeo BLE Quad 包含四個編碼器介面,並且整合 Texas Instruments 的 CC2540 RF 收發器,以便提供 Bluetooth 4.0 無線連線能力。
供電
微控制器板本身能夠使用 USB 連接器所提供的 5 V 電壓運作,但馬達本身需要一個具有較高電壓與電流的可攜式電源 (例如電池)。許多創客會改裝價格低廉、原先供無線電遙控 (RC) 車使用的充電電池組。這些電池組的電壓通常高於 7 V,容量至少 5000 mAh,並且能夠輕鬆更換原有的連接器。Romeo BLE Quad 伺服電源連接埠可接受 7 到 10 V 的直流電源。
使用微控制器板進行編程
在微控制器板上安裝程式相當簡單,而且考量創客需求的供應商會在網站上提供逐步說明。
在決定使用的作業系統 (OS) 時,會因平台而異。LattePanda 板隨附預先安裝的 Windows。Raspberry Pi 提供多種選項,包含 Windows IoT Core 以及多種 Linux 發行版本。創客最常選用 Raspbian (開放原始碼 Debian Linux 作業系統的衍生版本)。
另一方面,Arduino 並不使用傳統的作業系統,Arduino 平台會使用循環執行方式,在程式碼序列間重複執行迴圈。開發人員會使用開放原始碼的 Arduino 整合開發環境 (IDE) 來撰寫與安裝程式碼。這是一款以 Java 撰寫的跨平台應用程式,並可安裝在 Windows、Mac OS X 以及 Linux 主機上。對於一些項目,Arduino 環境具有自己的術語。例如:相容於 Arduino 的擴充卡稱為「擴充板 (shield)」,而軟體模組則稱為「草稿碼 (sketch)」。
使用 Romeo BLE Quad 進行編程
Romeo BLE Quad 板是具有高階週邊裝置的單板機器人解決方案,以下將對此板件進行討論。
首先,請選擇想安裝在主機上的作業系統,並從 Arduino 網站下載適合的 IDE。儘管 DF Romeo BLE Quad 並未使用與標準 Arduino 硬體相同的 ATmega328 處理器,但因為此板相容於 Arduino IDE,因此軟體開發流程相當類似。
此 IDE 適用於多家製造商超過二十五款的板件,但 Romeo BLE Quad 並非其中之一。Romeo BLE Quad 是 DRRobot 板件 Bluno M3 的衍生版本,加入了馬達驅動器。如要設定 IDE,必須先從開放原始碼的 GitHub 網站下載 Bluno M3 檔案。
如要安裝這個檔案:
- 請開啟 Arduino IDE,然後前往 File (檔案) -> Preferences (偏好)。將 GitHub 連結複製到「Additional Boards Manager URLs」 (額外板件管理員連結) 方塊,然後按「OK」 (確定)。
- 前往 Tools (工具) -> Board (板件)-> Board Manager (板件管理員),在搜尋方塊中輸入「Bluno M3」,然後按「Install」(安裝)。如此便會下載配置檔案。
- 請從 Tools (工具) -> Board (板件) 選單中選擇 Bluno M3 板。
系統現在已準備好進行應用程式開發。標準的 IDE 支援使用 C 與 C++ 來編寫程式,並且包含一些程式碼範例。開發人員使用文字編輯器來撰寫草稿碼 (程式) (圖 4)。
圖 4:Arduino IDE 的畫面與文字編輯器:包含兩個所需函數的新程式。(圖片來源:Arduino)
IDE 接著會對程式碼進行除錯、交叉編譯,並透過電路內序列編程 (ICSP) 埠將結果上傳到微控制器板。Romeo BLE Quad 也能透過藍牙埠進行設定。
文字編輯器會新增一個程式,其中含有兩個預先載入的所需函數,並且準備好寫入程式碼:setup() 以設定初始狀態並執行一次,然後 loop() 會持續執行。
必須下載並安裝兩個 Arduino 程式庫 (Motor.h 與 PID_v1.h),才能以 Romeo BLE Quad 執行 Devastator 馬達。
馬達程式碼的開頭需要使用 include 述句,要求這兩個程式庫作為標頭檔案,並在定義 I/O 引腳及一些初始常數後,在 setup() 區段中設定馬達 (清單 1)。
Copy
/*!
* @file RemeoBLEQuadDrive.ino
* @brief RemeoBLEQuadDrive.ino PID control system of DC motor
*
* RemeoBLEQuadDrive.ino Use PID control 4 way DC motor direction and speed
*
* @author linfeng([email protected])
* @version V1.0
* @date 2016-4-14
*/
#include "PID_v1.h"
#include "Motor.h"
Motor motor[4];
int motorSpeed[4] = {-200,200,400,-400};/*Set 4 speed motor*/
/* Speed=motorSpeed/(32*(setSampleTime/1000))(r/s) */
const int motorDirPin[4][2] = { //Forward, Backward
/*Motor-driven IO ports*/
{8,23},
{7,9},
{24,14},
{4,25}
};
//const double motorPidParam[3]={0.6,1,0.03};/*DC MOTOR,Yellow??180degree*/
//const double motorPidParam[3]={1.5,1,0.05};/*DC MOTOR,Yellow??90 degree*/
const double motorPidParam[3]={1.2,0.8,0.05};/*Encoder V1.0,160rd/min ;19500/min; 32:1,Kr=3.5*/
void setup( void )
{
Serial1.begin(115200);
for(int i=0;i<4;i++){
motor[i].setPid(motorPidParam[0],motorPidParam[1],motorPidParam[2]);/*Tuning PID parameters*/
motor[i].setPin(motorDirPin[i][0],motorDirPin[i][1]);/*Configure IO ports*/
motor[i].setSampleTime(100);/*Sets the sampling period*/
motor[i].setChannel(i);/*Sets the motor channel */
motor[i].ready();/*Motor enable*/
motor[i].setSpeed(motorSpeed[i]);/*Set motor speed*/
}
}
void loop( void )
{
for(int i = 0; i < 4; i++){
motor[i].calibrate();/*motor PID calibrate*/
}
}
清單 1:此 C 程式碼範例會設定與控制 Romeo BLE Quad 的四個 Arduino 馬達。(程式碼來源:DFRobot)
setup() 與 loop() 區段會設定與控制四個馬達通道。由於 Devastator 機殼只需要兩個馬達,另外兩個馬達便可用於配件,例如以下將討論的機器手臂。
無線控制機器人
您可以將 USB 纜線插入控制板中,並以此操控機器人,但更方便的做法是透過 Wi-Fi 或藍牙,並使用智慧型手機、平板裝置或電腦進行無線控制。如上所述,Romeo BLE Quad 包含與 Bluno 平台相同的藍牙 4.0 模組。您可以從 GitHub 下載 iOS 7.0+ 與 Android 4.3+ 的開放原始碼應用程式。有了應用程式,設計人員便能夠無線控制機器人及上傳新的草稿碼。
基本設計的升級項目
在組裝好基本的設計後,通常會再加上配件,讓機器人可以進行一些實用的作業 (圖 5)。以下提供一些可以嘗試的升級項目。
圖 5:DFRobot 的 URM37 v4.0 超音波感測器 (左) 與 Adafruit 的 397 攝影機模組 (右) 是兩個相當受歡迎的配件 (圖片來源:DFRobot 與 Adafruit)
偵測與避開障礙,是行動機器人常被預期能夠具備的功能。DFRobot URM37 v4.0 超音波感測器輸出與距離成比例的電壓,並且相容於 Arduino 和 Raspberry Pi。此感測器會偵測物件或牆壁的存在,然後程式碼會執行隨機轉向,接著機器人便會往新的方向前進。
把機器人轉化為行動攝影機,是另一項相當受歡迎的升級選項。Adafruit 的 397 攝影機模組能夠擷取影像或靜態照片。這款攝影機內建 CMOS 影像感測器,能夠以每秒 30 fps 的速率擷取 640 x 480 畫素的影像,並且具有動作偵測功能。
您可以考慮在機器人手臂上安裝攝影機,像是 DF05BB 垂直/水平移動組件 (圖 6)。這款套件包含兩個支架和兩個 DF05 伺服馬達,是專為水平安裝所設計。
圖 6:DFRobot DF05BB 垂直/水平安裝組件隨附兩個伺服馬達以及兩個支架。(圖片來源:DFRobot)
組合各個項目
完整的 Devastator 機器人包含機殼、控制板、擴充板以及超音波感測器 (圖 7)。為了使用方便,兩塊電路板會裝在上側平台上,但若希望在頂端安裝可移動式的攝影機,也可以將板件裝在下方的安裝平台上。
圖 7:這個完整設計的範例包含 Devastator 機殼、控制板、馬達控制擴充板以及超音波感測器。(圖片來源:DFRobot)
結論
DFRobot 是絕佳的創客平台,讓設計師與創客都能在充滿樂趣且支援完備的環境中探索軟體開發、微控制器功能、感測器選項以及馬達控制等領域。
此外,DigiKey 網站上提供許多資源。例如,您可以在此處了解更多關於在 Arduino 平台上進行程式編寫的詳情。DigiKey 也提供使用最受歡迎的 Pi 語言 Python 為 Raspberry Pi 編程的協助。以上討論的所有產品,都具有豐富的文件、應用說明以及教學。
完成這個專案後,還有許多其他專案可供嘗試。Maker.io 致力於創客行動,提供許多重點專案、資源、資金來源等。

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。