[[FrontPage]]

* 12/8 Arduino と Android の接続 ... ADK [#ffa552f2]
** ADK の概要 [#x88417b5]
- ADK ...Accessory Development Kit
- ADK はAndroid のアクセサリを作成するための、参考的な実装です。これは、ハードウェア会社や電子工作を趣味としている人々のスタートポイントとして利用できます。各ADKのリリースは、ソースコードとハードウェアの仕様が一緒に供給されます。これにより、あなた自身のアクセサリを簡単に作ることができます。新しい、これと異なるADKのハードウェアを作ることを推奨します。 &br;
Android の機能を強化するため、オーディオのドッキングステーションや、運動機器や、個人的な医療検査機器や、電子百葉箱や、その他の外部ハードウェア機器などがAndroid アクセサリとして使えます。&br;
アクセサリは、Android Open Accessory (AOA)プロトコルを使って、USB ケーブルやBluetooth 接続を通じて、Android デバイスと通信します。もし、USB を使うアクセサリを作成する場合、あなたのアクセサリハードウェアとAndroid が通信するために、どのようにAOAプロトコルを実装するか、理解する必要があります。より詳しくは、 [[Android Open Accessory protocol:http://source.android.com/tech/accessories/]] をみてください。
- 参考ページ/文献
-- http://itpro.nikkeibp.co.jp/article/NEWS/20110511/360206/
-- http://developer.android.com/tools/adk/index.html
--  Smartphone World Volume. 3「Android × Arduino 即効プログラミング」CQ出版社
** ADK 開発環境の構築 [#s8ca8b11]
- http://developer.android.com/tools/adk/adk.html
*** 1. Arduino (1.0 以上)の開発環境をインストール [#w1805f29]
- http://arduino.cc/en/Main/Software
*** 2. ADK パッケージのダウンロード [#nbaea27a]
- https://dl-ssl.google.com/android/adk/adk_release_20120606.zip
*** 3.  Arduino の例題プログラムやライブラリやハードウェアの仕様が入ったパッケージをダウンロードして、解凍 [#l997c43f]
- app, arduino_libs, hardware ディレクトリがある。
-- https://dl-ssl.google.com/android/adk/adk_release_20120606.zip
-- http://developer.android.com/tools/adk/adk.html
*** 4. Arduino開発環境にADKライブラリのインストール [#g5f335b0]
- arduino_libs/AndroidAccessory と arduino_libs/USB_Host_Shield directories を <arduino_installation_root>/libraries/にディレクトリごと、すべてコピー。
*** 5. Arduino のスケッチ(firmware)を作成し、Arduinoに書き込み [#u8adfbb2]
- 以下、ADKの firmware の簡単なスケッチの例(http://y-anz-m.blogspot.jp/2011/12/androidhello-adk.html より)
 #include <Wire.h>  
   
 #include <Max3421e.h>  
 #include <Usb.h>  
 #include <AndroidAccessory.h>  
   
 #define  LED       24  
 #define  LED       8
  
 AndroidAccessory acc("uPhyca",  
       "HelloADK",  
       "DemoKit Arduino Board",  
       "1.0",  
       "http://www.android.com",  
       "0000000012345678");  
  
 void setup();  
 void loop();  
  
 void init_leds()  
 {  
    // 24 の DIGITAL を LED 用の出力にする  
    // 8 の DIGITAL を LED 用の出力にする  
    pinMode(LED, OUTPUT);  
 }  
   
 void setup()  
 {  
     Serial.begin(115200);  
     Serial.print("\r\nStart");  
   
     init_leds();  
   
     acc.powerOn();  
 }  
   
 void loop()  
 {  
     byte msg[2];  
     byte led;  
   
     if (acc.isConnected()) {  
         int len = acc.read(msg, sizeof(msg), 1);  
   
         if (len > 0) {  
             if (msg[0] == 0x1) {  
                 if(msg[1] == 0x1) {  
                     digitalWrite(LED, HIGH);  
                     msg[0] = 0x1;  
                     msg[1] = 0x1;  
                     acc.write(msg, 2);  
                 }  
                 else {  
                     digitalWrite(LED, LOW);  
                     msg[0] = 0x1;  
                     msg[1] = 0x2;  
                     acc.write(msg, 2);  
                 }  
             }  
         }  
     }   
     else {  
         digitalWrite(LED, LOW);  
     }  
   
     delay(10);  
 }  

*** 6.  Android 側開発環境構築 [#k817d114]
-- Android SDK マネージャで、Android 4.0 の Google APIs をインストール
*** 7. Android 側アプリ開発 [#m657b89d]
*** 8. Android 側アプリをAndroid 端末の SDカードに保存し、アプリをインストール [#ode9cf9c]
-- アストロファイルマネージャなどを利用
*** 9. Android 端末と Arduino をUSBケーブルで接続。 [#r8905741]
*** 10. 実行。 [#q2ec023b]
** ADK利用の流れ [#n3745f4b]
- 1. BroadcastReceiver を利用して、ACTION_USB_PERMISSION を判定する。
- 2. UsbAccessoryのインスタンスを取得する。
- 3. UsbAccessoryのインスタンスよりParcelFileDescriptorを取得する。
- 4. ParcelFileDescriptorよりFileDescriptorを取得し、FileInputStreamとFileOutputStreamを取得する
- 5. 各Streamを利用し、入出力の処理を行う。
** 簡単なADK応用プログラムの開発例 [#j9744a01]
- http://y-anz-m.blogspot.jp/2011/12/androidhello-adk.html
** Arduino の光センサの状態をAndroid に表示、Android でArduino のLEDを点滅 [#gd08bddf]
** デバッグ [#p0b08f6e]
- LogcatViewer [#z89dd6d3]
-- http://d.hatena.ne.jp/bs-android/20100519/1274206549
** Android で、LED 点灯自動制御 [#t0389563]
** 総合演習 [#ydd1ed5b]
- 隣どおし、または前後で2-4人のグループを作って、今までのプログラムを参考にしたり、改造したりして、何か面白いものを作ってください。
----
#counter


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS