1Click飲みRomoCartTempescope色色[:iroiro]Other Projects

2015年1月4日日曜日

ハード開発スピードテスト:ArduinoとPhidgetsを比較してみた三本勝負

こんにちは。河本です。
ハードウェアのプロトタイピングというとArduinoが有名ですが、最近Phidgetsという開発環境を入手しました。
Phidgetsの標準I/Oボード
「プロト開発なんてArduinoで充分じゃん!」と思っていたのですが、公式ページでは「とにかく早く簡単に」開発が行えることに自信を持っている様子です。
試行錯誤を高速に行うためにも、開発スピードは最重要。もしArduinoより早く開発できるのなら確かに魅力的です。

そこで今回は、ArduinoとPhidgetsの両方で電子工作の定番課題3種を実装して、実装の早さ、簡単さ、その他特性を比較してみました。



そもそもPhidgetsってなに?

電子回路の知識がほぼ0でセンサ/アクチュエーターを使った開発ができるプラットフォームです。
↑みたいなI/Oボードにセンサ他を刺すと、PCからJava/C++等の高級言語で制御できます。
特徴としては:
簡単 →抵抗だの電圧/電流だの気にせずとも、モジュールを刺せば動きます。
早い →最初からPC上で高級言語で制御するので、ハードとPC/ネットを連携させるシステムがすぐ書けます。
高い →各パーツがモジュール化されているため、スイッチ一つとっても目が飛びでるブルジョア設定です。


比べてみた

以下の3つの定番課題をArduinoとPhidgetsの両方で実装してみました:
#1 Blink →ただのLチカ
#2 Servos →ロータリーエンコーダーでサーボの角度を制御できる回路
#3 Pedometer →加速度センサを使って簡単な歩数計を作る

やってみた:




#1 Blink

LEDを500ms周期でチカチカさせます。

■実装の説明

Arduinoのソース
Phidgetsのソース
説明は特に要らないですよね。

■実装時間

Arduino: 1分44秒
Phidgets: 1分11秒

圧勝というわけではありませんが、Phidgetsのほうが早く実装できました。

ArduinoではLEDのために抵抗が必要なぶん少し時間がかかりました。
ただPhidgetsは出力ピンがネジ止めが必要なため、予想以上に手間取りました。

ソフト面では特に大きな違いはないと思います。


■値段

Arduino: $24(Arduino Uno
Phidgets: $80(Phidgets Interface Kit 8/8/8)

Phidgets高ぇ。。。



#2 Servos

ユーザがロータリーエンコーダーを回すと、入力に応じてサーボの角度を変えます。

■実装の説明

Arduinoのソース
Phidgetsのソース
ロータリーエンコーダーの値をアナログ入力で受け取り、この値を角度に変換してサーボに送るだけです。

■実装時間

Arduino: 6分07秒
Phidgets: 3分20秒

Phidgetsは半分ぐらいの時間で実装できました。

Phidgetsでのハード製作は3箇所ケーブルを刺すだけ。
それに対してArduinoは一度サーボを動かそうとして失敗し(電流不足のため)、別電源を持ってきたりしてます。

ソフト面では、Phidgetsはイベントドリブンで書けるため、個人的には好みです。


■値段

Arduino: $37(Arduino Uno, Servo S03T, ロータリーエンコーダー)
Phidgets: $139(Phidgets Interface Kit 8/8/8, Servo Controller, Servo, Rotary Encoder)

スイッチやセンサが入ってくると、Phidgetsの値段が跳ね上がります。



#3 Pedometer

加速度センサで歩行を検知し、歩数に応じてLED配列を点灯させます。

■実装の説明

Arduinoのソース
Phidgetsのソース
歩行の検知のためには、非常に簡単なハイパスフィルタを作ります。加速度のパワー値(sqrt(x^2+y^2+z^2))の移動平均を計算し、パワー値から移動平均を引いたものをハイパス加速度として使い、これのゼロクロスを検知して歩数を数えます。

■実装時間

Arduino: 13分45秒
Phidgets: 10分15秒

歩数の検知まではPhidgetsが圧倒的に早かったのですが、LEDの配列を用意するところで手間取り、あまり差がない結果となりました。

LED配置を除くと、Phidgetsでは4分程度で歩数計が作れてしまいました。
Phidgetsでは加速度センサはUSBポートに刺すだけなのに対し、Arduinoはネットでピン配列を調べたり配線したりする作業に時間が取られたのが印象的です。

ソフト面では、歩行検知でPhidgetsの強みがフルに出ました

移動平均の計算のために(自作の)移動平均計算用クラスを使いまわしたり、
加速度データをグラフ描画ライブラリで画面上に表示することでテスト+デバッグが迅速に行えたため、プログラム開発が素早く行えました。
プログラミングの時間だけを見るとPhidgetsは圧勝です。(Phidgets:3分半 Arduino:6分半)

■値段

Arduino: $31(Arduino Uno, 3軸加速度センサ
Phidgets: $150(Phidgets Interface Kit 8/8/8PhidgetSpatial 3/3/3 Sensor)

やはりPhidgetsのコストは桁が違いますね。



結果

実装スピードだけで見ると、Phidgetsは3つのテスト全てで勝ちました。
とはいいつつ、色々な得手不得手が見えてきました。

■Phidgetsの長所


1. ハード製作が早い
最初に書いたように、Phidgetsではモジュールをプチプチ繋げるだけなので、その範囲で工作できるうちは非常に気軽に早く製作が行えます。

2. PCのリソースがフルに使える
#3のテストでは、僕が自作した便利クラス(移動平均、グラフ描画等)を使うことで、ハードの開発・テスト・デバッグがただのソフト開発と同じ簡便さで行えました。
また制御プログラムをPCの他のプログラムや、ネットワークと連携させることも非常に容易くなります。

3. 電子工作の知識が要らない
軽く遊んだ限りでは、電子工作を何も知らないソフトウェア開発者がハードのプロト開発を行うことが簡単にできそうです。これまで画面の世界に留まっていたプログラマーがリアルワールドをプログラミングできるようになるのは非常に価値の高いことだと思います。

■Phidgetsの弱点


1. スタンドアローンのガジェットが作れない
あくまでPCに接続して動かすものなので、持ち回りのよさが必要なガジェット(ウェアラブルとか)は少し厳しいです。

2. 「簡単さ」の詰めが甘い
個人的に致命的だと思いました。
Digital Outピン(↑の作例でLEDを刺してたところ)に配線するために何故ドライバーが必要なのでしょうか。本当に早いプロト開発を行うには、工具要らずで手でパチパチ接続できるようにしたいものです。

3. スケールしない
Arduinoの良さは、プロトの完成度を高める過程で製品に近づくという点だと思います。
Phidgetsはあくまでプロト開発しか出来ないため、いくらプロトを改良したところで製品には近づきません。
いつかちゃんと電子回路化しないといけないのだとすると、二度手間に感じる場合もあるかもしれません。

4. 高い
やはりArduinoと比べて試作が3~5倍ほど高くなります。
Phidgetsボードを何枚も持つわけにはいかないので、作っては壊しを繰り返すことになります。
この物作りが成り立つのは、結構ユースケースが限られそうです。


まとめ

以上を踏まえてPhidgetsを使ったらいい場面を考えてみたいと思います。

会議室とかに置いておく
 会議室にPhidgetsを1セットを置いておき、絵コンテを書いたりレゴでモックを作る感覚で、ワイワイ喋りながらガジェットを作る、といったユースケースには最適だと感じました。
 アイディアをすぐに遊べる状態にすることで、アイディア出しの活性化効果は抜群だと思います。
 「挿すだけで動く」というメリットが活かせて、「高い」というデメリットが気にならないユースケースです。
 (ただしその場合は、工具が必要な部分を直してもらいたいですが・・・)

開発スピードが命の場面
 ハッカソンで「とりあえず動くものをすぐに作らないといけない」、上司が無茶言うんで「それじゃうまく行かないよ」ってすぐに見せたい場合など、一分一秒の実装スピードが効く場面では非常に強いと思います。

俺は電子工作なんて絶対覚えないぜ、っていうプログラマー
 プログラマーがアイディアを形にして、チームのハードウェア開発者に伝えるための手段として使えると思います。

全部少し特殊な状況です。
「これから電子工作を始めたい」という人は、素直にArduinoを選んだほうが良いです。

色々難ありですが、場面によっては非常に力を発揮するプラットフォームだと思いました。
遊んでみたい、という人は以下の2つを買っておけばとりあえず大丈夫です:
Phidgets Interface Kit 8/8/8 →I/Oボード。ここにセンサを繋げる。
Phidgets Starter Kit #1 →Phidgets対応センサのセット。RFIDリーダー/ライタとか付いてて面白い。

こういったものを使って、少しでも沢山のプログラマーがハードの世界に飛び出てくれることを願います。

0 件のコメント:

コメントを投稿