概要
Johnny-five を使って Arduino で L チカしてみました
Johnny-five を 使えば Arduino を JavaScript で制御することができるようになります
環境
- Arduino IDE 1.6.7
- Mac OS X 10.11.4
- Johnny-five 0.9.43
- Nodejs 5.9.1
- npm 3.7.3
Johnny-five のインストール
今回は Mac 上で Johnny-five を使います
Johnny-five 自体は Nodejs で動作するパッケージなので npm コマンドを使ってインストールすることができます
Nodejs および npm は事前に Homebrew を使ってインストールしています
- npm install johnny-five
Arduino に Firmate のスケッチを書き込む
Mac に Arduino を接続します
Arduino IDE を開いて Firmate の StandardFirmate というサンプルスケッチを書き込みましょう
ファイル -> スケッチの例 -> Firmate -> StandardFirmate
で開いたらあとは書き込めば OK です
配線
いつもの L チカ配線で OK です
抵抗は 1KΩ を使っています
Nodejs スクリプト
Nodejs で L チカするためのスクリプトは以下の通りです
- control_arduino.js
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {
var led = new five.Led(13);
led.strobe(500);
this.on("exit", function() {
led.off();
});
});
あとはこれを
- node control_arduino.js
と実行すれば OK です
Arduino 用の COM ポートを自動で探してくれるみたいです
実行中は LED が点滅すると思います
また実行中は REPL 状態になるのでここでスクリプトを直接記載することもできるみたいです
1461310285586 Device(s) /dev/cu.usbmodem1421
1461310285597 Connected /dev/cu.usbmodem1421
1461310289291 Repl Initialized
>
終了したい場合は Ctrl + D で OK です
終了すると LED は消灯します
メリット・デメリット
今回は L チカだけでしたが Johnny-five を使うと結局何が嬉しいのかというのは自分なりに メリット・デメリットとしてまとめてみました
メリット
- いろんなマイコンやシングルボードコンピュータをサポートしているので 1 つの Nodejs スクリプトを複数のマイコンやシングルボードコンピュータで動かすことができる
- どんなボードでも Nodejs で制御することができる
- Nodejs のシナジーを使うことができる ( 文法やライブラリ、コールバック処理の仕組みなど )
デメリット
- Johnny-five が対応していないセンサや通信モジュールがある場合は自作しなければいけない
- マイコンでずっとプログラム動かさなければいけないときに直接焼きこむことができないので制御側 (今回なら Mac ) と接続した状態で、かつ Node のスクリプトをデーモン化しておく必要がある
- ここは詳しく調べていないので何とも言えないですが方法はあるかもしれません
最後に
超簡単ですが Johnny-five を試してみました
個人的には Apache Cordova 的な印象を受けました
要するにマルチプラットフォームをサポートして Nodejs だけでいろんなマイコンやシングルボードコンピュータを制御できますという感じでしょうか
ただ、いろんなボードを持っていて、それぞれの異なるボードで同じ処理をしたい人がいるかというとそんなにいないような気がします
なので、想定ケースとして C や C++ が嫌いで Johnny-five を使えば Nodejs で書くことができるようになるというケースで使われるほうが多いような気がします ( と、考えると RubyMotion 的な立ち位置とも言えなくもないか、、、)
とりあえず触っただけなので適当なことを言っている可能性が高いです
別のボードで試してみたり、別のモータやモジュールを制御してみるといろんなことがわかってくるような気がします
0 件のコメント:
コメントを投稿