テストとか

2008-07-07

iPod touchサイクルコンピュータを作る 02:12

サイクルコンピュータってすごく単純な仕組みだけど、iPod touch / iPhoneUI を作っていろいろセンサーをくっつけたらもっと楽しいんじゃないか?と思って、実験的に作ってみました。で、ちょうど id:akio0911 に ecogeek conference に誘われたので、エコといえば自転車だろということで一応動く形にして発表してきました。

f:id:kstn:20080706102909j:image

D

反射して見にくいですね。ごめんなさい。

仕組みはこんな感じです。

f:id:kstn:20080708015505p:image

一般的なサイクルコンピュータではホイール磁石が付いていて、それとリードスイッチという、磁石を近づけると on になるスイッチを組み合わせて、車輪の回転を検知することができます。これを使って距離や速度が出せるわけですが、今回はこれを Gainer のデジタル入力につないで、iPod touch 側のソフトウェアで計算を行っています。また、ついでに磁気センサもつなぐことで方位も取れるようにしています。

iPod touch には USB ホストの機能はないので普通の Gainer をそのままつなぐことはできないですが、シリアルポートが隠されているので、これと PSoC をつなぐことで Gainer として使うことができます。また、電源も iPod touch から供給するために Gainerファームウェアの電圧設定を 5V から 3.3V に変更しています。

iPod touch はハンドルに付けるボトルケージアタッチメントiPod touch 用のケースをくっつけてマウントしています。ただくっつけただけだと、衝撃でケースのカバーが外れたりするので、無理矢理輪ゴムで止めてます。このボトルケージアタッチメントを使う技はtimamuの部屋 PSPを自転車に取り付けるためのマウントを自作するを参考にさせていただきました。

f:id:kstn:20080706114429j:image

アプリケーションPython で書きました。Cydia というインストーラを使うと PythonPyObjC が簡単に入るので、これで UI が作れます。さらに PySerial と PyGainer を使って通信ができます。試行錯誤しながら書いたので汚いですが、参考までにソースも置いておきます。PyGainer もパフォーマンス向上などのために若干改造しています。

http://podmap.net/bike-computer/BikeComputer.zip

ひたすらデジタル入力を監視してリードスイッチの入力を取っているので、CPU には優しくないです。ちゃんと作るんだったら回転数はマイコンで検出してからアプリケーションに送って、UIObjective-C で作った方がいいんでしょうが、どうせ実験なので手っ取り早く作りたいということでこんな感じにしました。

まあこんな特殊なハードウェアが必要なものは App Store ではリリースできないでしょうが、そのうち iPhone 3G でも動いたりしたらネットワークGPS とカメラを組み合わせてすごく楽しくなりそうだなーとか妄想してます。遠い将来でもいいのでできたらいいですね。

ちなみに Palm にはすでに VeloAce というオープンソースサイクルコンピュータがあります。Palm は手放してしまったので試してないのですが、すごく高機能で実用的っぽいです。

http://www.engbedded.com/veloace/

ecogeek conference の様子はこちら。いろんな発表があって楽しかったです。Google ガジェットで家の照明とかエアコンが制御できるのとかすごすぎる。

http://d.hatena.ne.jp/akio0911/20080707/p1

http://d.hatena.ne.jp/shao1555/20080706/1215362778

トラックバック - http://d.hatena.ne.jp/kstn/20080707/1215450745
おとなり日記