由於研究需要自行設計硬體,聽說 Arduino 是個滿容易上手的硬體,所以決定就採用 Arduino 進行開發。要建立開發 Arduino 的環境還滿容易的,只要到官方網站下載適合自己作業系統的 IDE 就好啦!但我還是習慣在命令列環境下進行開發,以下就是配置 CLI 環境的方法。Arduino 的 CLI 工具叫做 Ino

Environment

  • OS X 10.9 Mavericks
  • homebrew 0.9.5
  • Xcode 5.0.2

Requirement

  • Python 2.6+
  • Arduino IDE
  • picocom

首先,Python 2.6+ 在 OS X 本身就內建了,所以不用理會它,而 Arduino IDE 請到 Arduino [官方網站][1]下載並安裝。最後是 picocom,直接 brew install picocom 就會安裝好啦!

完成以上了必要條件後,如果你有用 easy_install 或是 pip 的話,直接輸入 easy_install ino 或是 pip install ino 即可。

Ino 官方有一份 Quick Start 的文件可以參考,裡頭有基本指令的使用方式,如果想知道更詳盡的內容,可以在終端機中輸入指令,並在其後方加上 --help 的參數。

不過,在我安裝完 Ino 的環境後,按照 Quick Start 的步驟去執行時,發現 ino upload 一直發生錯誤,錯誤訊息如下:

1
2
3
4
5
$ ino upload
Guessing serial port ... /dev/tty.usbserial-A10249RJ
/usr/local/opt/coreutils/libexec/gnubin/stty: invalid argument ‘-f’
Try '/usr/local/opt/coreutils/libexec/gnubin/stty --help' for more information.
stty failed

發現是在執行 stty 這個指令時,發現不合法的參數 -fman stty 後發現的確 stty 並沒有 -f 這樣的參數,只有 -F 可以使用。原來是因為 OS X 內建的是 BSD 版本的 stty,該版本中確實是使用 -f 而非 -F。但是,我有安裝 coreutils 來取得 GNU 版本的工具,而且我也將該 GNU 版本的設定為預設使用的版本。而 Ino 有檢查作業系統型別來選擇加上不同的參數,所以當 Ino 發現作業系統是 OS X 時,就會選擇加上 -f 的參數。解決方法很簡單,直接去改 Ino 的原始碼就好啦!修改 /usr/local/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ino/commands/upload.py 這個檔案,並將 file_switch = '-f' if platform.system() == 'Darwin' else '-F' 改成 file_switch = '-F' 即可。

另外,可能還會發現在 upload 時一直出現以下的錯誤的話:

1
2
3
Guessing serial port ... /dev/tty.usbserial-A10249RJ
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude done.  Thank you.
1
2
3
Guessing serial port ... /dev/tty.usbserial-A10249RJ
avrdude: stk500_recv(): programmer is not responding
avrdude done.  Thank you.

那就是…硬體選錯了!!如果很幸運的剛好是用 Uno 這塊板子的話可能就不會遇到這問題,但像我是用 Nano 這塊,就被這問題卡很久。如果不是用 Uno 的話,在 build 以及 upload 時都要附上 -m nano328 這樣的參數來告知硬體型別。而在 upload 與 serial 時,也要更改 serial port 的位置,加上 -p /dev/tty.usbserial-A10249RJ 這樣的參數。

如果懶惰的話,可以寫個 ino.ini 的檔案,並在內容寫入:

1
2
board-model = nano328
serial-port = /dev/tty.usbserial-A10249RJ

這樣所有 ino 指令都會預設加上 -m nano328-p /dev/tty.usbserial-A10249RJ 這兩個參數了!ino.ini 檔案還有其他配置方式,在 Ino 的 [Quick Start][3] 可以找到。

最後,在進行 serial 通訊時,也就是 ino serial 指令。其實就只是 Ino 會直接呼叫 picocom 來進行連線這樣,所以操作指令都與 picocom 相同。一個比較常用的指令就是「離開」,只要按下「Ctrl+A] 後,再按下「Ctrl+X」即可離開。要注意,千萬不要在斷開 serial 連線之前就把 USB 接頭拔掉,不然會看到很精彩的六國當機畫面。我的電腦超少當機,但每次這樣拔掉就立馬當機…。

以上的安裝方法在 Ubuntu 也適用,而且在 Ubuntu 中不必特別去 Arduino 官網下載 IDE,可以直接透過 apt-get install arduino 就可以啦!