2018年7月18日 星期三

兩種版本的 DIY micro:bit 2WD 自走避障/循跡車




前陣子新公司辦完第一梯兒童程式夏令營,我過去當台下的幫手。







那個夏令營的壓軸是做一台micro:bit遙控車,用一個micro:bit開發板送廣播訊號給車上的另一塊板子。程式本身不算難,而組裝車子的過程也比單純的程式課好玩。

我之前就在公司看過那種小車。不過,大概是在夏令營看小朋友們做得很開心,自己也心癢想買一台來玩了。我也順便把公司裡一台沒人用的小車改造了一下。

(這裡先說明:我還沒空替避障跟循跡部分寫程式,不過車子本身都確定可以跑。)



公司裡的小車改造版


市面上的micro:bit腳位擴充板很多,公司主要用的是Kitronik Motor Driver Board V2馬達驅動擴充板。這擴充板其實蠻神奇的;除了能讓你控制兩個DC直流馬達(正轉、反轉、慢慢轉、停止)以外,它也有內建穩壓器。所以接上5V或6V電源,就能提供馬達夠強的動力,但又能提供micro:bit安全的3.3V電。此外板子邊緣的擴充腳位只要焊接好,也可以拿來接其他元件,輸出的一樣是3.3V。

我的改造目的在於重現國內外常見的程式自走車教材──裝上超音波感測器和紅外線感測器,使之也能當成避障車和循跡車。網路上有店家在賣自走車底盤,有兩驅動輪的也有四輪的。有些版本的車上空間其實更大,但坦白說,我實在是比較喜歡這個圓形車身版的,想要的話還能原地旋轉呢。所以它也不必像某些Arduino教材那樣,得用馬達把超音波模組轉來轉去判斷左右距離;現在只要旋轉車身就好了。

在公司版本的小車上,既然馬達驅動板本身有穩壓器,4AA電池盒就先接到麵包板,同時提供HC-SR04超音波模組和擴充板電力。根據我之前試驗的經驗,HC-SR04接5V電才能正常判斷距離。micro:bit的Make Code圖形開發環境有超音波模組的積木(在「添加套件」打sonar),所以使用上非常簡單。



HC-SR04超音波模組用麵包板掛在車頭。
順便接一個LED燈,看起來比較酷。

馬達驅動板的接線

4AA電池盒置於車內空間,提供5.5~6V電源

循跡「模組」

很克難地掛在車子前面
(註:結果稍後發現電阻接錯位置,拆開膠布重弄了)




公司裡暫時沒有循跡模組,但我找到了幾個TCRT 5000紅外線感應器,有很多紅外線模組就是用這個做的。它的原理是從藍色的燈發射紅外光,碰到物體反射後由黑色那邊接收,而黑色物體的反射率明顯較低,所以可以用來判斷黑色。

我看到台灣有個店家有在賣TCRT 5000,一個只賣四塊台幣!?所以你想要也可以自己接接線。我的電學還在超基礎階段,但信號端的上拉電組看來可以調整感應靈敏度。



接線方式
(這是Arduino的範例,所以是接5V)

我接micro:bit的3.3V電,發射端不接電阻,接收端接2KΩ電阻。
注意感測器左右方向有分,反過來接沒用。
平常讀到的類比訊號值是900多,有東西靠近時就降到不到200。
如果是黑色物體就仍有700多。




至於我自己的那台,我想用不太一樣的方式來做。

首先,我想接5V行動電源,而不是用電池。要怎麼把行動電源接到麵包板上呢?答案是用USB轉TTL線,然後只用當中的電源跟接地線。然後我在網路上找到一個能從5V降壓到3.3V的小板子。我自己之前已經買了超音波模組跟小型的L9110S馬達驅動板。

(其實行動電源有兩個USB接口,所以其實可以直接給micro:bit供電。不過我就不喜歡前面再凸一條線啦......假如沒有那個小降壓板,我可能會用MB102或類似的產品吧,這些玩意可以做5V到3.3V轉換。但它們大概沒法)

既然行動電源體積不小,非得擱在車頂不可,所以擴充板(Kitronik Edge Connector Breakout Board)和L9110S是反過來鎖在車頂板下的。USB轉TTL線把5V電輸入車體中央的麵包板,除了替超音波模組和馬達供電,也會透過降壓板接上micro:bit擴充板。

理論上我的作法的成本會比公司版本低一點,因為Kitronik Motor Driver Board V2確實是比較貴。但Kitronik Edge Connector Breakout Board也沒特別便宜;之所以用它,是因為它可以反過來鎖在車下。有些更便宜的擴充版,針腳或鎖孔位置反而不方便裝在這兒。此外你得接的線當然就多更多了。

我自己這輛車組裝時遇到的另一個問題是:賣自走車底盤的店家是散裝出貨,結果似乎誤把小車自由輪的10mm銅柱拿錯成12mm,導致組裝完後自由輪過高,兩個大輪胎沒法同時碰到地面。懶得跟店家計較,我自己跑去電子材料行買10mm銅柱,然後把多出來的裝在車頂上,剛好可以固定行動電源。




不想買那種三路、五路的循跡感應器,因為不曉得該怎麼裝上去。
車上的孔距離好像都不對。所以就弄個兩路的湊合湊合吧。
這個模組當然比純感應器貴不少,但可以調整感應距離。
有感應到就輸出高電位,板子上也會亮綠燈,非常單純。
以後要用還可以直接拔下來。

Kitronik Edge Connector Breakout Board。
網路上賣的應該都有先焊好針腳。
不過有個跟這裡無關的小問題是:第19和20腳位似乎通常不會先焊好,
而這兩個卻是I2C介面要用的。

我得先掀開頂板,接好線後小心蓋回去

中央麵包板供電區

5V轉3.3V模組

車尾是倒過來的L9110S馬達驅動板


一開始接上L9110S時,不知何故只有一邊馬達會轉。後來一查才知道有些腳位沒辦法用來給馬達驅動板發信號,原因還有待查明。其實,Kitronik Motor Driver Board V2就是用0、8、12和16四個腳位給馬達用。最後我接在P13到P16就解決了問題。



L9110S


裝上行動電源的樣子


接電後,降壓板和L9110S的燈號會亮





沒有留言:

張貼留言