これまでOSXやChromebookをホストマシンとして、Arduino FirmataをCylon.jsやJohnny-Fiveから操作していました。ロボットやRCカーを作ろうとするといつまでも有線では困ります。センサーやアクチュエーターなどのハードウェア操作はArduinoは優れています。一方ArduinoへFirmataプロトコルのコマンドを発行したり、外部からWi-Fi経由でMQTTやWebSocketのメッセージを受信する場合はLinuxが動作するRaspberry PiやEdisonが便利です。Arduino YunやLinino OneのようにArduinoとLinuxの両方をワンボードに乗せたマイコンもあります。impやSparkのようにクラウドからデバイスに対して直接コマンドを発行できると、これまでのクラウドの技術を活用してコネクテッドデバイスの可能性が広がります。
ホストマシン
ArduinoをFirmataプロトコルで操作するためのホストマシンはRaspberry Piになります。ディスプレイとキーボードを使う作業マシンはChromebookです。Raspberry PiとはUSBシリアル変換ケーブルで接続しています。Raspberry Piのデバイスファイルの/dev/ttyUSB0
へscreenからシリアル接続します。
$ sudo enter-chroot |
Raspberry Piは電源が弱いので、USBシリアル変換ケーブルのGPIOとmicroUSBの両方から電源供給します。
Firmata
Gortのインストール
Raspberry PiからArduinoをFirmataプロトコルで操作するために、Gortをインストールします。
$ wget https://s3.amazonaws.com/gort-io/0.3.0/gort_0.3.0_linux_arm.tar.gz |
Firmataファームウェアを書き込む
Raspberry PiとArduinoをUSBケーブルで接続します。シリアルポートをスキャンするとArduinoのデバイスファイルは/dev/ttyACM0
になっています。
$ gort scan serial |
Arduinoのデバイスファイルにpiユーザーが書き込めるようにdialout
グループに追加します。
$ ls -l /dev/ttyACM0 |
Raspberry PiからArduinoへFirmataファームウェアを書き込むために、gortコマンドを使いAVRDUDEをインストールします。
$ gort arduino install |
Raspberry Piからgortとavrdudeを使いArduinoにFirmataファームウェアを書き込みます。
$ gort arduino upload firmata /dev/ttyACM0 |
Johnny-Fiveのサンプル
Node.js
Rasbperry PiにNode.jsをインストールします。今回はnode-armから最新のdebパッケージをダウンロードして使います。v0.12.0
がインストールされました。
$ wget http://node-arm.herokuapp.com/node_latest_armhf.deb |
Lチカ
Johnny-Fiveを使ってRasbperry PiからArduinoを操作します。いつものようにLチカのサンプルです。まずプロジェクトを作成します。
$ mkdir -p ~/node_apps/johnny-five-start |
package.jsonにJohnny-Fiveのパッケージを追加します。
{ |
簡単なプログラムを用意します。1秒間隔でLチカを繰り返します。
var five = require("johnny-five"); |
npm start
でapp.jsを実行するとLチカが開始します。プログラムを終了するときはCtrl+Cを2回押します。
$ npm install |