使用 Grasshopper Firefly 來操作Arduino 教學 (1)-安裝及啟動

螢幕快照 0026-07-27 18.11.51

本文適合巳具備 Grasshopper 基礎者,同時正在學習 Arduino軟硬體的初學者,因為使用 Arduino都必須撰寫程式碼來定義其運作。若你對於撰寫 Arduino的程式碼及語法感到棘手,那麼你所會的Grasshopper 的運算技巧透過 Firefly可以幫你解決 Arduino 編碼的困難。

螢幕快照 0027-03-24 23.54.01

我用上圖來表示 Rhino-Grasshopper-Firefly-Arudino的一個多重外掛關係,可以看到 Firefly 是 Grasshopper 的一個外掛模組(Add-on),它可以讓你的Grasshopper 連結到Arduino的電路板,基本的 Uno、 Mega、Nano都適用,因此你可以透過 Firefly 來撰寫Arduino 的程式碼,更不用說 Grasshopper裡的大量運算元件都可以用在程式碼上,同時你可以從Arduino所連接的各種感測器來讀入參數,並控制Rhino裡的模型,或者透過Grasshopper 來控制Arduino所連接的各種致動器(actuator),包括各種馬達、LED。不僅如此,你的PC或Smartphone 還可以透過APP或連接輸入硬體(Wii, Kinect) 來做為輸入來源,並控制Arduino 連接的硬體。OSC 則是一個平板和手機用 APP,它原本是用在MIDI音樂控制,但它也可以透過 Firefly 來輸入參數,因此你可以透過OSC及手持裝置來控制Rhino 模型或 Arduino 裝置。

但在這個以產品設計為主的網站為什麼要教Firefly呢?一部分跟衍生設計所需要的參數多樣性有關,通常我們會使用亂數元件做為不明確參數來源,但透過Firefly來從Arduino 擷取,因此就能

  • 取得更具複雜性、變動性、模糊性的參數,可豐富衍生設計的操作面。
  • 此外,連接實體運算就可以擷取外面感測資訊,而某些資訊則與設計或使用行為相關。
  • Arduino本身就是開源電子硬體,也是設計師獨力完整產品運作的工具之一。

螢幕快照 0026-07-27 18.21.11

About Firefly

    如果你巳經看過Firefly官網,相信你也下載了Firefly的使用者手冊,不過裡面有2/3的內容在介紹Arduino的概念和基礎,包括電路板、麵包板、基本電子學的介紹,這個你大可不用透過這個手冊來學,大約從第24頁開始才開始講Firefly,這個部分很短,大概只介紹其元件及幾個簡單案例而巳。

螢幕快照 0026-07-26 22.37.02

下載及安裝

    請你先下載及安裝 Arduino 的編程界面軟體 IDE,再來是 從Food4Rhino或是官網下載最新版的Firefly安裝檔64bit的版本,因此你必須有Windows 8 64bit的作業環境。安裝後會在Document中放入各種案例檔,如果你有對應的電子元件的話,就能按步操作。

螢幕快照 0027-03-06 12.13.43

安裝成功的話,應該就能在Grasshopper裡找到 Firefly 的界面如下。同時它也會增加 Arduino端必要的Sketchbook 檔在Arduino的索引中。而 Firefly 裡包括主要兩種Arduino板的輸出入元件,Uno及Mega,以下我們以較簡單及便宜的Uno為主。

螢幕快照 0026-07-27 18.37.34

連接及啟動

(1) 先以USB連接上Arduino板,成功連接的話可以看到Arduino板上的如下圖右側的 Power Led (ON字樣) 順利亮起,同時表示電腦用某個 Com port 去連接它,至於是哪個port則取決於電腦,你可以在裝置管理員中查知,也可以在下一步知道。

螢幕快照 0026-07-27 23.06.17

(2) 開啟Arduino軟體,這時你可以看到Arduino連接的port顯示於右下角,如下圖為COM 6,但電腦也可能建議正確的串口,只要按是即可。接下來你必須從Arduino 選單開啟 File / Sketchbook / Firefly_Firmata,並直接按上Arduino上的上傳箭頭(Upload),順利的話可以在下面的訊息欄看到成功上傳(done uploading)。這個檔案是開通Firefly跟Arduino的固定步驟,除了特別的驅動需求(如步進馬達),否則通常都是使用這個檔,也請注意其更新狀況。

スクリーンショット 0026-07-30 0.12.43 スクリーンショット 0026-07-30 0.29.48

(3) 接下來就可以在Grasshopper,以Firefly的元件來連接Arduino板,順序如下。

スクリーンショット 0026-07-29 23.51.54

(3.1) 先拉一個Ports Available元件到工作區如上圖,並使用Panel元件連接到Ports Available的輸出端,確認它是否抓到正確的Com port,有的話它會顯示 Port 號碼如下圖。如果沒有或元件呈現紅色的話,在 Ports Available 按右鍵將其 unable後再enable 一次,應該就可以看到顯示port值。否則需要斷開Arduino並重新上傳sketchbook裡的Firmata檔直到Ports Available元件取得port值為止。 スクリーンショット 0026-07-29 23.53.19

(3.2) 拉一個 Open Port 元件到工作區,如下圖中間有open字樣的元件。再拉一個Toggle Boolean 元件並與Open Port的輸入端open相連,它可以切換真假值(true/false),相當於開啟或關閉,請先切到 False 再連到Open port。

(3.3) 這時再把 Port Available 的P輸出端連到 Open Port的輸入端port,這樣就會告知 Open port 要開啟哪個 port。再用一個 panel 連到 Open port 的輸出端Msg,用以查看是否連接成功的訊息。這時當你把toggle切換到 True 時,如果成功連接,應該可以看到Open port的訊息panel出現"Hooray!….“的成功連線訊息,下圖是切換真假值時的差別,右邊訊息不同。

スクリーンショット 0026-07-30 0.00.27

以上,如果順利成功開啟port,就可以拉一個 Uno Read元件下來,它是負責讀入Arduino 各個pin位所收集到的輸入值,它只有 Port 及 Start 兩個輸入端,所以只要把 Port 值接到Uno Read的Port 輸入端 ,Toggle的輸出值接到Start就可以啟動Arduino了,如下圖。

スクリーンショット 0026-07-29 23.46.14

右邊輸出端就相當於板子上下方的A0到A5的類比訊號輸入以及D2,4,7的數位輸入源,接到Panel的話如下圖,可以依序看到類比訊號會有個介於 0到255的值,而數位訊號就只是0或1,Msg 這個輸出端會顯示所有輸入端的內容,可以用來確定輸入來源是否正確運作。但目前 Uno上並沒有任何偵測器,所以這些讀數並沒有意義,在Msg輸出訊息會顯示數據來自Uno。

スクリーンショット 0026-07-30 0.03.39

若有板子連線問題,只要將 Port Available元件 unable掉、斷開USB、再插上、再 enable Port Available 、重新上傳Firefly_Firmata即可。若有更根本的連線問題,可以到Arduino 上方選單的工具/序列埠重新選擇電腦抓到的新port即可。建議把現在這個檔存起來,因為這是每次要撰寫Arduino程式必要的開頭,可以開啟這個檔來接下去寫,再另存新檔名即可。更多進階操作請參考下一篇https://jianyouli.wordpress.com/2014/08/01/使用-grasshopper-外掛-firefly-來操作arduino-教學-2-偵測器與讀入參數/