從零打造自己的MR-1輪型機器人

Description

Description
作者:Felix Lin

概念發想

在【linkIt 7697加上Robot Shield來改造遙控車】文章中,使用既有的遙控車外殼來改造內部的控制核心,實際做出了一台IoT遙控車。這次我們要來從頭打造MR-1輪型機器人,沒錯!就是從無到有做出MR-1輪型機器人來!話不多說,咱們開始囉!

開始前準備工具與材料

巧婦難為無米之炊,既然身為一個Maker,要執行project實作之前得先要把所需要的工具準備起來,而這回實作我們總共需要以下零組件與工具:

  1. MR-1 3D列印車架
  2. LinkIt 7697物聯網開發板
  3. Robot Shield擴充板
  4. HC-SR04超音波模組
  5. TT減速馬達(兩個)
  6. 橡膠輪胎(兩個)
  7. 白色高亮度LED(兩顆)
  8. 紅色高亮度LED(兩顆)
  9. 母-母杜邦線(12條)
  10. 熱熔膠槍:Maker神器,方便快速固定零組件
  11. 電烙鐵:焊接減速馬達的引接線用

3D列印MR-1車架

MR-1最大特色在於它是一體式的車架,車體穩固性與剛性較高。許多Maker或是低年齡層的同學,可能都有過一些慘痛經驗,好比,辛苦組裝完成的車體,因為一時疏忽不小心從桌上掉落,造成車體的損傷。但一體式的車架可降低當車架不小心摔落時,造成的損害,也省去組裝多個機構件的困擾,同時擁有可愛的外型,在擴充電子零件與模組方面也是相當容易。

MR-1是一個開放原始碼的車架,由一位任職於澳洲的國小教師(註)Tim Clark老師所設計。此模型設計的授權方式為創用CC(Creative Common)姓名標示授權,MR-1車架的3D物件檔(.stl)可從Thingiverse自由取得,進行列印、輸出甚至修改使用。

這邊直接取得檔案後,使用3D列印機做輸出。各個不同型號的3D列印機都會有不一樣的參數設定,這邊列印機使用的是台灣品牌INFINITY X1列印機,同時主要列印參數給各位做參考:

  1. 層高(Layer Thickness):0.24
  2. 外圈(Loops):3圈
  3. 填充(Infill):16.7%
  4. 支撐(Support):開啟(Coarse)
  5. 列印速度:35mm/s

使用以上參數列印輸出耗時約10小時,完成後將多餘的支撐部分拆除,就得到了我們的要使用的MR-1車架了!

組裝流程步驟

當所有材料都已備妥,就可以開始按照以下內容Step by Step進行組裝了。

STEP 1:焊接減速馬達引接線

在Robot Shield擴充板隨盒有附上兩條2pin JST2.5mm母端的接線頭,這連接器跟Robot Shield上直流馬達控制輸出連接器是相匹配的。雖然直流馬達是沒有極性之分,只有正逆轉的差異,這裡還是建議照著以下圖示焊接(注意擺放位置),不然後面的程式部分的PIN腳定義就要跟著修改了,否則動作可是會出錯的!

STEP2:安裝減速馬達

前面一步把減速馬達的驅動銅片引線出來了,接著就是要把兩顆減速馬達安裝到車架上。由於車架上沒有卡榫可以固定減速馬達。因此,在安裝時預先使用熱熔膠沾黏在車架內部,減速馬達中間有凸起那側朝向車架內部,將減速馬達與車架黏牢。左右側馬達作法皆相同,黏著後等待一段時間使其固定。

STEP3:安裝前後車燈

前車燈可以選用高亮度的白色或黃色LED,為放便接線時使用杜邦線引接,同時可以使用熱熔膠固定。左前LED的正端接到PIN2,負端接地。右前LED的正端接到PIN3,負端接地。由於LinkIt7697微控制器的GPIO本身推動的電流就不大,因此不需要串接電組也不容易讓LED燒毀。統整LED接線表格如下:

後車燈則選用與前車燈不同的LED顏色即可。一樣使用杜邦線連接並用熱溶膠加以固定。左後LED的正端接到PIN4,負端接地。右後LED的正端街到PIN5,負端接地。

STEP4:安裝超音波測距模組與開發板

為了紮實固定超音波模組,車架的兩個圓形開孔,在設計上通常都會比較緊密一些,3D列印時又因為有開啟支撐,在拔除後可能圓形已經有些失真,如果因此在安裝上比較不便利,可以先行用銼刀修飾圓孔在做安裝。超音波模組共有4隻引腳,接線位置如下表所示:

LinkIt 7697開發板與Robot Shield的位置於車架正上方,下方開孔剛好可以容納兩顆超級電容。

STEP 5:安裝減速馬達與輪胎

接著安裝兩顆減速馬達,減速馬達中間有凸起那側朝向車架內部。由於車架上沒有卡榫可以固定減速馬達,因此在安裝時使用熱熔膠將減速馬達與車架黏牢。等待熱熔膠冷卻固定後再分別安裝左右側輪胎。線路連接部分,右輪接到Robot Shield的Motor A,左輪連接到Robot Shield的Motor B。

STEP 6:檢查各組件線路,完成!

最後一步就是檢查前面各個零組件線路是否確實有連接至擴充板上,以及把線路整理固定好,MR-1的硬體組裝即完成了!

LinkIt Remote Control

LinkIt Remote(以下簡稱LRemote)是聯發科團隊在去(2017)年9月新增的一個功能,可以直接在Arduino的程式裡面就直接撰寫好行動裝置端的UI(User Interface,使用者介面)。只要到Google Play(Android系統)或是APP Store(iOS)直接下載LinkIt remote程式,完全不需要再寫手機或是平板的APP,就可以做到遙控的功能,可以說是非常的方便實用,也能省去相當多製作APP的麻煩。可以檢查一下Arduino IDE開發板管理員當中的LinkIt 7697支援,只要是0.9.5以後的版本,就有支援LRemote的功能!(建議可直接更新到目前最新版本)。

目前LRemote所支援的物件有五個:

  1. LRemoteLabel:文字標籤,V0.10.9版本以後,可以使用updateText()方法來動態更新顯示文字。
  2. LRemoteButton:按鈕,手離開後即自復歸的按鈕。
  3. LRemoteCircleButton:圓形按鈕。同上,不過是將外形改為圓形。
  4. LRemoteSlider:滑動桿,可以指定範圍的線性數列軸,用以選取一個數值。
  5. LRemoteSwitch:ON/OFF開關,按下即轉態。

UI規劃

為了讓接下來UI規劃順利,我們先建立一個3×5的表格當作是手機上面APP要呈現的畫面。以左上角為原點(0,0),將所需要用到的按鈕、開關、文字與滑動桿物件等規畫上去要擺放的位置。每個物件都有位置(pos)與大小(size)屬性,依照這些屬性調整表格,就可以約略看出手機連線後的介面。

程式碼解析

這次的專案同樣也是Open Source,所有程式碼都可以從GitHub上取得。關於Robot Shield的馬達控制原理,也可以參照前一篇【利用LinkIt 7697和Robot Shield來改造遙控車】文章,這邊就不再贅述了。

  • 行號#4~#13:定義各零件接線的腳位,如果前面接線有改過,這邊也需要跟著調整。
  • 行號#17:這定義了BLE裝置的名稱,再多個機器人的環境下一定要修改,免得大家的名稱都相同,連到誰家的機器人都不知道了。
  • 行號#20~#30:宣告LRemote UI上各類型物件
  • 行號#38~#140:LinkIt 7697初始化程式段,前面幾行設定會用到各個IO腳為輸出模式。中間為LRemote各位物件的顯示名稱、位置、大小、顏色等設定,只要照著前面規劃好的表格內容去設定即可。最後記得呼叫LRemote.begin()來啟動這項功能。
  • 行號#142~#195:實作了輪型機器人控制的相關函式,包含forward()、backward()、turn_right()、turn_left()與控制LED的front_light()、rear_light()等。
  • 行號#197~#323:主程式段,其中#213的LRemote.process()會將手機端接收到的事件傳遞到各物件,必須定期呼叫,其餘主要都是處理各LRemote物件的各種事件處理。

結語

使用LinkIt 7697加上Robot Shield所打造的MR-1輪型機器人,不僅是外型小巧可愛,組裝上也是相當便利省工。加上LinkIt 7697強大的物聯網,不論是讓其避障、自動行走,或是使用行動裝置透過藍芽BLE的遙控,都可以輕鬆完成。除此之外,MR-1在教育中可以使用BlocklyDuino編程自走車動作,而在物聯網的應用上,還可以連上雲端的MCS做進階的應用!

原文連結

Felix Lin

Felix Lin

長期出沒在南部地區的Maker社群,致力於推廣從實作中學習的精神。熱愛胡搞瞎搞,喜歡嘗試新事物。現職為亞堤教育團隊講師與創客閣樓召集人。
Felix Lin

Contact

Contact
  • Category
    Robotics, Smart Toy, 開發板
  • Tags
    輪型機器人

Project簡述

Project簡述
  • 簡述
    使用LinkIt 7697加上Robot Shield所打造的MR-1輪型機器人,外型小巧可愛,組裝上也是相當便利省工,不論是讓其避障、自動行走,或是使用行動裝置透過藍芽BLE的遙控,都可以輕鬆完成!
  • 作者
    Felix Lin

您的姓名 〈需填寫〉

您的電子郵件信箱 〈需填寫〉

主旨

您的信件內容