2012年11月25日日曜日

Maker Faire Tokyo 2012に出展してきます

Maker Faire Tokyo 2012

12月1日(土)・2日(日)に台場の科学未来館にて開催されるMaker Faire Tokyo 2012に、Node.jsを利用したハードウェアを持って出展してきます。

WebブラウザとArduinoでつくるオシロスコープ

Arduinoで電圧を読み、Webブラウザに表示させるオシロスコープを展示・実演します。どんな端末でも表示できる強みをアピールしたいところですが、会場内の無線LANは不安定になりそうなのでスタンドアローンでの実演です。

光るネクタイ

LED電飾を埋め込んだネクタイも展示します。ネクタイの裏にいるArduinoとMacをつなぐZigBeeは無線LANと同じ周波数帯なので、こちらも当日うまく動いてくれるか心配なところ。当日の実演はiPhoneシミュレータを使う予定です。

テーブル配置を確認したところ、ぼくの背中側にはガンガンにキラキラしている方がいらっしゃるようです。負けないようにがんばります。

2012年11月24日土曜日

2012年も東京Node学園祭に行ってきたよ

東京Node学園祭、昨年に続いて参加してきました。しかも今年はLT登壇者として。まさかこんな日が来るとはね。

おもしろハードウェアが増えた

手前みそでございますが、自分の興味ある話に注目しちゃいますよね。去年は、Yahoo!の路線バス追跡と、LTのKinectの2本。今年はリクルートさんの脳波でデバイスをコントロールする話を筆頭に、LTがぼくを含めて3本。いずれもNode.jsをハブとしていろいろな機器・機械を制御するという内容でしたが、Node.jsとその周辺機器とのつなぎ方、動作のトリガーがそれぞれ違っているので、そんなこともできるのか!と思ってもらえれば幸いです。

できるだけ話す側にまわったほうがよい

LT枠にて、「光るネクタイをNode.js経由で制御」という発表をしたのですが、これによって「ああ、あいつね」となりいろいろ話しかけてもらえました。外国の方(すみません名前を聞かなかったです)からjohnny-fiveというArduino制御モジュールを教えてもらったりなど、「他人の発表を聞いて学ぶ」だけじゃなく「自分よりも詳しい人からアドバイスをもらえる」という経験ができました。

知識の増え方が加速するので、「来年こそは」と思った方はぜひ。こういった形で循環が進んでいくといいですね。そして、こんな素敵な経験ができたのは運営の皆様のおかげです。ありがとうございます。

2012年11月4日日曜日

iPhoneとArduinoを、XBeeとNode.jsでつなぐ。その2。

東京Node学園祭2012 アドベントカレンダーの21日目ぶんになります。ひとつまえの記事にて、Node.jsとXBee ZBを使ったiPhone〜Arduinoの無線制御について書きました。このときからのアップデートについてまとめます。

XBeeをAPIモードでつかう

前回の内容では、XBeeを透過モードで使っていました。ここをAPIモードにかえています。これによってXBeeボードに搭載されているAD変換のモニタリングなどが使えるようになる一方、きちんとパケットを組み立てなければならなくなっています。透過モードではシリアルポートに値を入れれば、それがネットワーク内のすべてのXBeeにそのままの値で飛ばされるので、周辺のコードを書く分には楽なのです。が、特定のモジュールにだけ飛ばすとか、XBeeボードのちょっと便利な機能を利用できないという弱点があるのです。

XBeeボードの詳細については、オライリー・ジャパンから出版されているXBeeで作るワイヤレスセンサーネットワークを参照ください。

node-xbeeを使う

Node.js〜XBee〜Arduinoとなりますが、Node.jsとXBeeの間はnode-xbeeという便利なモジュールを使っています。基本的にシリアルポートを経由しての通信はかわらないのですが、0x7Eのパケットの節目ごとに切り取ってくれたり、パケットの中身をオブジェクトに分解してくれたり、送信時には逆にパケット長やパリティを付加してくれたりなど、よきに計らってくれる機能を実装しています。

全体の構成

DaiNagoya_v4.010

APIモードのAD変換機能を、基板上の電源電圧の監視につかっています。XBeeでAD変換の後Node.jsに投げて、WebSocket経由でiPhoneへ飛んでいく部分。ここはオシロスコープの経験を流用しています。ソースコードについてはgithubをごらんください。動かしている様子はこちら。

iPhoneとXBee/Arduinoが直接つながっているように見せたくて、Node.jsの動いているMacは画面の外にしてしまいました。LEDが全部点灯すると引き込まれる電流が増えるため、エネループが電圧降下をおこしている様子がiPhone上のグラフから読めると思います。

さいごに

2011年の東京Node学園祭より。Node.jsという名前の由来について、「グラフ理論のノードが由来。今はまだNode.jsをノードとしたノードは少ないけど,これからそれらがどんどん多くなるのを期待している」とRyan氏。いままでつなげることが難しかったデバイス同士を、Node.jsがノードとなってつなげている例と言ってもよいのではないでしょうか。