86小六足組裝教學





專案起源

「嗯…經過史加納專案後,好想再做一隻可愛版的六足機器人啊…」
大概是之前史加納專案成功地引起廣泛關注和討論,引發了老大內心的 Maker 魂,從那之後只要工作一有空檔,老大便想著如何擴大機器人對教育市場的影響,現在的想法就是如何讓人人都能自己組裝一台…,突然,
「對了!我們有 3D 印表機印匠!!」 老大靈光乍現。
「恩卓博士,準備!!」
「嗯?什….」恩卓博士正處於萌呆狀態,然而老大並不理會便朝桌上拍出一張紙,
恩卓博士一看,紙上寫著:台啤、燒肉串。
「這是?」
「別發呆,快去準備這兩樣東西,我打算用它來交換新小六足的設計!」
「難道…是要請動那位傳說中的 U大!?」 恩卓博士豁然開朗。
「沒錯,如果這些不夠,我們再加!!」 老大的眼神充滿了星芒。心中的 Maker 魂已經蠢蠢欲動。
就這樣,經過一番遊說(賄絡)後,全世界第一台 86小六足在 U大鬼斧神工的設計下橫空出世了。



功能說明

86Duino 3D 列印小六足!!從機構圖到程式碼完全開源,可在家自行下載檔案,搭配 3D印表機和教學,滿足手作慾望。不用寫程式就能讓馬達動起來,使用開源 86ME 動作編輯軟體,完成 86小六足走路、轉彎、跳舞等等動作,賦予 86小六足強韌的生命力。一切從零開始,詳細步驟全在下面教學內容,手作實力超強的你,還不趕快準備材料做一波!!



準備材料

  1. 一片 86Duino One 或 86Duino Zero 主控板(任一)
  2. 12 顆 Tower Pro SG90 伺服機(如第一次實作,建議多買 2 顆備用,即 14 顆)
  3. 一台 3D 列印機(此專案使用 86Duino 印匠 ENJOY)
    .輔助工具:銼刀、尖嘴鉗
  4. 2mm x 4mm 螺絲 1 包(20 支以上)
    2mm x 8mm 螺絲 1 包(20 支以上)
    2mm x 15mm 螺絲 1 包(20 支以上)
    .組裝工具:螺絲起子、2mm 攻牙刀、2mm 鑽孔刀
  5. 一片電子擴充板(使用 86Duino Zero 時才需要,需自行手作,點我看詳細
    .一片洞洞板、3 個 3×4 的杜邦針腳和 1 個 1×2 的杜邦針腳
    .焊接工具:烙鐵、焊錫
  6. 2.54mm 杜邦線 12 條

準備好材料後,讓我們動動手、活動活動筋骨,動工啦!! 歐拉歐拉歐拉!!(意義不明的呼喊)



列印機構

我們這裡使用的 3D 印表機是 86Duino Enjoy,首先要下載並安裝 86DuinoRepetier-Host
然後按照 86Duino Enjoy 快速入門教學手冊,把 86Duino Enjoy 的軟體設定、機械參數調校好,
接下來就可以到 Thingiverse 網站下載 86小六足 STL 檔案囉~

下載回來的檔案解壓縮後,有 6 個檔案:

zero_size

這 6 個檔案的檔名,是一一對應到 86小六足身上零件的,如下圖:

zero_size

zero_size

前 4 個零件:A_arm_bottom、A_arm_top、leg、linker,都是小六足腳部的分件,全部印好可以組合成一隻腳(即腳數量的 1/6),只要重複列印 6 次,就會有小六足的 6 隻腳了。

然後是 body_top 零件:小六足身體上半部零件
然後是 body_bottom 零件:小六足身體下半部零件
組合上面 2 個零件可以完成小六足身體,最後再把 6 隻腳接上,86小六足就完成啦~

我們先來看用 86Duino Enjoy 要怎麼列印零件吧!

開啟我們已經安裝好的 86DuinoRepetier-Host,並且點擊 Load 按鈕,載入 4 個 86小六足腳部檔案:A_arm_bottom、A_arm_top、leg 、linker。

zero_size

載入後的圖如下:

zero_size

點選 Linker,將零件沿著 Y 軸翻轉 90 度,如下圖:

zero_size

翻轉後的 linker 零件,擺放角度應如下圖:

zero_size

點選 A_arm_bottom,將零件沿著 Y 軸翻轉 180 度,如下圖:

zero_size

翻轉後的 A_arm_bottom 零件,擺放角度應如下圖:

zero_size

翻轉完成後的足部零件如下圖:

zero_size

打開支撐選項,設定 Support Type 為 Everywhere:

zero_size

來到這邊,我們一共經歷了 2 種過程:

1. 翻轉零件
2. 開支撐

到這裡有很多人不明所以,為什麼要這樣做呢?
首先,我們知道這台 3D 印表機是以一種叫 “熔融層積” 方法進行列印的,它會加熱噴頭讓印料融化,再將印料從噴頭擠出,熱的印料遇到冷空氣很快會變冷、變硬,隨著噴頭走完所有路徑,冷卻的層形成一個堅硬的平面,然後噴頭向上拉高(或降低零件座),讓第二層繼續堆積上去,就是這樣的過程,印完一層,噴頭拉高,印完一層、噴頭拉高,反覆下去直到零件最頂層,那麼零件就 “印” 出來了。

我們知道,零件可不總是一塊實心立方體,如果是,那很容易就印成功了,嗯?難道列印還會失敗?
沒錯,不了解列印過程的話,要失敗的機率還不小,下面帶大家看一下使用這類印表機必須注意的地方,就會知道我們要翻轉零件和開支撐的原因了:
像我們上面看到的 linker 零件,它是一個多孔不規則零件,以 “熔融層積” 列印方法,一定會印到一層中的 “某些路徑” 剛好是沒有前一層做支撐的(即該路徑下方是懸空的,可能就是一個孔!),那麼噴頭經過這些路徑時,印料會來不及冷卻而被重力拉垂,輕則讓外觀難看,重則讓零件整個無法成形。外觀難看似乎可以理解,但嚴重到無法成形是哪招?
關鍵在懸空那層是否能形成一個穩固平面,一旦無法形成,這層之上的所有層自然沒了個底,那麼印料等於從噴頭落下,直接在空中冷卻(因為沒有底),隨著噴頭移動在空中形成一條條凌亂的線,最後我們得到的是一堆線而不是完整的零件,不僅浪費了時間也浪費了印料。

為了不發生這樣的事件,所以我們將零件翻轉,讓零件每一層的懸空路徑最短、甚至完全沒有,那麼不僅提升了成功率,同時也提高了成品外觀。畢竟我們的零件都不是實心立方體。
如果不管怎麼翻,總找不到適合的角度怎麼辦?
這時候我們可以開啟軟體的 “支撐” 選項,讓軟體自行產生支撐件,讓那些懸空區域有個底,等列印完成,再手動拆除這些支撐件就好,雖然後續多出了拆除步驟,但總比列印失敗要好!

看到這裡,有些初次使用 3D 印表機的人問了,如果我不考慮擺放角度,直接開啟軟體的 “支撐” 選項可不可以? 老實說,是可以的,這樣最省時而且不必考慮怎麼翻,是吧? 反正是軟體自動產生支撐件,那也不用怕印失敗,開下去就對了!

從結果上來說,這個想法或許是正確的,但是軟體在哪裡產生支撐件,產生多少支撐件,我們不能控制,只能由軟體根據它的演算法來任意產生,導致印完後您可能會陷入拆支撐件地獄中(因為產生的支撐件過多),尤其是狹小縫隙的支撐件,想快速拆除又很難拆,好不容易拆完,邊緣還有殘渣,影響組裝,所以拿銼刀磨平…。過多的支撐件總是在後續拆除時把我們給惹火,如果不想經歷這種 “磨” 難,建議替零件翻面數次,主動找到讓支撐件產生最少的角度(一方面也節省了印料)。
有些人說他很喜歡拆支撐件的感覺….霹靂啪啦聽起來很爽,那要選擇此方法我們也不反對(你知道,過程總是藏著某些人的 Maker 魂)。

以上是玩這類 3D 印表機的心得體會,不管你有沒有看完那些落落長的敘述,接下來,就要進行下一步,按下切片按鈕(slice),軟體會自行加上它認為應該要加上支撐的部位,最後產生 G-code 檔,這是 86Duino Enjoy 印表機看的懂的檔案,
zero_size

完成後會出現類似下面畫面:
zero_size

這時候就準備傳輸檔案給 86Duino Enjoy 啦~
傳輸方法有兩種:

方法一:使用 USB 線傳輸

切片完成後,接上 USB 傳輸線,然後按下列印按鈕,86Duino Enjoy 就會立即開始列印:
zero_size


方法二:使用 SD 卡

插上 SD 卡至您的電腦,
切片完成後,點擊如下圖示, 將 G-code 檔儲存至 SD 卡中:選擇 G-Code Editor 分頁 > 按下儲存按鈕

zero_size

將檔案儲存在 SD 卡中的 gcode 資料夾下,儲存檔名改成 auto.gcode,按存檔

zero_size

從電腦拔出 SD 卡,將此 SD 卡置入 86Duino Enjoy 背面的 SD 卡插槽,
打開 86Duino Enjoy 電源,86Duino Enjoy 會自動讀取 auto.gcode 檔開始列印!

要完成一整隻 86小六足一共要列印:
1. 6 個足部
2. 1 個身體上半部
3. 1 個身體下半部

列印的過程,可能會花一段滿長的時間,您可以喝個咖啡,休息一下,等零件全部印完再進行下一步。



組合零件


剛印好的零件上面是有很多支撐的,我們必須先拆除它們:

linker 零件,使用尖嘴鉗拆除以下支撐:
zero_size

body_top 零件,使用尖嘴鉗拆除以下支撐:
zero_size

支撐拆下來後,您會發現拆除面還殘留一些毛邊(凸起),這不利於接下來的組裝,所以我們拿起手邊的平銼刀,將這些毛邊打磨平整。

對於 linker 零件,用平銼刀將不平整的表面磨平(下圖箭頭處):

zero_size

磨到可以將伺服機順利置入即可:

zero_size

對於 body_top 零件也是一樣,打磨到伺服機可以容易的置入:

zero_size

最後是 body_bottom 零件,打磨到伺服機可以順利壓入:

zero_size

接下來可以開始組裝了嗎?別急,我們要還要鑽孔與攻牙:

需要攻牙的孔,如下圖紅圈處:

Linker 零件:

zero_size

A_arm_bottom 、leg 零件:

zero_size

body_top 、body_bottom 零件:

zero_size

需要鑽孔的孔,如下圖紅圈處:

Linker、A_arm_bottom、A_arm_top 零件:

zero_size

body_top、body_bottom 零件:

zero_size

完成後,我們便可以準備將轉盤安裝至伺服機上,但要先對伺服機做歸零的動作,歸零是指將伺服機轉動至可動範圍的正中央,我們利用 Servo86 函式庫將伺服機歸零,並使用 86Duino IDE 燒錄歸零程式至 86Duino 開發板上,以下提供範例程式碼:

86Duino Zero 歸零程式

#include <Servo86.h> // 使用 Servo86 函式庫
 
Servo myservo1; // 初始化 Servo 物件
 
void setup()
{
  // 設定 Servo 腳位為 2
  myservo1.attach(2);

  // 送出 1500us 的 PWM 信號,使伺服機歸零至中點
  myservo1.write(1500);
}

void loop() {}

86Duino One 歸零程式

#include <Servo86.h> // 使用 Servo86 函式庫
 
Servo myservo1; // 初始化 Servo 物件
 
void setup()
{
  // 設定 Servo 腳位為 21
  myservo1.attach(21);

  // 送出 1500us 的 PWM 信號,使伺服機歸零至中點
  myservo1.write(1500);    
}

void loop() {}    

燒錄完成後, 86Duino 會立刻從指定腳位送出 duty 為 1500us 的 PWM,接著我們要將伺服機與 86Duino 連接起來。
將 86Duino 接上電源/電池後,伺服機會立即轉到中點位置,此時將十字型配件盤的短軸對齊中點 (標記線),套在伺服機輸出軸上,如下圖所示:

zero_size

完成後便可用螺絲鎖上零件,最後完成圖如下,也可以用斜口鉗修飾配件盤,剪除較長的邊:

zero_size

完成六個足部後接著就可以來組合身體,將 6 顆伺服機置於 body_bootom,如下圖:

zero_size

將落在外側的伺服機連接線,各別拉至身體中央,統一從一端伸出 (這麼做是為了方便後續整線):

zero_size

蓋上 body_top 零件,並用 6 顆長度15mm 的螺絲鎖緊 body_top,如下圖紅圈處:

zero_size

使用鑽孔刀對一字型配件盤鑽孔 (由中心數來第二個孔,如下圖),一共要對 6 個一字型配件盤鑽孔:

zero_size

用剛才提供的歸零程式把六顆伺服機分別歸零至中點,並將一字型配件盤照下圖方式套至伺服機輸出軸:

zero_size

用 3 顆 2mm x 4mm 螺絲結合足部 (2 顆固定配件盤,另一顆固定 linker 與 body_bottom),並以自攻螺絲鎖緊伺服機一字型配件盤,可以用斜口鉗將一字型配件盤凸出的部分剪除,增加美觀::

zero_size

6 個足部全部鎖上後,如下圖:

zero_size

裝上 86Duino Zero 開發板

對應下圖紅圈處,用 3 顆 2mm x 4mm 螺絲固定 86DuinoZero 於 body_top 上:

zero_size

用 2 顆 2mm x 4mm 螺絲固定擴充板:

zero_size

86小六足伺服機編號與擴充板上的腳位對應如下:

zero_size

使用 12 條黃色 (PWM)、1 條紅色(VIN)、1 條黑色(GND)的杜邦線連接 86DuinoZero 和轉接板:

zero_size


裝上 86Duino One 開發板

對應下圖紅圈處,用 3 顆 2mm x 4mm 螺絲將 86DuinoOne 固定於 body_top 零件上:

zero_size

86小六足伺服機編號與 86DuinoOne 上的腳位對應如下:

zero_size

將所有伺服機連接線連接至 86DuinoOne 上:

zero_size

最後我們將外露的連接線稍做整理,讓 86小六足看起來更美觀。
先將外露的伺服機連接線拉至 86小六足身體內,將伺服機連接線來回折短,用束線帶固定在兩旁支架:

zero_size

用束線帶固定完成後,盡量讓右圖紅框處沒有伺服機連接線穿過,因為這是未來要放置鋰電池的空間。



動作控制

由於 86ME Mk-II 已經將 86小六足的應用專案設為範例專案,你可以在 C:\ProgramData\86ME\examples 裡面找到 86Hexapod.rbm 的步行動作。
開啟專案後記得要根據每台 86小六足去微調它的 offset 值,可以校正一些伺服機上的小誤差。



成果展示

— DEMO影片 —




相關資料

[1] 完整課程影片
[2] STL 機構檔下載
[3] 86小六足機器人 DIY 課程教材:



自造遊樂園主頁面

The text of the 86Duino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.