May 14, 2009
Arduinoオープンハードウエアセミナーというイベントに参加した。
chip1stopさんという、電子部品の通販をされている商社さんの主催で、司会はCerevoの和連和尚で、Cerevo社員の@booniesさんによるプレゼンテーションでした。
Arduinoというのは「あるでゅいーの」などと呼ぶ、マイコンボードです。イタリア製だそうです。
ハードウエアの設計自体がオープンソースで公開されているので、誰でもクローンを作ることができるそうです。
マイコンボードというのは、キーボードや液晶がついてないパソコンみたいなものです。
中身というか、裸の基板なので、なんだそれ?と思うでしょうが、これを箱に入れれば、携帯に見えたりパソコンに見えたり。
WindowsやMacのような高機能なOSは乗っておらず、専用のプログラムだけをインストールして動かします。ただプログラムが動くだけでは何もできないので、I/Oという、センサーなどの入力を読み込む機能(Input)と、スイッチを入れて電気を流す機能(Output)がついているので、プログラムで、I/Oをコントロールして、その先に繋げたモーターを回してみたり、いろんなデバイスと通信したり、センサーの入力を読んでみたりします。
通常、プログラムの処理の流れは、何かの入力を読み込んで、入力に対する処理を行い、結果を出力する流れになります。
例えばWebサーバーで動的にページを制御する場合だったら、リクエストを受けたURLやHTTPヘッダに付加された文字列を元に、出力をを制御したりしますが、それと全く同じノリで、センサーの入力内容を元に、あっちやこっちのスイッチをOnにしてモーターを回してみたりします。
これを応用したものが携帯電話やパソコンにおいては、キーボードは入力方法の一つで、液晶は出力先にあたるわけですね。キーボードに文字が入力されたら、液晶に文字を出力するというプログラムの集合体が携帯電話やパソコンの実態です。
Arduinoの魅力は、開発環境の高機能っぷりです。
通常、マイコンのプログラムはアセンブリ言語やまんまのC言語で開発しますが、Aruduinoは、Processingから派生したWritingというプロジェクトで作られたC言語ライクな言語を、しかも専用のIDEを使ってプログラミングすることができます。プログラムは、iPhoneと同じようにUSB経由で送信することができます。
通常、開発者は通常、ブートローダーなど、パソコンで言うBIOSに近いことを意識しなくてはいけないわけですが、Arduinoはその辺を気にすることなく、目的とするプログラムの実行だけに専念することができます。
また周辺機器が充実しており、イーサネットに繋ぐことができるボードがあり、LANに繋ぐことができます。DHCPクライアントやHTTPのライブラリが最初から用意されているのでネットに繋ぐのがとても簡単にできます。
イーサネットのボードが上に乗って、かつ、リモコン制御用のLEDが出力ポートに繋がっています
なんとtwitter apiにアクセスするサンプルプログラムがついています。
しかも、UTF-8の文字を扱うことができて、日本語でメッセージを送ることもできます。PCや携帯では当たり前じゃないかという日本語ですが、何もライブラリが用意されてないマイコンボードに日本語が使えることはないし、UTF-8がなければ海外製のマイコンボードで日本語が使えることはなかったでしょう。
今まで、秋葉原にある秋月電子などのキットを見ていて、この辺のネット的な機能と組み込み機器系って繋がりが意識されてないのねと思っていたので、twitter apiのライブラリがあるところはかなりびっくりしました。
秋月電子でも売ってるキットで一番ネットに近いもので、入力があったら、メールを送るキットというのがありました。実は、以前、このボードを買おうか悩んでたら秋月電子の営業時間が終わってしまって(18:00と早い)買えなくて悲しい思いをしたのですが、買えなくて良かったです。
Arduino Duemilanoveというベース機能を提供するマイコンボードは、なんとたったの3,200円で買うことができます。
イタリアの国の地図がプリント基板に印刷されています。こういうのはオシャレですね。
イーサネットに繋ぐには、もう一つArduino ETH ShieldというLANのカードを購入して、亀の子のように繋げてあげる必要がありますが、トータルでも7000円程度で購入可能です。
他にもBluetoothのボードなどがあって、じっくり遊ぶならこっちの方が面白いかもしれません。BluetoothならiPhoneとも通信できますよね。
参考:Arduino製品一覧
今回のセミナーでは、デモとして、2chの実況板の情報から動きのあるチャンネルを検出して、地デジチューナーのチャンネルを切り替えるというデモを実演していただきました。
Webサーバでチャンネル情報を抽出し、チャンネル番号だけを、ArduinoがLAN経由で読み込み、チャンネル情報を、Arduinoに接続された赤外線LEDがリモコンの変わりに動作して、チャンネルを切り替えるというものでした。
今回は、地デジチューナーのリモコンの動作パターンをハッキングして、チャンネル切り替えのパターンをプログラムしてやっていました。
このハッキング作業自体は、オシロスコープという信号を解析する測定装置がないとできないので、誰でもすぐできるというものではありませんが、誰かが学習型リモコンのようなライブラリを公開してもらえば、チャンネル信号をキャプチャして、簡単に自動切り替えリモコンを作ることは可能です。
ましてWebサーバから情報を拾ってこれるのであれば、例えば、携帯電話から家の中のエアコンやテレビをコントロールすることも可能ですし、このデバイス自体を持ち歩いて、何かをすることが可能です。
今、Arduinoなどのマイコンボードが面白いのは、情報の出力先にtwitterが存在することだと思います。twitterは、シンプルに今の情報を、沢山の人と共有するサービスなので、面白いものや便利なものを作ることで、その成果を共有することが簡単です。
モバツイでも、写ツやイマココと言う携帯電話で使える機能を使ってtwitterに情報を送るという流れを作っていますが、それと同じようなことがArduinoを使って実現できます。
しかも、センサーは好きなセンサーが選べますから、携帯電話では絶対できないようなことをできるわけですね。
mixiの開発の方で、コーヒーができたら、その情報をIRCにポストするような話がありましたが、Arduinoを使えば、センサーの選定と組み込みさえ頑張れば、ソフトウエアはサンプルプログラムの組み合わせで作れます。
センサーについては、面白いことができそうなセンサーとして、光センサー(CDSセル)、焦電型赤外線センサー(人感センサー)、温度センサー、加速度センサー、電子コンパスなどを挙げておられました。他にも音のセンサーとかもベーシックですよね。
後はあなたのアイディア次第!
今回のお話を聞いていて、Webの環境で良いなぁと思ったのは、イマドキのWeb APIがRESTであることですね。
JavaScriptやPHPのようなリッチな言語だと、正直言ってやりとりがRESTであろうがあるまいが大した問題ではないわけです。ステータスコードを調べるのと、レスポンス文字列を正規表現で調べるのに、大した差はありません。どっちかというと、「かくあるべしという」に従ってるというのが現実的なところだと思います。
ところが組み込み機器となると、ちょっと話は変わってきます。
例えばapi実行の成功、失敗の判断で、レスポンス文字列をせっせと調べていくのは結構面倒で、HTTPのステータスコードで済むならそれに超したことありません。
今回のデモでも、実況のチャンネル情報をWebサーバから取得するのに、シンプルなHTTP/1.0を使って通信することで、HTTPレスポンスの最後の一文字がチャンネルになるという仕組みになっていました。組み込みレベルのものであれば、シンプルなアーキテクチャになっているに超したことはありません。
そういう意味で、高度な機能やソーシャルのつながりに影響を与えられるWebサービスのAPIがRESTに従っているというのは、とても素晴らしいことなのです。
このセミナーの告知を見たときに、自分が大学の頃にこういうボードを使って研究していたなぁということを思い出しました。
あの頃は、V25というCPUにturbo Cで書いたプログラムを転送していたのですが、既に研究室の資産でブートローダーが既に用意されていて、Arduinoと同じようにI/O制御だけを書けば動くものだったので、緩い研究だったと言うことを思い出した次第です。
昔から変わらず、誰かの成果で楽をする側の人でした。
当時と今が違うのは、こういうマイコンボードは、まず電源を用意するところから結構面倒だったりします。最近だと、秋月電子で売っているAKI-80やAKI-H8などというマイコンボードがお手軽に手に入ったりしますが、まずは電気をどう入れるか?というところから始めるわけです。こういうモノを作る人は、何に繋がるでもないACアダプタを沢山持っていたりします。また、接続するのにRS-232Cを使ってターミナルでアクセスしたりするわけです。
Arduinoは、USBで繋ぐだけでPCから給電してくれてプログラムも転送できるというシンプルさ。またオープンソースなだけに、ネット上に情報が沢山あります。
こういうボードを使って、日常的な何かを動かすものを作ることを「フィジカルコンピューティング」と呼ぶそうですが、こういうことが簡単にできるようになったのは、「オープンソース」、「ネットワーク」、「周辺環境の高機能化」から恩恵を受けているんだろうなと思うところです。
余談ですが、主催のchip1stopさんが、横浜にある図研というCADの会社からスタートした会社だということを知って、そういえば就職活動で図研を受けていたことも思い出しました。もし図研に入っていたら、道が変わっていただろうなぁ。
オライリージャパン
売り上げランキング: 14496
情報の可視化入門
目からウロコが。。。
日本人の本より読みやすい
既存のマッシュアップAPIを使うのとは違ったWeb情報の楽しみ方
オライリージャパン
売り上げランキング: 14641
技術評論社
売り上げランキング: 10156
これで、あなたも三四郎!!
入門書として最適
追記:
トイレの排水を監視して、トイレが流されるとtwitterにpostするbotというのがあるそうです。