作者:Felix Lin
在【linkIt 7697加上Robot Shield來改造遙控車】文章中,使用既有的遙控車外殼來改造內部的控制核心,實際做出了一台IoT遙控車。這次我們要來從頭打造MR-1輪型機器人,沒錯!就是從無到有做出MR-1輪型機器人來!話不多說,咱們開始囉!
開始前準備工具與材料
巧婦難為無米之炊,既然身為一個Maker,要執行project實作之前得先要把所需要的工具準備起來,而這回實作我們總共需要以下零組件與工具:
- MR-1 3D列印車架
- LinkIt 7697物聯網開發板
- Robot Shield擴充板
- HC-SR04超音波模組
- TT減速馬達(兩個)
- 橡膠輪胎(兩個)
- 白色高亮度LED(兩顆)
- 紅色高亮度LED(兩顆)
- 母-母杜邦線(12條)
- 熱熔膠槍:Maker神器,方便快速固定零組件
- 電烙鐵:焊接減速馬達的引接線用
3D列印MR-1車架
MR-1最大特色在於它是一體式的車架,車體穩固性與剛性較高。許多Maker或是低年齡層的同學,可能都有過一些慘痛經驗,好比,辛苦組裝完成的車體,因為一時疏忽不小心從桌上掉落,造成車體的損傷。但一體式的車架可降低當車架不小心摔落時,造成的損害,也省去組裝多個機構件的困擾,同時擁有可愛的外型,在擴充電子零件與模組方面也是相當容易。
MR-1是一個開放原始碼的車架,由一位任職於澳洲的國小教師(註)Tim Clark老師所設計。此模型設計的授權方式為創用CC(Creative Common)姓名標示授權,MR-1車架的3D物件檔(.stl)可從Thingiverse自由取得,進行列印、輸出甚至修改使用。
註

正在列印中的MR-1車架
這邊直接取得檔案後,使用3D列印機做輸出。各個不同型號的3D列印機都會有不一樣的參數設定,這邊列印機使用的是台灣品牌INFINITY X1列印機,同時主要列印參數給各位做參考:
- 層高(Layer Thickness):0.24
- 外圈(Loops):3圈
- 填充(Infill):16.7%
- 支撐(Support):開啟(Coarse)
- 列印速度:35mm/s
使用以上參數列印輸出耗時約10小時,完成後將多餘的支撐部分拆除,就得到了我們的要使用的MR-1車架了!

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的硬體組裝即完成了!

組裝完成的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的功能!(建議可直接更新到目前最新版本)。

從Arduino IDE檢查開發板管理員LinkIt7697支援版本
目前LRemote所支援的物件有五個:
- LRemoteLabel:文字標籤,V0.10.9版本以後,可以使用updateText()方法來動態更新顯示文字。
- LRemoteButton:按鈕,手離開後即自復歸的按鈕。
- LRemoteCircleButton:圓形按鈕。同上,不過是將外形改為圓形。
- LRemoteSlider:滑動桿,可以指定範圍的線性數列軸,用以選取一個數值。
- 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物件的各種事件處理。

透過手機連線到MR-1的控制介面
結語
使用LinkIt 7697加上Robot Shield所打造的MR-1輪型機器人,不僅是外型小巧可愛,組裝上也是相當便利省工。加上LinkIt 7697強大的物聯網,不論是讓其避障、自動行走,或是使用行動裝置透過藍芽BLE的遙控,都可以輕鬆完成。除此之外,MR-1在教育中可以使用BlocklyDuino編程自走車動作,而在物聯網的應用上,還可以連上雲端的MCS做進階的應用!
(本文同步發表於亞堤教育Attic Education,文章連結;責任編輯:廖庭儀。)
- 【開箱實測】OpenVINO榨出單板極限,實作離線LLM AI助理! - 2024/07/25
- 【Maker 玩 AI】Grove Vision AI 模組讓 Arduino 也能玩 YOLO 模型 - 2023/12/26
- 【Maker 玩 AI】Edge Impulse 搭配 XIAO ESP32-S3 實作影像分類專題 - 2023/12/04
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!