上個星期順道經過光華商場時,到了國際廣場B1的「良興電子」逛逛;就在結帳處的玻璃櫥櫃,擺上了好幾張的超微型系統硬體,係以電路板裸裝的界面卡一般陳設。

我好奇的觀望著,其中就有時下相當熱門的「樹莓派 (Raspberry Pi)」超微型電腦套件。「樹莓派」這詞是我大概兩個月前閒逛網站找資訊時才知道的,雖然知道它如同卡片般大小的體積,但也真的是親眼看到才見識到它是這麼的渺小。

除了樹莓派,我又看到其它兩種同體積大小的微型硬體套件-Arduino 與 Intel Galileo。所以總共看到三大類型的硬體卡,然後又各有擴充卡,然後這三大種類的主卡又可以彼此整合,所以看起來好是眼花撩亂的感覺。

樹莓派 (Raspberry)
圖、樹莓派 (Raspberry)

IntelGalileo
圖、Intel Galileo

回家仔細爬了文,總算逐漸了解它們的異同之處。簡單的說:Raspberry Pi 與 Intel Galleo 都是屬於超微型的處理器 (micro-processor),而且真的是一片完整的電腦功能。當然,你還必須為它們另外提供電源、顯示幕與輸入裝置的;而 Arduino 則不能稱為電腦,它較偏是硬體的微控制器 (micro-controller) ,可以透過簡單的程式開發平台,而能輕易地控制各類型的硬體裝置。


關於 Intel Galleo (代號稱為伽利略),它算是超微型處理器的後起之秀,硬體規格比 Raspberry Pi 好上許多,但價錢也約高上一倍。它的特點係因 Intel 這家大公司與 Arduino 所合作,在主板上直接內建了 Arduino 相容界面的插槽,所以可以直接在該處理器上撰寫程式,並直接就能輕易地控制 Arduino 硬體裝置。

不過這裡我並不想介紹它,雖然它標榜的也是開放的硬體平台,但畢竟它還不像 Raspberry Pi 那麼火紅普及 (也比較貴)。我覺得起碼這兩三年,都絕對會是 Raspberry 與 Arduino 的天下。

(事實上,還有其它的開放硬體平台如雨後春筍般衍生出來,但這幾年的開放硬體平台仍會是以上述兩者為主要代表。)

所以回到樹莓派,它就是一片超微型的電腦套件。它的目的是甚麼?就是為了讓一般甚至中小學生,都可以用極為便宜的價格購買所發行的超微型套件/組件,透過自行 DIY 的過程,學習並了解電腦系統的基本構造,以及如何使用撰寫軟體程式與驅動控制硬體。

除了體積小,當然為了成本考量,料件都很精簡。以現在販售的 Model-B 型號來說 (完整硬體規格可查看 Wiki),ARM-700 Mhz, 512 MB, USB/RJ-45, HDMI/RCA 影像輸出, SD 卡儲存插槽,這樣只要新台幣一千初頭。如果再附購簡易外殼、USB 電源頭 (5V/2A)、8GB SD卡及傳輸件等,也總共只要新台幣兩千元。

樹莓派加裝透明殼
圖、樹莓派加裝透明殼

然後你就可以把這信用卡大小的完整樹莓套件,連接上客廳的電視,安裝 Linux 系統,再安裝 XBMC 與 MAME 大型電玩模擬器,就可以透過紅外線遙控器播放 1080p 畫質的影片,以及連結遊戲搖桿暢玩電玩遊戲的。

當然樹莓派的應用可說是廣泛到只差在玩家能否有充分的想像力而已;這裡可以參考-樹莓派應用實例,可以作成 LED控制器、聲控咖啡機、溫室控制系統、比特幣挖礦機,甚至也能串組成樹莓派叢集 (Cluster),成為一台超級電腦。

好啦,再來看看 Arduino 是甚麼。

Arduino Uno R3
圖、Arduino UNO R3

我從 Arduino 這邊學到一個新用詞:Open Source Hardware。

Open Source 這詞一般是應用軟體所謂的「開放式原始碼」;而為何 Arduino 是被定義為「開源硬體」? 因為 Arduino 提供了多類型甚至是超簡易的圖型 (小學生都能輕易設計)程式開發環境於 PC端,然後撰寫控制指令後,透過簡單的 USB 傳輸就能把程式寫入到 Arduino 主控器上,並進而控制各類型的硬體裝置 (如 LED, 馬達, 蜂鳴器 ...等)。

嗯,Arduino 程式長甚麼樣?底下可以參考下 (引自 Arduino Wiki)

int LED_PIN=13;
 
void setup () {
    pinMode (LED_PIN, OUTPUT);     // 以數位輸出方式啟用Pin13
}
 
void loop () {                     // loop副程式,重複不斷執行
    digitalWrite (LED_PIN, HIGH);  // 打開LED
    delay (1000);                  // 等待一秒,delay內含數值1000,代表延遲1000mS,即一秒。
    digitalWrite (LED_PIN, LOW);   // 關閉LED
    delay (1000);                  // 等待一秒
}                                  // loop副程式結束

再則 Arduino 因為標榜開放式規格,所以它提供了標準的硬體界面,然後就可以如同電子積木般,一片片的疊加上來。例如我希望有藍芽無線控制功能,所以我只要再加買塊藍芽模組的擴充卡,再插到主板的擴充槽,再來就可以撰寫程式,透過手機的藍芽通訊遙控 Arduino 了。

假如我買了片主板,例如現在較熱門又便宜的 UNO R3 (大概三、五百元而已),就可以有基本的與 PC 連接介面 (撰寫程式) 與 I/O 硬體裝置連接與擴展介面。

再則 Arduino 創造了個專有名詞:「Shield」,大陸這邊普遍把它稱為「模塊」,而台灣應該是可以稱之為「模組 (Module)」。

再以電動遙控車為例,我可以買一片控制主板,然後再加買馬達驅動電機擴展板,這樣就可以寫程式控制遙控車的行進;再更進階些,我想要判斷前方是否有障礙物 (如遇到牆壁),則需要紅外線或超聲波模組 (Shield),但因為要能插上主卡,所以就又要再加買一片應該算是「橋接 (bridge)」類型的擴展卡-感測擴展卡。

如此我總共插上了三片卡-主板、電機驅動/感測 擴展卡。然後電機驅動提供控制馬達與輪子的轉動、感測擴展卡上面再插上了如紅外線感測模組,如果我就能撰寫判斷與迴圈等控制指令,使得小車可以成為自動偵測障礙並迴避轉向的功能了。

再來我想用手機藍芽遙控,那就是再買片藍芽模組,然後再查看已有的擴展卡是否已提供藍芽的介面 (現在許多擴展卡都提供多合一功能);甚至我也可以再接上 GPS 模組,讓手機或PC (只要想辦法能遙控小車即可)追蹤定位或軌跡控制等。

開放式硬體,應用太廣、太廣、太廣啦,實在真的很難用言語形容 Arduino 的偉大,讓小孩子與大人都能從中學習到硬體控制與軟體設計的 DIY 樂趣,而且可以想見真的是其樂無窮。

那麼,Arduino 又是與樹莓派如何區別各自的定位與兩者間的合作呢?

老實說,這還真的有些為難,兩者的界定有時候又有些模糊。簡單的說,樹莓派較不容易如 Arduino 採用疊加硬體模組的方式增加硬體裝置的功能,而且所提供的 I/O (輸入/輸出)介面通道有限;所以為了能控制更多的硬體裝置,就可以透過「轉卡」的方式連接 Arduino 主板,再進而控制硬體裝置。

那麼反之 Arduino 需要樹莓派甚麼協助呢?當然就是借助強大的微處理器運算的功能,可以作複雜的智慧型控制。例如我要設計個機械手臂下圍棋 (真的拿棋子然後可以擺上正確的棋盤位置上),Arduino 負責控制機械手臂與精確的位置移動;而樹莓派則負責處理下棋的繁雜邏輯演算 (其實也可以下載如 GnuGO 然後呼叫並讓其運算下棋的邏輯)。

嗯,這兩種也算是競合的關係,但絕對都會屬於是大人們的電子玩具;事實上國外已經有好多的小學生已經從其玩得不亦樂乎了,甚至創造出來的成果讓大人們瞠目結舌。

喔,為了能享受這硬體 DIY 的樂趣,以及重拾回學生時代太混沒有學到電路一般知識的遺憾,我足足在「露天」與「淘寶」花了三個晚上研究我想買回來的套件與零組件。

我想買個樹莓派套件以及7吋的LCD螢幕,再透過小米行動電源 (採購單內),提供 5V/2A 的電源輸入,這樣我就可以在咖啡廳或戶外研究關於 Linux 系統較底層的觀念,以及學習透過 C/C++ 控制基本的硬體裝置。

至於 Arduino,我所花的採購研究時間更久,因為我想做一台智慧型小車,但又能像小狗般,手伸到哪它的眼睛 (超聲波或紅外線感測裝置)就會上下左右跟著移動,並且也能轉成由手機的藍芽控制。其實大陸淘寶這類現成的套件已有一堆,但這樣做沒成就感且功能與想像力較容易受限,所以我是包括主板與車體等零組件一樣一樣找、然後再個別訂購的。

我已經透過大陸淘寶訂購我想要的物品-附帶一說,一比較後完全不會想在台灣如露天購買,價格大概差上五成以上,貨品種類也不多。我所訂購關於樹莓派與 Arduino 套件、零組件等,可分為三大部分-「樹莓派套件」、「Arduino 學習套件」、「Arduino 小車零組件」。

透過從採購的過程中,其實我就從中學到許多關於樹莓派與 Arduino 的觀念 (因為我需要爬文了解許多相關的術語),要知道我在三天前可完全是一無所知的。

算了下我訂購的淘寶商家約從有快10家的店家訂購、買下來的清單起碼有50樣以上;但這樣價格含運費竟然總共不到人民幣兩千元 (近兩千),對於屬於大人的玩具開銷 (我又不玩車或夜店之類的),實在是太划算了。

至於如何下單、訂購、與商家客服透過阿里旺旺洽談,又如何透過國際轉運 (如全家),甚至因為電子商品有管制的緣故,使得必須只能透過私人代訂並轉運等等的這些過程;還有我大概買了哪些套件與零組件,我想另外整理篇心得分享文再來聊聊吧。