小ネタ 2009-018

iPhone 3GS以前のiPhone(2G,3G)/iPod touchに接続する電子コンパスを作ってみる

先週、2009年6月26日にiPhone 3GSが発売された。3GSは色々と改良されており、プロセッサの処理速度が速くなったり、電子コンパスが追加されたりしている。従来機種である初代iPhone(2G)やiPhone 3Gに接続する電子コンパスというのを思いついたので作ってみる。 (2009-06-28)



1. ハードウェア

 以前に、初代iPhone(2G)/iPod touchに接続するGPSを作製した。このときのように直接UART接続できる電子コンパスがあればよいのだが、そういう都合良い品物は無かったので、一旦ワンチップマイコンに電子コンパスを接続してマイコンのUARTをiPhoneに接続する。
 電子コンパスのICは、以前にNintendoDS用のDS方位計という電子工作でHM55Bを使ったのだが、現物が行方不明になっており、仕方なくSparkfunの電子コンパスキットでHoneywellのHMC6352を使ったものを取り寄せた。
 本当は、AKM社の電子コンパスIC AK8973を使いたいのだが、入手できなかった。他から引き剥がすのも難しい。

 こういった電子工作では、moyashi氏が昨年既にAVRマイコンをiPhoneに接続して温度計を作製するのを試している。真似して自分もAVRマイコンを使ってみることにする。


 


(後日加筆 2009-07-26)
 マイコン書き込み時に電源逆接して基板を壊したかもしれなかったのだが、とりあえず壊れてなかったようだ。
 配線を直して、動作確認できた。
 
 動作確認は、Terminalから、
 cat /dev/tty.iap
 と、コマンド入力して、catというUNIXの汎用のコマンドを使ってiPhoneのシリアルポートの通信内容を表示させた。
 3桁の10進数で、電子コンパスで計測した方位の角度(北を0度とした時計回りの角度)を出力している。

 AVRマイコンATMEGA168に書き込んだ電子コンパス用プログラムのバイナリとソースも一応公開しておく。

 [ iphone_hmc6352_compass_01.zip (download) 15.3KB ]





2. ソフトウェア

 iPhone 3Gのファームウェア3.0上で自作ソフトを動作させてみたいのだが、iPhone 2G(ファームウェア1.x)時代からしばらくサボっていたせいで、色々と非公式環境の入れ方とか使い方が変わってしまっている。いろいろ再度勉強しながら試してみる。(2009-07-12)

 とりあえず、以前のjermというソフトを動かそうとしたのだが、以前のファームウェア1.x用のバイナリは署名がないので動かせないようになってしまっている。ファームウェア2.0の時代に署名が必要になったようだ。iPhone上で署名をするためのldidというソフトが出ているので、それを使って、ldid -S jermというコマンド入力で署名を入れてみた。署名できたようで、起動が掛かるようになったのだが、起動中にライブラリ関係のエラーを表示して停止してしまう。結局、新しい開発環境でビルドしなおさないと駄目らしい。

 iPhone上で動作するセルフ開発環境としてgccが出ている。これを使ってiPhone上でビルドしてみようと思ったのだが、iPhoneファームウェア3.0ではgccをインストールすることができなかった。まだlibgccが3.0に対応できていないようだ。ファームウェア2.0だと使えるようだが、ファームウェアをアップグレードしてしまったので、ファームウェア2.0環境の実機がなくなってしまった。初代iPod touchがファームウェア1.1のままだったので、これを2.0にアップグレード+jailbreakしてgcc開発環境を整えた。


余談だが、iPhone+コンパスで検索したら、「Arduinoでコンパス・ベルトを自作、iPhoneにも対応」という今年の2月の記事が出てきた。
 元のオリジナル記事はこちらのようだ。 方角センシングベルトというのが面白そうだ。



(後日加筆2009-09-09)
 ファームウェア3.0からは公式にDockコネクタの利用が解禁されているそうだ。
 非公式SDKを自分が使っていた理由は、主に、Dockコネクタが使えなかったためである。解禁されているなら、公式SDKに移行しても良さそうだ。




Dockコネクタに接続するiPod touch用カメラを作ってみようか検討中。(2009-09-09)