2014年1月29日水曜日

我が家の家電コントロール機器

最近、ネットワーク経由で操作できる学習赤外線リモコンが熱い(自分の中で。。。)
arduinoベースで製品化されたり、
http://getirkit.com/

現役大学生のスタートアップなんかでも作ってる。
http://engineer.typemag.jp/article/pluto-neo

エアコンを職場からいじったりできるようになると、会社から帰る前に部屋のエアコンを入れておいて、帰るころには部屋が暖かい/涼しいみたいなことがみたいなことができる用になるし。

タイマー設定しておいて時間になったら電気つけるみたいなのも面白いと思う。

「タイマーつけとけばいいじゃん」ってのはそうなんだけど、残業や休日に出かけていて、帰りがいつもより遅かったりすると、その分の電気代が無駄になるし。


まあ、何より「赤外線リモコン作ってみてぇ!」って気持ちが止められないw。


今回の制作もマイコンはmbedを使って作ります。
mbedの赤外線リモコンのライブラリを公開してくれている方がいるので、そのライブラリを使わせてもらいます。また、ネットワーク機器を簡単に作れるように、標準でRPC(りもーとぷろしじゃーこーる)のライブラリが用意されてるのでそれも使います。

大分前にブレッドボード上で完成してテストも完了してたんだけど、
中々基板を作る気になれなくて(気力削がれる半田付けの量でもないのに)、何ヶ月もほったらかしになってました。
材料はほぼ揃えていたので、年も明けてキリの良い所で一気に作ってしまいました。


材料

  • mbed1768 (いつもの頼れる相棒)
  • 角型単列20ピンのソケット
  • トランジスタ 2SC1815 (もうディスコンしてますけど。。。)
  • 赤外線LED (型式不明)
  • mbed イーサネット接続キット
  • みんな大好きユニバーサル基板


以下は回路図。(ホントはLED保護用の抵抗とかノイズ除去用のコンデンサとかいれないとヤバイんだけど。。。まぁとりあえずはこれで。赤外線LEDもそんなに高いものではないので。。)
作成はfritzingを使いました。
fritzingいいですよ。ライブラリが豊富で、ブレッドボードビューで部品の配置と配線したら、プリント基板のデータまでオートルートで作ってくれるのですごく楽ちんです。こいつの運用が軌道に乗ったら、P板辺りで発注してつくろうと思います。

同じような機能を持ったWebサービスで123D Circuitがありますが、mbedが部品として標準で登録されてないので、回路図作るのに一苦労あります。あと、タブレットに対応しているせいか、何もないところでドラッグすると勝手に画面が拡大されるような動作をするので、自分はストレス溜まりまくりでした。

閑話休題

後はちょいちょいと半田付けするだけ。
出来たのはこんな感じ(下の方に飛び出ているワイヤはテスト用です。ベッ別に配線間違えたワケじゃないんだからね!!)

ハードウェアはこれで一応完成。

後は、プログラム

使用したライブラリ
RemoteIR(http://mbed.org/users/shintamainjp/code/RemoteIR/)
@shintamainjpさんが公開されてるライブラリです。

CookBookから
mbed RPC
(http://mbed.org/cookbook/Interfacing-Using-RPC)

mbedをjavascriptからコントロールするためのライブラリ
(http://mbed.org/cookbook/Interfacing-with-JavaScript)

RPCのデーモン的なプログラムをmbed上で走らせて、
Htmlに記述したjavascriptからmbedのプログラム中で登録した関数をRPCでコールしています。

今のプログラムは人に見せると恥ずかしいレベルなので、コメント入れたりして綺麗に書きなおしてから公開します。


5,6年前までこんなことしようと思えば、TCP/IPのライブラリから自分で作らなくてはならないなんてことがザラだったのに。既存のライブラリの組み合わせだけで、web+組込みみたいなアプリケーションのがすぐに出来るようになるなんていい時代になりました。

こんな感じのアプリケーションは、アイディアがまとまったらまたつくろうと思います。


参考にしたところ

http://mbed.org/users/yueee_yt/notebook/use_ethernet/