croutonのUbuntu にはNode.jsとCylon.jsをFirmataファームウェアを使って操作する環境を用意しました。OSX Yosemiteにも同じようにNod.jsの開発環境を用意します。FirmataのアップロードはArduino IDEを使わずにGort のCLIから行います。
OSXの環境構築 Getting Started w/ Arduino on Mac OS X を読みながら環境構築をしていきます。
FTDIのUSBシリアルドライバ Arduino UnoとUSBシリアル接続するために、OSXにFTDIのUSBシリアルドライバをインストールします。FTDIのVCP Drivers のページからOSX用のインストーラー をダウンロードします。最新バージョンは2.2.18
でした。YosemiteにはFTDIUSBSerialDriver_10_4_10_5_10_6_10_7
をインストールします。
Gort Gort はArduinoやSparkCoreなどのコネクテッドデバイスのファームウェアを更新するCLIです。OSXの64bit版をダウンロードしてインストールします。Goで書かれているのでバイナリをコピーするだけです。
$ cd ~/Downloads $ wget https://s3.amazonaws.com/gort-io/0.3.0/gort_0.3.0_darwin_amd64.zip $ unzip gort_0.3.0_darwin_amd64.zip Archive: /Users/mshimizu/Downloads/gort_0.3.0_darwin_amd64.zip inflating: gort_0.3.0_darwin_amd64/gort inflating: gort_0.3.0_darwin_amd64/README.md inflating: gort_0.3.0_darwin_amd64/LICENSE $ sudo cp gort_0.3.0_darwin_amd64/gort /usr/local /bin/
バージョンを確認します。
$ gort --version gort version 0.3.0
Firmata Firmata ファームウェアをインストールします。Firmataはホストマシンからシリアル通信を使ってArduinoを制御するためのプロトコルです。まずArduino UnoをUSBケーブルで接続します。
$ gort scan serial /dev/cu.Bluetooth-Incoming-Port /dev/tty.Bluetooth-Incoming-Port /dev/cu.Bluetooth-Modem /dev/tty.Bluetooth-Modem /dev/cu.iPhoneDragonfly-Wireles /dev/tty.iPhoneDragonfly-Wireles /dev/cu.usbmodem1421 /dev/tty.usbmodem1421
Arduinoはavrdudeを使ってファームウェアを書き込むのでホストマシンにavrdudeをインストールします。
$ gort arduino install Attempting to install avrdude with Homebrew.
ArduinoにFirmataファームウェアをアップロードします。
$ gort arduino upload firmata /dev/tty.usbmodem1421 avrdude: AVR device initialized and ready to accept instructions ... avrdude: verifying ... avrdude: 11452 bytes of flash verified avrdude done . Thank you.
Node.js OSXの場合nodebrew を使ってNode.jsをインストールするのが多いようですが、Ubuntuと同じようにnvm を使います。インストールスクリプトをダウンロードして実行します。
$ curl https://raw.githubusercontent.com/creationix/nvm/v0.24.0/install.sh | bash
自動的に.bash_profile
にnvm起動スクリプトの実行が追加されました。
~/.bash_profils export NVM_DIR="/Users/mshimizu/.nvm" [ -s "$NVM_DIR /nvm.sh" ] && . "$NVM_DIR /nvm.sh"
シェルを開き直し、nvmのバージョンを確認します。
Node.jsは0.10の最新版をインストールします。
$ nvm install 0.10 Now using node v0.10.37
インストールしたNode.jsを有効にします。npmのバージョンも確認します。
$ nvm use 0.10 Now using node v0.10.37 $ npm -v 1.4.28
nvmを有効にして直接nodeのコマンドを実行することもできます。
$ nvm run 0.10 --version Running node v0.10.37 v0.10.37
cylon-firmata ホストマシンのOSXにCylon.jsのFirmataアダプター をインストールします。最初にプロジェクトを作成します。
$ mkdir -p ~/node_apps/firmata-led $ cd !$
package.jsonに必要なパッケージを定義します。
~/node_apps/firmata-led/package.json { "name" : "firmata-led" , "version" : "0.0.1" , "private" : true , "dependencies" : { "cylon-firmata" : "0.19.0" }, "scripts" : {"start" : "node app.js" } }
npm install
でパッケージをインストールします。
Lチカ Lチカするプログラムを用意します。port
はgort scan serial
で確認した/dev/tty.usbmodem1421
を指定します。
~/node_apps/firmata-led/app.js var Cylon = require ('cylon' );Cylon.robot({ connections: { arduino: { adaptor : 'firmata' , port : '/dev/tty.usbmodem1421' } }, devices: { led: { driver : 'led' , pin : 13 } }, work: function (my ) { every((1 ).second(), my.led.toggle); } }).start();
npm start
でプログラムを実行します。Arduino Unoの13番ピンのLEDがLチカします。
$ npm start > firmata-led@0.0.1 start /Users/mshimizu/node_apps/firmata-led > node app.js I, [2015-03-15T03:19:30.103Z] INFO -- : [Robot 45547] - Initializing connections. I, [2015-03-15T03:19:30.248Z] INFO -- : [Robot 45547] - Initializing devices. I, [2015-03-15T03:19:30.249Z] INFO -- : [Robot 45547] - Starting connections. I, [2015-03-15T03:19:33.513Z] INFO -- : [Robot 45547] - Starting devices. I, [2015-03-15T03:19:33.514Z] INFO -- : [Robot 45547] - Working.