2012年8月31日金曜日

Node.jsとHTML5でつくるオシロスコープ

EventMachine版から半年、Node.jsとWebブラウザでオシロスコープをつくるしくみをまとめます。

処理の流れ

内部の動きを順に並べると、次のようになります。

Arduino

  1. Arduinoのmillis()で時間を読み出す
  2. analogRead()で電圧を読み取る。
  3. "時間,電圧"のように、カンマで区切った文字列を、シリアル通信で送る。

Node.js

  1. Socket.IOでWebSocketサーバをたてる
  2. シリアルポートを監視
  3. シリアルポートにArduinoからデータが来たら、WebSocketでブラウザに送る。

ブラウザ

  1. Socket.IOでWebSocketサーバにつなぐ
  2. WebSocket経由で時間・電圧の文字列を受けたら配列に保存
  3. Canvasを使い、配列からグラフを描画する。
  4. グラフの描画を定期的に繰り返すことで、アニメーションにする。

が、オシロスコープの簡単な流れ。Arduinoで取得した電圧の読み値が若干の遠回りをしているので、微妙に遅れて表示されてしまうのが弱点。

ソースはgithubに載せています。が、もっと汎用性を高めないと。うちの環境の痕跡が若干残っています。課題です。

2012年8月27日月曜日

Make: Ogaki Meeting 2012に出展してきました

8月最後の土日、岐阜県は大垣市で開催されたMake: Ogaki Meeting 2012に個人で出展してきました。

Make: Ogaki Meetingってなんぞ

目にみえる、触れる作品をつくって発表する場なのです。電気回路を利用した作品が多いのだけど、編み物や木工などもあり、自分でつくって楽しんでいるものならみんなで持ち寄って楽しもうという感覚です。個人・団体も関係なければ、仕事も趣味も区別なしといった様相。Makeの動き・取り組みなどの詳細は、オライリー・ジャパンのサイトを参照ください。

こういった集まりはいつも東京開催が主だったのですが、大垣市に拠点を置くIAMAS/情報科学芸術大学院大学を中心に大垣市・岐阜県が力をあわせて、地方開催を行なってくれています。今回は2010年の初開催に続いて2回目。

オシロスコープと光るネクタイを持ち込んで

自分でつくって自慢をしてきました。写真を残していなかったので、Twitterに載せてくれていたものを拝借しています。感謝。

オシロスコープについて。Arduinoで読み取った電圧を、Webブラウザに表示するというだけのもの。電圧の発生源に距離と振動の各センサをつかったので、自分の動きが違う形で見えるってところが特にお子様連れにウケまして。仕組みはわからないけど動くから面白い、みたいな状態になってくれたのはうれしい限り。

ぼくよりもわかる方も当然いらっしゃるわけですが、そういう方ほどぼくの気づいてない指摘・知恵なんかを渡してくれるのです。こうなりたいと思わせる方ばかり。

このオシロスコープ、バックエンドはNode.jsが支えています。Node.js meets Arduinoな展示を行なっている方がちらほらいて、この方向は間違ってなかったなと安心しました。イベント駆動プログラミングとハードウェアは相性が良いと言い続けていてよかったです。

もうひとつ。LEDがチカチカ光るネクタイ。意外にも女性(と女性にみえる男性)から圧倒的支持(感覚的に)をいただきました。「その光っているネクタイかわいいですね!」とか声をかけてくれたりして、"ついに!やってきた!おれの人生の!好景気!"なんて、モテキだったら気分上々ばりにうかれたりもしました。

このネクタイの元ネタはクラフトワークのステージ衣装なのですが、これを一発でわかった方があしやまひろこさん。さすがはLEDエンベデッドなウェディングドレスを展示・着用してらっしゃったかた。このドレスがすごかった。設計はくとのさんなのですが、見た目はもちろん、複数段のヒューズなど安全対策の回路の作り込みも素晴らしい作品です。いろいろ事情があったとのことですが、ぼくら趣味で遊んでいる者が手を抜きがちな地味な部分、表に出ない部分まで作っているのは見習わなければなりません。

反省点

もう少しディスプレイに力を入れるべき。展示物についてとか、動かし方とか、紙などに出力した上で展示しておけばよかったです。ひとりのブースなので、ぼくがいなくなると誰も説明しなくなるということを考えていなかったです。紙なら電源を必要としないので、いろいろな心配をしなくてよいし。

もうひとつ。やはり見せ方なのですが、どうしてもこじんまりしてしまうので、スペースの使い方をうまくかんがえないといけないです。結局は、つくるのは楽しいが、そこで終わりじゃダメってこと。どうやってうまく人に伝えるかを考えないといけませんと学びました。

12月には東京でまた開催されるそう。反省を生かして、もっとおもしろがってもらえるようがんばります。