« [NetWalker]バッテリー残量をほんのりマシに表示する battwalker.rb | Main | [NetWalker]窓使いの憂鬱をNetWalkerで動かす »

2009.11.02

[iPhone][Jailbreak]iPhone用のmicroSD Text Readerを作ってみた

pomeraの存在に触発されて、iPhoneでmicroSDが読めるようにならないかなと前から考えてました。
最近はライブラリの充実と大容量化で、マイコンでもFATのSD Card(microSD)が簡単に扱えるようになっているからです。

ということで、ArduinoでmicroSD Readerを作ってみることに。
面倒なことは考えたくないので、テキストファイルオンリー、読み出しオンリー、ルートディレクトリオンリーで。

今年になって入手可能になったAtmel AVR ATmega328PにArduinoのブートローダを焼いて、さらにシリアルで送ったコマンドに応答する適当に書いたSketchを転送。FATのSD Cardのアクセス関係の関数についてはLimorたんのWave Shield向けに用意された「AF_Wave」を使用しました。
ATmega328Pは、3.3V駆動時はスペック上16MHz駆動ができないので、8MHzで動かしています。
Arduino Pro Mini 328 8MHz用のブートローダを焼いているのだけど、8MHzで動かすと、シリアルのスピードがコード中の記述の半分になってしまう。補正の方法はあるのかな?
現状はSketchで倍速の19200bpsで初期化して、iPhone側では9600bpsでつないでしのいでいます。

iPhone側には、読み取り用のアプリを用意してみました。
こんなお手軽環境で、iPhoneでもmicroSD上のテキストファイルを読めましたとさ。

Microsdreader01

pomeraは持っていないので、ドコモバIIとの連携をデモしてみました。

製作においては、SatE-Oさんの「Arduino - ArduinoでSDカード」を参考にしました。

とりあえず9600bpsでの通信なので、テキストファイル以外、例えばデジカメの画像の転送なんかには使えないですが、それなりに使える局面はありそうですね。

|

« [NetWalker]バッテリー残量をほんのりマシに表示する battwalker.rb | Main | [NetWalker]窓使いの憂鬱をNetWalkerで動かす »

Comments

シリアルポートって、まだJailbreakしないと使えないのかな?

Posted by: kako | 2009.11.02 at 08:25 PM

毎度!
そうですね。「Made for iPod」即ちオフィシャルの周辺機器をリリースする正しい筋道もありますが、詳細はNDAに阻まれて分かりません。
しかし、シリアルポートはリモコンにも使われているので、普通には使わせてくれないんじゃないかな、というのが僕の予想です。

Posted by: moyashi | 2009.11.02 at 08:47 PM

ここまで出来てしまうんですね!
藪蛇なのですが、どのような環境でiPhone側のソフトは書かれているんですが?参考にさせてください。
(当方、ターミナルからのシリアル読み書きはできたのですが、SDKを使って書いたアプリでシリアルが扱えないもので・・・)

Posted by: tesshy | 2009.11.10 at 04:18 PM

シリアルポートのアクセスにはAMSerialPortというクラスを使っています。
注意すべきは、sandbox内ではシリアルポートにアクセスできないということです。
ルートディレクトリにある/Applicationsにインストールしないとシリアルポートにアクセスできないようです。
つまり、Jailbreakが必要です。
Build&Goでのデバッグもできないということになります。
ついては、エミュレータでテストができる環境を作っておく必要があるかと思います。

えーと、あとはAMSerialPortはiPhoneでは非公開のIOKitを使っているので、ヘッダがありません。Mac OS X向けのIOKitからヘッダをコピーするなりの手当が必要です。また、実機向けビルド環境にはIOKitのFrameworkそのものが存在しないので、実機からコピーしてくる必要があります。
バリバリJailbreak環境に依存することになります。

Posted by: moyashi | 2009.11.11 at 11:59 PM

The comments to this entry are closed.

« [NetWalker]バッテリー残量をほんのりマシに表示する battwalker.rb | Main | [NetWalker]窓使いの憂鬱をNetWalkerで動かす »