2017年10月20日 星期五

創意組合 : 二合一自走車 (藍芽遙控車) - 使用Scratch控制




學習目標 : 利用Scratch控制faya藍芽遙控車
學習時間 : 180min
使用模組 : (1) faya brickNano
                 (2) faya 減速馬達模組 x 2
                 (3) faya 藍芽模組
                 (4) faya 萬向輪模組
工具 : 樂高積木
          藍芽筆電或電腦
          行動電源 (自備)

====================相關知識====================
這篇文章中所用到的模組使用方式及相關知識整理如下,需進一步了解時可點進去參考:
功能介紹 : faya電子積塊與LEGO積木的結合
模組介紹 : faya brickNano
模組介紹 : faya 減速馬達模組
模組介紹 : faya 藍芽模組
模組介紹 : faya 萬向輪模組
註: 本篇範例透過Scrarch軟體利用無線的方式遙控藍芽車,透過Arduino軟體配合手機遙控藍芽車的範例會在未來另一篇文章介紹

======================開箱======================
faya二合一自走車(型號NTG-503)是fayalab的第三款創意組合系列產品,裡面所包含的模組和積木,能夠組出一台超音波壁障車或藍芽遙控車,這篇教學將示範藍芽遙控車的組裝、接線與程式,超音波壁障車的部分在另一篇文章示範

包裝盒內包含了製作超音波避障車與藍芽遙控車所需的全部模組及附件:

1.faya brickNano主板        2.萬向輪模組            3.減速馬達模組x2
4.超音波測距模組              5.藍芽模組                6.micro USB傳輸線
7. 積木包                           8. 積木柱子               9.額外積木
10. 電源線(B)                    11. 跳線盒
註 : 本範例不會用到[4.超音波測距模組]



====================組裝======================

首先把[1.faya brickNano主板]、[2.萬向輪模組]、[3.減速馬達模組x2]、[4.超音波測距模組]、[5.藍芽模組]的四個角落裝上[8.積木柱子],詳細組裝過程可參考[功能介紹 : faya電子積塊與LEGO積木的結合],請特別注意萬向輪模組的柱子組裝方向,完成後如下圖所示:


接下來把[2.萬向輪模組]取出,在板子的另一面也裝上四個柱子,到時候才能使輪子朝下,利用上方的柱子連上積木。



接著開始組裝積木,組出結構完整的車體是非常重要的,這樣才不會在行走過程中,一不小心散得七零八落 。以下的組裝範例是faya團隊經過多次的嘗試,利用有限數量的一般的積木,組出結構還算堅固的車體,大家可以先參考以下組法,待組出心得後,可以創造自己的組裝方式。

我們從車子的主體開始組裝,首先從[7.積木包]中拿出(10x2薄板積木)當作底板,在底板上方組裝出如下圖的結構,此結構需要用到4個轉90度的單粒積木。


接著在上方兩側組兩個(3x2一般積木)。


然後在上方組兩個(4x2一般積木),如下所示。


接著用另外一個(10x2薄板積木)壓住上圖的結構體,在此薄板上方繼續組出一層如下的排列,記得使用4個轉90度的單粒積木。


以上為車子的主體部分,完成後,可以拿出[3.減速馬達模]組測試一下,如果組裝無誤的話,減速馬達模組的四個樂高圓孔,能夠穩穩地組在剛剛完成車體的側邊,如下所示,測試完後,請把模組拔掉,繼續組裝未完成的部分


接下來我們要在車子前方延伸一些機構,增加空間已放置前輪和伸模組,首先加入一片(6x2薄板積木)在最左方處,如下所示。


然後在薄板上方,擺兩個(4x2一般積木)


接著用另一個(2x6薄板積木)壓住在最上方,使結構穩定。


拿出[2.faya萬向輪模組],輪子朝下,在上方的四個積木柱子裝兩片(6x2薄板積木)。


把以上的完成品扣在延伸出來的結構下方,此時萬向輪模組的上方會有三片同樣高度的6x2薄板,組完後算是完成車體前方的延伸區域了,如下所示。


我們再次拿出兩個[3.faya減速馬達模組],準備組在車體兩側的垂直結構上。


完成後如下所示


接著在最放方擺一塊(8x6薄板積木),位置請和下方一致,薄板後方要留下兩個轉90度的單粒積木,最為延伸後方車體用。


接下來要延伸車體後方,此區域可用來放置行動電源或額外的模組,首先跨上一片(6x2薄板積木)。


在薄板積木上方放置一個(4x2一般積木)。


然後在上方用另一片(6x2薄板積木)壓住。


接著用一片(6x2薄板積木)和(8x6薄板積木)放在最上層,如下圖所示。


然後用一片(6x2薄板積木)把整個上層壓住穩定,如下所示。


最後在中間的(8x6薄板積木)上方,放上 [1.faya brickNano主板],主要的車體和模組就完成了,如下圖所示,前方可以放各種感測模組,後方也有區域可以擺放行動電源,我們在接下來的步驟示範。


自走車需要行動電源才能自由的活動,由於每個人的行動電源大小長得不太一樣,底下將以手筆者手邊的行動電源(如下圖)示範,大家參考後可以根據自己的行動電源大小組出合適的結構。


先把microUSB線插上,然後(8x6薄板積木)上組出第一層如下所示,注意到USB接頭下方的紅色積木是用(1x2一般積木),如果用2x2的一般積木會卡到線,這也是要求先把USB線插上的原因。


接著用3顆積木組出第二層如下所示


再用另外3顆積木組出第三層如下所示


最後用1顆積木組出第四層如下所示,可以感覺出我們組了一個類似J的結構,屆時可以把行動電源卡在槽裡面


完成圖如下


最後,由於我們要組的是藍芽遙控車,因此我們把[ 5.藍芽模組 ]的上方兩腳,組在延伸區,如下圖所示,車子的組裝在此算完成了。


未接線前的車體外觀如下


修改藍芽模組預設baud rate:
本章範例會透過Scratch用無線的方式(藍芽)來控制遙控車,Scratch要求和Arduino的連線速度須為38400 bps,由於連上Arduino的藍芽模組預設連線速度是9600 bps,因此我們必須手動將它改成38400 bps。 修改步驟請參考以下連結:


目標:
(1) 利用Scratch程式控制藍芽遙控車
(2) 控制介面為鍵盤的上下左右鍵

接線:
(1) 電源線連接
如下面幾張圖所示,連接的說明請看這篇文章 簡易版,首先用[電源線(B)] 把brickNano的電源引到[faya藍芽模組]


再把電源從[faya藍芽模組]引到左邊的[faya減速馬達]


最後用[faya brickNano]的另一個電源接,把電源引到右邊的[faya減速馬達],如下圖紅色圈圈處。



完成後,可以稍微整理一下電源線,例如將電源線繞到模組下方,看起來比較不凌亂!


(2) 訊號線連接
      Arduino_D9    ===>   減速馬達_SIG (右輪)
      Arduino_D10  ===>   減速馬達_DIR (右輪)
   

      Arduino_D6     ===>   減速馬達_SIG (左輪)
      Arduino_D12   ===>   減速馬達_DIR (左輪)



      Arduino_Tx1  ===> 藍芽模組 (RxD)
      Arduino_Rx0  ===> 藍芽模組 (TxD)


藍芽配對: 
註: 本段圖片取自(模組介紹 : faya藍芽模組)

(1) 完成以上的電源和訊號接線後,用USB線將電腦(或行動電源)與brickNano連結,此時faya藍芽模組會通電,由於電腦的藍芽和faya藍芽模組還未配對,因此藍芽模組下方的LED燈會快速閃爍。



(2) 接著在到 [控制台 > 硬體和音效 > 裝置和印表機] 的畫面,點選 [新增裝置]


(3) 從新增裝置的選單中挑選HC-05 (無此選項時,可以找顯示[不明]的那個試試看)


(4)出現要求輸入裝置密碼的畫面,輸入預設密碼[1234]


(5)接著會跳到正在安裝檔案的頁面,等待自動安裝完成


(6)完成後,模組下方的紅色LED每2秒會閃爍1次 -代表電腦藍芽(主)和模組藍芽(僕)配對成功,電腦的裝置管理員的藍芽也會顯示HC-05裝置。


以上配對程序只需要做一次,電腦會記得此模組已經配對過,未來無須重新配對。

Scratch連線:

先把藍芽模組上的TxD、RxD訊號線拔起來,然後參考[Scratch專題 : 使用Scratch控制faya電子積塊],在電腦端安裝Scratch軟體(S4A),在brickNano安裝韌體協定。完成後再把藍芽模組上的TxD、RxD訊號線拔起來接回去。

接著開啟S4A,然後藍芽遙控車接上行動電源,等個幾秒鐘,如果連線成功的話,右上角的A0~A7就會一直跳動,且藍芽模組下方的紅色LED每2秒會閃爍1次。


為什麼原本需透過USB連接線才能讓Arduino和S4A溝通,現在卻能無線控制了呢? 原因在於Arduino和S4A協定都是透過Arduino的Tx/Rx腳位,我們讓藍芽的RxD和TxD腳位接上這兩腳,由於沒有影響到任何協定資訊的傳送,只是把傳送的介面由有線轉成無線而已。

註: 請確認藍芽已和電腦配對成功過,筆者曾經在這一步驟一直連都連不上,後來發現配對成功後,須重開電腦一次才能順利連線。

範例程式-1:  (下載點)

重要: 由於S4A的程式能夠即時控制車子的動作,因此請把車子擺在地上平坦的地方,不要放在桌上,以免掉下去功虧一簣。

首先我們利用鍵盤的[空白鍵]讓車子暫停,由於接下來車子會走動,因此先把暫停的功能設定好 。如下圖所示,我們把控制速度的第9和第6隻腳設成0時,馬達就會停止轉動,車子暫停。大家也許會注意到在拉Scrarch中的控制圖示時,感覺不太順,這是因為Scratch連上了無線藍芽,耗掉了些系統資源,屬正常現象,筆者把筆電的效能提高後能改善了一些遲鈍的現象。


接著我們設定鍵盤的[上鍵]讓車子前進,想要讓車子前進,右輪需要順時針轉 (Digital 10 = OFF),左輪由於水平翻了180度,因此需要逆時針轉 (Digital 12 = ON),控制速度的第9(右輪)和第6隻腳(左輪),可以自行調配數值,校正馬達的誤差,使其前進的速度一致,注意這裡的數值不要設太高,否則有可能瞬間耗電量太大,導致藍芽斷線,軟體需要重開,沒有存檔的話要重拉一次。拉完程式後,儲存檔案,按下鍵盤的[上鍵],看看車子是否前進,記得用[空白鍵]暫停

前進

接下來我們設定[下鍵]讓車子後退

後退

設定[左鍵]讓車子左轉

左轉

設定[右鍵]讓車子右轉

右轉

完成後,Scratch程式區會長這樣


範例程式-1演示:


範例程式-2:  (下載點)
上個範例,我們按了[上] / [下] / [左] / [右] 任一個按鍵後,車子就會前進/後退/左轉/右轉,即使放開按鍵,車子還是會繼續移動,必需按下[空白鍵]才能讓車子停止,這個範例中,我們稍微修改一下程式,當按下方向鍵時,同樣前進/後退/左轉/右轉,但一放開方向鍵時,車子就停止動作,這樣比較符合遙控車的操控方式。

繼續上個範例程式,因為我們不需要透過[空白鍵]來暫停車子了,因此首先把利用鍵盤的[空白鍵]讓車子暫停的區塊刪除

接著我們加入以下方塊程式,程式邏輯如同我們題目描述的,當未按下[上] / [下] / [左] / [右]任何一鍵時,車子暫停不動。


配合原來的方塊程式,當按下[上] / [下] / [左] / [右]任何一鍵時,車子會前進/後退/左轉/右轉,就能完成符合遙控車概念的遙控方式了,整體程式長這樣:
(記得要按下綠色旗子,放開按鍵車子暫停的功能才會啟動)


範例程式-2演示:


討論:
- 本篇範例利用Scratch和Arduino透過串列埠Tx Rx通訊的特點,加入了藍芽模組,讓Scratch所拉出來的方塊程式,能夠無線控制藍芽車。我們會在往後的範例加入藍芽手機來控制藍芽車的範例,此時Arduino端的程式必須自己撰寫,程式邏輯會和之前的文章[模組介紹 : faya藍芽模組]很類似,另外手機App端也需要對應的程式,兩者才能溝通,如果已經會撰寫App的朋友,可以先試試看。

- 如果按照本章捷的積木組法,車子的前端有4片平行的薄板,透過延伸出來的薄板,能擴展更多的積木豐富造型。



希望大家能夠順利地製作出自己的藍芽遙控車,並且更改其外型,也歡迎大家在底下留言或到我們的粉絲團留言喔!

====================================
fayalab 粉絲團
FB本篇留言版

沒有留言:

張貼留言