2011年12月28日

ADKやBTに対応したMemoryMapLibリリースしました

以前本ブログでご紹介いたしましたArduino用の機器間通信プロトコルモジュール MemoryMapLibを バージョンアップさせ、Android Accessory(ADK)で使用できるようにしてみました。

以前の記事はこちら。
http://projectc3.seesaa.net/article/237969593.html
プロトコルの詳細説明は上記URL内記事内にpdfへのリンクを貼りつけています。

MemoryMapLibは、夜子ママ氏作のAndroid用ライブラリ AndyLibと通信できるライブラリです。MemoryMapプロトコルに対応 している機器と通信できます。
AndyLibでは通信路としてBluetooth以外に、Android AccessoryやMicrobridgeなど複数の経路を抽象化、上位アプリ側に 公開するレイヤとして機能してくれます。
対するArduino側のMemoryMapLibも、各種インターフェースに対応する作りにしました。
この2つのモジュール間のやりとりは中間経路をいろいろ選択できるといえると思います。

★今現在、AndyLibについては、日本Androidの会・神戸支部のリポジトリにて公開されています。

さて本記事では、MemoryMapLibのAndroid Accessoryで使用する場合と、UART(Bluetooth含む) で使用する場合のコードの対比をしていきたいと思います。

ライブラリに同梱しましたサンプルスケッチは、ADKとUARTシリアル両方に対応しています。

サンプルスケッチの中に
#if 1
#define ADK_ENABLE
#else
#define SERIAL_ENABLE
#endif
という部分がありますので、ADK_ENABLEまたは、SERIAL_ENABLEのいずれかが有効になるようにしていただければOKです。

プロトコル等は上述のMemoryMapLibの説明から変化ありませんが、ADK等のインターフェースに対応できるように、一部改変しました。 インターフェースの設定は、 MemoryMapLib::setStreamInterface() で行います。

ここに、Android Accessoryまたは、SerialのStreamのインスタンスを設定します。
上記初期設定の後、通信処理についてはインターフェースに関わらず共通です。

●Android Accessory(ADK)選択時の初期化部例
MemoryMap mMemoryMap;
AndroidAccessory mAndroidAccessory("IshiiWorks",
    "AndyTank","AndyTank","1.0","http://www.yishii.jp/",
    "0000000012345678"); // ★作成するデバイスに合わせて変更
AndroidAccessoryStream mAndroidAccessoryStream;

setup(void){
    mAndroidAccessoryStream.setInterface(&mAndroidAccessory);
    mMemoryMap.setStreamInterface(&mAndroidAccessoryStream);
}
void loop()
{
    mMemoryMap.poll();
}

●UART(Bluetooth)選択時の初期化部
setup(void){
    Serial.begin(9600);  // 外部機器とは9600bpsで通信
    Serial.flush();
    mSerialStream.setInterface(&Serial);
    mMemoryMap.setStreamInterface(&mSerialStream);
}
void loop()
{
    mMemoryMap.poll();
}

以上です。
新たにインターフェースを追加する場合には、それ用のCommunicationStreamクラスを定義すればOKです。
とりあえず、Microbridge版も作ろうかなと思います。

ソースは以下のgithubにあげてあります。
https://github.com/yishii/Arduino_MemoryMapLib

電脳Arduinoでちょっと未来を作る (マイコンと電子工作)
藤本 直明 神崎 康宏 森 直久 光永 法明 k.kinukawa hatayan 山田 斉 ざがん あみのさん
CQ出版
売り上げランキング: 33770
posted by いしいっち at 07:00| Comment(0) | TrackBack(0) | Android開発関連 | このブログの読者になる | 更新情報をチェックする

2011年12月17日

Nexus SをAndroid 4.0(ICS)にしてみました

★以下の手順で機器が壊れても責任取れません。もし実施する場合は各自の責任でお願いします。

Galaxy Nexusを買っちゃっていたので、Nexus SをアップデートしてICSにしようという気持ちは強くはなくなっていたんですが、折角なのでやってみました。

OTAで降ってきてるみたいですが、手元のはまだでしたので、ネットで検索したサイトでOTAファイルをダウンロードして適用しました。


以下のサイトで紹介されているURL「http://android.clients.google.com/packages/ota/google_crespo/VQ8PQk_V.zip」からダウンロードして、zipファイルをupdate.zipにリネーム

http://www.droidmatters.com/news/how-to-manually-update-your-gsm-nexus-s-with-android-4-0-3-ice-cream-sandwich/

Nexus SをVOL UP押しながらブートし、RECOVERY選択後、VOLUP+POWER押下、SDカードのupdateを適用すればOKでした。

適用後、4.0.3になりました。ICSなら既報のとおりで当然出来る内容も書いちゃってますが気づいたところまで少し。
・USB マスストレージできました
・Galaxy Nexusとのビームできました
・WiFi Directの選択肢はありませんでした
・ブートアニメがGalaxy Nexusと同じようなタイプになりました
・単体スクリーンショット撮れました
・カメラ機能では、パノラマ撮影できました!これはうれしい。
・(当然) ADKは動きました

Nexus Sは結構値段も下がってきていることを考えると、現時点で最も安価にICSを使用できる選択肢かもしれませんね。



posted by いしいっち at 19:38| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2011年12月11日

Galaxy Nexus買っちゃいました

遅ればせながら?、Galaxy Nexusを買ってみました。
当初からどなたかすぐに試されていたようで、USBホストは使えないみたい、という話で一瞬orzって感じになりましたが、

juggly.cn : CPUクロックを1.4GHzに設定可能なGalaxy Nexus用カスタムカーネルが公開
http://juggly.cn/archives/47742.html

USBホストが使えるカスタムROMも出ているようです。Honeycomb以降で対応されたUSB Host APIに対応しているかどうか、わかってませんが。可能なら焼いてみようかな。

さて、過去4台ほどAndroid端末を購入してきましたが、一台たりともビデオ出力に対応した端末を買ったことはなかったので、個人的にはビデオ出力を真っ先に試したくて、ビデオ(HDMI)出力用のドコモ純正ケーブル SC01 を買いました。Galaxy S2用として販売されていましたが、特に問題なく使用出来ました。音も出ます。
P1100490.JPG

Bluetooth HIDキーボードとマウスにも対応しているとのことでしたので、iMacのキーボード、マウスを接続しました。さながらPCみたいな感じになりました(言い過ぎ?)

次にUSBホスト対応ですが、まだできていないようですが、USBホストケーブルを接続すると、VBUSは出てました。ハード的には、確かにホスト対応なのだろうなーと思います。

次に、画面ですが、1280×720ということで、試しにiPhone4(960×640)、Nexus S(800×480)を並べてみました。
とりあえずPC向けYahoo Japanのトップページを表示しています。
P1100494.JPG

Nexus Sではドットは視認可能ですが、Galaxy NexusやiPhone4では、肉眼では確認できないほど高精細でした。

ではマクロ撮影してみます。

Galaxy Nexus(撮影の問題でモアレが出てしまいました)
P1100497.JPG

Nexus S(撮影の問題でモアレが出てしまいました)
P1100496.JPG

iPhone4
P1100495.JPG

さらに顕微鏡でドットのパターンを見てみます。すべて同一倍率にて撮影しています。

iPhone4
P1100493.JPG

Galaxy S
P1100492.JPG

Galaxy Nexus
P1100491.JPG

iPhone4と、Galaxy SやGalaxy Nexusとでは液晶の配列が異なるため、単純に画素数比較だけをしてもわからない解像力の違いがあることがわかります。兎に角、Galaxy NexusとiPhone4は、両方共相当に美しい表示パネルを持ってる事は確かだと思います。



サムスン 純正 ギャラクシー S2用 HDTV Adapter
Samsung
売り上げランキング: 58230


Apple Wireless Keyboard (JIS) MC184J/A
アップル (2009-10-31)
売り上げランキング: 5877


Apple Magic Mouse MB829J/A
Apple Magic Mouse MB829J/A
posted with amazlet at 11.12.11
アップル (2009-10-31)
売り上げランキング: 384

posted by いしいっち at 19:27| Comment(0) | TrackBack(0) | Android利用関係 | このブログの読者になる | 更新情報をチェックする