Arduino, Beaglebone, Raspberry Pi, Lego Mindstorms 心得比較(上)

Posted by TJ Wei on 星期五, 9月 06, 2013 with No comments
我對電子以及機械認識只有高中物理的程度,而且還已經過了半衰期了,說是門外漢不為過。拜網際網路掀起的開放知識革命之賜,跟風了這一波的 Open hardware 以及 Maker 風潮。買了一些玩具來自學玩玩。
左起: Arduino Uno, Beaglebone Black, Raspberry Pi(Model B)
這一陣子先後買了 Arduino Uno, Beaglebone Black, 以及 Raspberry Pi。早一年多,還買了套 Mindstorms NXT。當時照著做了簡單的機器人,嚇得那時還只會扶著走的小松鼠到處亂爬。前一陣子,拿來自主研發了個畫圖機器人,用小松鼠的玩具畫板來作畫。後來也按圖索驥把人形機器人 Alpha Rex 組了起來,用藍牙配合 macbook air,做成聲控機器人。

Mindstorms 組的畫圖機器人
Arduino 做過
  • 手搖式 LED 視覺暫留顯示器,
  • 紅外線萬能遙控器(因為房間的冷氣晚上會結冰,找人修了幾次都沒修好,就用程式控制,每半小時送風休息一下,參考 Adafruit tutorial, IRremote, 及 IRLib),
  • 樂器(用軟 Soft Potentiometer 控制, buzzer 發聲),
  • PCM 語音 Player(把 Macbook 的語音傳到 arduino 上,用 buzzer 播放,一開始用 loop 硬幹,後來用 interrput
還有其他像 LED Matrix 、溫度感測、亮度感測之類的小實驗。

 
 手搖視覺暫留

BeagleBone Black(簡稱 BBB)弄過用巧虎手偶改裝的機器巧虎

Raspberry Pi(簡稱 RPi) 則...開過機。

以上大概是我目前淺薄的經驗,所以以下的心得就當成初學者的經驗參考。

比較表:


Arduino UnoRPiBBBNXT EV3
USD$ 定價29.953545279.99 (8457)349.99 (31313)
NT$ (市價)320130016001350014999
CPU/Microcontroller16Mhz ATmega328P700 MHz ARM111 GHz ARM Cortex-A848Mhz ARM7/8Mhz ATMega48300Mhz ARM9
Memory32 KB Flash
2 KB SRAM
1 KB EEPROM
512 MB
SD Slot
512 MB DDR3
2GB flash
MicroSD Slot
64 KB RAM
256 KB Flash
64 MB RAM
16 MB Flash
microSD Slot
Video HDMImicroHDMI單色 LCD 100 x 64 單色 LCD 178 x 128
AudioAudio Jack/HDMImicroHDMI內建揚聲器內建揚聲器
USB與 PC 通訊與 PC 通訊
2 USB Port
與 PC 通訊
1 USB Port
與 PC 通訊與 PC 通訊
有 USB Port
網路Ethernet 10/100, RJ45Ethernet 10/100, RJ45
藍牙
低階擴充性14 x GPIO (含 6 x PWM, 2 x serial, 4 x SPI, 1 x LED)
6 x 類比輸入 (10bit)
26 pin 腳位 含:
17 x GPIO (8 x free, 含 1 x PWM)
I²C, SPI, UART

92 腳位 含:
65 x GPIO
(32 x free, 含8 x PWM)
7 x 類比輸入
(12bit)
I²C, SPI, UART
4 個數位/類比感應
3 馬達(可感應位置)
4 個數位/類比感應
4 馬達(可感應位置)
系統無/可刷Linux
(可刷其他)
Linux
(可刷其他)
Lego系統
(可刷其他)
Linux
(可刷?)
台幣價格為露天拍賣查到的大約價格,一些會附額外配件。

 入手:

價格來說,Mindstorms 貴很多,但這個售價包含積木、齒輪、感應器、馬達還有軟體。比方 Mindstorms(NXT 2.0 家用版)裡面有三個能傳回位置的馬達,超音波距離、顏色、碰撞感知器。
積木本身是有一定價值的。不然像我用廢棄免洗筷、橡皮筋、紙盒等等組成機器巧虎骨架,材料費雖然是零,但很脆弱麻煩。
RPi 及 Arduino 應該很容易買到,BBB 則稍微少一點。Mindstorm 則有教育及家用兩種管道,拍賣上也不少。

由於我是外行,所以我一開始先買了 arduino 官方的 starter kit。 露天上的價格約 3600 台幣。

硬體/擴充性:

BBB, RPi 用的都是 Arm 系列的單核心 CPU,跑 Linux, 512M ram。BBB 可能要快一點,但都在同一等級(至少跟 NXT 及 Arduino 比起來)。

RPi 的優點是 HDMI 可以上 1920x1080,有 audio jack,兩個 USB 插槽可以外接週邊。
缺點是沒有 PWM,類比輸入,而且 GPIO 的頭是公端,比較難接,要有杜邦頭才行。
只有攝影機之類的少數專屬擴充設備,但有額外的擴充硬體能讓 RPi 使用 Arduino 的 Shield。

BBB 的有較多的 GPIO 接頭,還有 Analog input pins。
HDMI 沒有 full HD(BBB 2013.9.04 最新的 image 可以有限程度的支援 1920x1080@24,不過至今我沒有讓 BBB 連上 HDMI 過)
沒有獨立的聲音輸出入。
而類比輸入的電壓是 1.8V,這點要小心一點。
雖然沒有 Arduino 那麼多 Shield,但是也有不少專屬的擴充 Cape。

BBB 和 RPi 都很方便能接網路線,因為有 USB,也可以接上 USB 的無線網卡或藍牙卡,但前提是 Linux 能支援。

Arduino 也有一定數量的 GPIO 及 類比輸入,不過處理器速度較慢,而 ADC 的極限大約也只有 10Khz。
優點是社群大、資源及教學都多,各式各樣的擴充 Shield 都有。

Mindstorm 使用專屬的接頭,不過至少前兩代來說,已經有不少文件、教學、以及轉接版,可以皆額外的硬體。
NXT 用藍牙通訊速率以及感應器的採樣速率都不算快。

上手性:
Lego:
本質上是玩具,上手性方面沒話說,小朋友照著做都可以。
軟體方面還好安裝,Win/Mac 都行。不過在新版 OSX 下,與 MacBook Air 藍牙晶(broadcom)片不相容(解法是DYLD_LIBRARY_PATH 舊版的 IOBLUETOOTH)。除此之外,照著圖解,很容易上手。
圖形化的程式設計照著做,很容易就上手,也很有趣。
積木很容易 prototyping 自己的機械設計。
唯一的缺點是,即使接上 USB 線連上電腦,NXT 本身還要裝一大堆乾電池才行(有些版本有附充電電池)。對於手上沒有

Arduino:
下載安裝程式後,將 Arduino 用 USB 連上電腦即可寫程式,不用其他電源。
我一開始買的 arduino starter kit 非常好上手,手冊中很簡潔的把原理以及注意事項講得很清楚。不要說我這種高中物理程度的知識,即使是國中生甚至國小生應該都能上手,而且能學到東西(不過手冊是英文的)。
對我來說,有 kit 的好處是至少東西齊全。像我們這種門外漢,問題就是零件要從何買起都搞不清楚。一旦有個基本的電路出來,如果只是差個幾樣關鍵零件,就知道要怎麼買了。
(所以我又買了 BBB 和其他零件來玩)
標準的程式語言差不多就是 C,IDE 也堪用,能把正確的函式名稱標出顏色這點,對於初學者很有幫助。

BBB:
插上電腦的 USB 就能 SSH 進去或用 Web 介面了(不用其他電源線, ip 為 192.168.7.2)。至少,我的 ubuntu 是如此。從插入電源到真正能連進去感覺上約 30 秒。
Win 或者 Mac 則可能要裝驅動程式(如果你還沒有的話),但 BBB 的優點是,插上電腦號,會被電腦當成 USB 隨身碟,而隨身碟裡面就有驅動程式了!
所以假如剛好停電,所有網路都不通了,只要你有台筆電,你還是可以接上 BBB 馬上開始入門。
Web 介面有軟硬體介紹文件,有 Cloud9 IDE,還有範例程式碼和硬體電路圖。
以上是官方建議的開始方式。應該也可以如 RPi 一樣接上電源、USB 鍵盤、滑鼠,HDMI 後單獨開機使用。
(不過沒有附電源線、microHDMI 線,又只有一個 USB port)
不過我一開始用 Macbook 接的時候,碰到了 ssh 進不去的狀況,花了一點時間才解決。
官方文件裡面介紹的程式語言是 javascript 配合 bonescript lib 和 cloud9。不過反正是 linux, 用 C, C++, python, livescript 也很方便,而且也稱不上非官方。

RPi:
由於我有一台電腦本來就是接上 HDMI 電視,RJ45,USB 鍵盤及滑鼠的,所以將作業系統放入 SD 卡然後插入 RPi,接上電源,然後就能直接用 RPi 取代了那台電腦。
不過要注意, USB 或 5v Powersupply,SD 卡,還有各接線都要自備。雖然這些線材都很常見,有很大的可能性會跟我一樣,剛好都有。
安裝過程使用英文,很順利。安裝的是 Raspbian 系統,桌面上有一些 python 遊戲,還有圖形程式語言 Scratch。
Scratch 我完了一下,搞不懂怎麼跑 script。
整體執行速度感覺有點緩慢。

(待續)
Categories: , ,