高通台灣AI黑客松|競賽說明會
|

【自造DIARY】Arduino輕鬆入門 - 循線與避障自走車(上篇)

   

作者:CIRCUS Pi

近期發現很多朋友或學生想開始學習 Arduino ,下載了官方的 Arduino IDE 後,照著查詢到的教學網站或是觀看 Youtube 學習,卻發現使用起來沒有想像中的簡單,因而入坑的有點吃力。

有藉於此,我們將針對「自走車」這一個輕鬆好入門的主題,透過大家都可以取得的免費資源來體驗寫程式的有趣之處。

不管您想製作循線的,還是避障的自走車,或是兩種都要的,首先您需要有一台已經組好的自走車,配置相當常見也平價,大致上需要的東西如下:

  1. 主控版:Arduino UNO (正版、相容版、加強版、霹靂無敵酷炫版…都可以,但壞掉的不行)
  2. 擴充版:Arduino Sensor Shield V5.0(為了方便連接感測器或是馬達與電源使用)
  3. 馬達驅動:L9110 或 L9110S(有沒有加這個 S 都無所謂)
  4. 自走車車架(馬達、輪子、螺絲螺帽、銅柱、壓克力車板…等)
  5. 傳資料用的 USB TypeB to TypeA 傳輸線、電池。

如果您不想要這麼麻煩一個一個搜尋,您可以直接依照您的喜好,到 iCShop 選擇您要避障還是循線的套件包,本篇教學也會使用這些套件包:

避障自走車套件包

循線自走車套件包

擁有製作自走車的材料後,請參考先前的示範文章(簡單製作自走車)試著自己動手組裝您的自走車。如果您是買套件包的朋友,要特別注意的是馬達驅動板的部份,示範文章是藍色的,而我們套件包內附的是紅色的,功能都一樣只差別在於螺絲孔的數量與位子,紅色的只需要一根螺絲,安裝的位子不管是哪種,都是在車底兩個馬達的中間。

製作完自走車後您需要下載寫程式的軟體,為了方便大家入門輕鬆趣玩,我們決定使用 Makeblock 的 mBlock5,它是使用圖形化拼接的方式來撰寫程式,且支援上傳程式功能。

以往是使用 mBlock3 來撰寫,但是新版的 mBlock5 已經支援 Arduino,且上傳程式的速度比起 mBlock3 加快了不少,所以我們會使用 mBlock5 來撰寫本篇的示範程式。

mBlock5 下載傳送門

有了組裝好的自走車,程式也下載安裝完成,就可以開始來寫程式囉!以下會分為三個部份,第一部份是基礎操作,第二部份是避障篇,第三部份是循線篇。建議大家一定要先看基礎操作,然後再依照您購買的套件包,選擇要看第二部份還是第三部份。

基礎操作

在還沒有安裝超音波或循線感應器前,需要先了解自走車的行進方式,首先打開 mBlock5 。可以在主畫面左下方找到在設備分頁內有個加號圖案,點選加號圖案新增我們的設備。

(圖片來源:創客萊吧提供)

選擇 Arduino UNO 並在右下角點選確認。

(圖片來源:創客萊吧提供)

選擇完我們使用的設備後,就可以在圖塊程式積木選擇列表內,看到與 Arduino 相關的圖塊程式,待會將會使用這些圖塊程式來撰寫自走車行進的程式。

(圖片來源:創客萊吧提供)

在寫行進的程式前,程式需要一個主要的開頭,表示遇到什麼事件而進行什麼動作。

先點選「事件」然後將「當 Ardunio Mega 啟動時」的圖塊拖拉到空白處。

(圖片來源:創客萊吧提供)

有仔細看過 Arduino 系列產品的朋友一定會發現,我們明明使用的是 Arduino UNO ,為什麼是當 Arduino Mega 啟動時呢? 其實這是翻譯沒弄好的問題,當切到英文畫面時是顯示「When Arduino UNO starts up」喔,所以即便在中文介面下它是顯示 Mega 也不用在意,就當它是顯示 Arduino UNO 吧!在接下來的教學描述中依舊會以 Arduino Mega 來說明。

接下來點選「控制」,並將裡面的「不停重複」拖拉出來並放在「當 Ardunio Mega 啟動時」的下方。

(圖片來源:創客萊吧提供)

接下來我們要對自走車的輪子下達轉動的程式指令,程式指令會由 Arduino 的腳位下達訊號到馬達驅動板,再由驅動板直接驅動馬達。

如果您組裝自走車的過程,是參考剛剛提過的「示範文章 – 簡單製作自走車」,那麼您的 Arduino 負責下達指令的腳位為 5、6 腳位(控制其中一顆馬達)以及 9、10 腳位(控制另一顆馬達),控制的方式是發送 PWM 訊號(範圍是 0 – 255),數字給的越大馬達轉動的速度就越快,反之則越慢或停止。至於什麼是 PWM ,有興趣的朋友可以自己Google ,簡單講就是可以控制速度的指令。

如下圖點選「腳位」,並拖拉出「設置 PWM (5)輸出為(0)」這個圖塊程式到「不停重複」內。

(圖片來源:創客萊吧提供)

詳細的馬達控制是這樣的,單一顆馬達是由兩個腳位控制,假設這兩個腳位分別是 5、6,當 5 號腳位設定輸出為 0,另一支 6 號腳位設定輸出為 0 – 255 的數,則馬達將會依照填入的數字大小,朝某個轉向做相應速度的旋轉(可能是正轉向或反轉向)。

若改由 5 號腳位設定輸出為 0 – 255 的數,6 號腳位設定輸出為 0,則馬達將會依照填入的數字大小,朝與剛剛相反的轉向做相應速度的旋轉。

依照剛剛所描述的…因為要控制兩顆馬達,如下圖所示,一口氣拖拉出四個圖塊程式到「不停重複」內,並在「設置 PWM」的後方填入控制的腳位編號(5、6、9、10),然後在「輸出為」的後方依照剛剛的控制說明填入數值,在此範例是填入 200,在 0 – 255 的範圍中屬於大約接近 80% 的速度。

(圖片來源:創客萊吧提供)

P.S. 若是調整數度的數字給得太小 ,馬達會因為供電不足而轉不動喔!這點請注意。

截至目前為止,程式的運作為:當 Ardunio Mega 啟動時,會無限循環執行放在「不停重複」裡面的圖塊程式,直到斷電為止。若是自走車的組裝沒有問題,將程式上傳到 Arduino 後只要接上電池,自走車的兩個輪子應該會自己轉動起來。

那我們就來將程式上傳到 Arduino 測試看看吧!首先要拿出 USB 傳輸線連接 Arduino UNO 與電腦,電腦是接一般常見的 TypeA(像隨身碟那種頭),而 Arduino UNO 則是接上 TypeB(連接一般印表機那種),接上後點選下方的連接。

(圖片來源:創客萊吧提供)

接著勾選「顯示所有可連接的設備」後選擇設備連接電腦的序列埠(圖中是 COM3,依照個人電腦不同而有不同編號),選擇完畢後點選連接。

(圖片來源:創客萊吧提供)

連接完畢後就可以看到「上傳」的按鈕,點選上傳將圖塊程式上傳到 Arduino UNO 裡。

(圖片來源:創客萊吧提供)

點選上傳後會跑出上傳進度視窗,等到跑到 100% ,您的自走車輪子就會開始轉動囉!

(圖片來源:創客萊吧提供)

輪子可以轉動後,接下來我們要來調整轉向,首先試著讓兩個輪子都是往前轉,若是您目前兩個輪子就是往前轉動的話就可以不用調整。小編運氣不好,只有一顆輪子是向前轉,由腳位 9、10 控制的輪子是向後轉的,所以需要調整。

有兩種方法可以調整,第一種方法是從接線下手,將接在腳位 9、10 的兩條杜邦線對調接,即可改變轉向。第二種方法是更改程式寫法,將腳位 9 的輸出改為 0 ,腳位 10 的輸出改為 200 ,也就是對調這兩個腳位的參數,這樣也能改變轉向,哪種方法都可以!小編在這邊選擇第一種作法,單純個人喜好。

知道如何更改轉向後,試著挑戰撰寫除了前進以外的左右轉及後退吧!為了方便識別與使用,我們可以使用自訂積木功能來做各動作的分類。

點選「自訂積木」然後選擇「新增積木指令」。

(圖片來源:創客萊吧提供)

接著在「積木名稱」的位置,輸入您要建立的積木名稱,在這邊小編是輸入:前進,輸入完畢後點選右下角的確認。

(圖片來源:創客萊吧提供)

您可以看到剛剛新增的前進積木出現在兩個地方,一個是在積木選擇列表裡,另一個是在撰寫程式的白底區,而白底區的前進積木多了「定義」兩個字,顧名思義我們可以在它的下方定義這個前進積木的功能。

(圖片來源:創客萊吧提供)

試著如下圖新增其他方向的積木指令吧!

(圖片來源:創客萊吧提供)

新增完畢後點選「控制」並拖拉出「等待(1)秒」的程式,這個程式能讓機器人暫停一段時間,而不立即執行下個動作。

(圖片來源:創客萊吧提供)

將程式改為如下圖所示,並將程式上傳到 Arduino UNO ,試著觀察看看「等待」這個圖塊程式所表示的意義。

(圖片來源:創客萊吧提供)

您也可以將程式更改為沒有加上「等待」,如下圖所示,比較看看有什麼不同?

(圖片來源:創客萊吧提供)

綜合以上我們已經學會了第一部份 – 基礎操作,您已經能簡單控制自走車移動,本篇就先介紹到這邊,下一篇會一口氣介紹避障與循線,就挑您買的套件類別選著看吧!

(本文轉載自CIRCUS Pi原文連結;責任編輯:楊子嫻)

CIRCUS Pi

訂閱MakerPRO知識充電報

與40000位開發者一同掌握科技創新的技術資訊!

Author: CIRCUS Pi

分享有趣的創作與教學,提供Maker們創作的軍火庫,DIY 零件 | 套件| 工具,官網連結

Share This Post On
468 ad

2 Comments

  1. 請問何時還會開自走車的課?
    上課需要有Arduino 程式經驗!請問可以去哪裡上課學習?

    Post a Reply
  2. 不好意思 我想詢問【自造DIARY】Arduino輕鬆入門 - 循線與避障自走車(上篇)

    避障車要如何設計成不自行行走的模式呢?
    希望能是感應到障礙後才行走一段距離並停下><

    Post a Reply

發佈回覆給「避障車改造詢問」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *