ページ

2013-04-15

Node-Arduino-General-IO v0.0.6を公開しました!! 神アップデートの予感…



arduinode(旧名:Node-Arduino-General-IO) v0.0.6を公開しました。

続きはWebで↓


今回のアップデートで大きな機能が追加されました。

その名は”Stream API"!!

node.jsのstreamと名前が被ってて紛らわしくてごめんなさい。

こいつを使うと、Arduinoが自動的にデータを送信してくれます。

詳細を説明する前に、背景を説明します。

今まで、Arduinoのポートの値を読み出すときは、読み出す度にAPIを操作していました。

アナログ値を読む場合なら上の様な感じで
デジタル値を読むなら下の様な感じでした。


Arduinoとnode.jsのやり取りを図示するとこんな感じです。


毎回リクエストを出していて面倒くさいですね。

ここで実際にArduinoを活用するシーンを考えてみます。

Arduinoにセンサーなどを繋げた場合は”特定のポートを一定間隔(例えば100msec)で読み出し続けたい”という使い方をすることが多いと思います。

そういう場合に、node.js側でsetTimeout()を使って一定間隔でArduinoに指示を出しても良いのですが、なんか面倒くさいです。

そこでStream APIの出番です。

こいつは以下のように指定したポートを指定した間隔(msec)で値を読み取るという感じで指示が出せます。

下の例だとD0ポートを500msec周期で読み取るという具合です。


後はArduinoが勝手に時間を計り、読み込んだポートの値をnode.js側に送信してくれます。

node.js側では"event"というイベントが発行されるので、そいつを捕まえて、よしなに処理すれば良いことになります(上のコード参照)。

図示するとこんな感じです。


いちいちリクエストを出さなくて良いので、大変簡単・簡潔ですね。

実際の使い方はAPIのドキュメントがあるので、そちらを参照して下さい。

また、当然のことながら過去のAPIとの併用も可能です。

AというポートはStream APIで、Bというポートは今までのAPIでというアクセスも可能ですし、Stream APIで使っているAというポートに対して、今までのAPIで値を読み込むことも可能です。


更に今回のアップデートに伴って、サンプルプロジェクトも更新しました。

今まではnode.jsからArduinoに対してポーリングしていましたが、Stream APIを使って書き直しました。

これによってArduinoからnode.jsにデータがStream APIでpushされ、更にnode.jsからブラウザにWeb Socketを使ってpushするという大変ハイテクな仕様になりました。

他にもこちらに置いてあるテストコードのうち"stream_test.js"や"heatrun.js"がStream APIを使ったテストコードになっています。

Stream APIの参考用に合わせてご活用下さい。



また、試験的ではありますがArduino Mega (ADK)にも対応しています。
最初の一回目の通信に失敗するという不具合を孕んでいますが、調査中です。

正式にサポートしているのは今のところArduino Unoのみになります。

そんなこんなで、Arduinoとnode.jsで通信したいとお考えの方は是非ともご活用下さい。


0 件のコメント:

コメントを投稿