FrontPage
12/8 Arduino と Android の接続 ... ADK †
ADK の概要 †
- ADK ...Accessory Development Kit
- ADK はAndroid のアクセサリを作成するための、参考的な実装です。これは、ハードウェア会社や電子工作を趣味としている人々のスタートポイントとして利用できます。各ADKのリリースは、ソースコードとハードウェアの仕様が一緒に供給されます。これにより、あなた自身のアクセサリを簡単に作ることができます。新しい、これと異なるADKのハードウェアを作ることを推奨します。
Android の機能を強化するため、オーディオのドッキングステーションや、運動機器や、個人的な医療検査機器や、電子百葉箱や、その他の外部ハードウェア機器などがAndroid アクセサリとして使えます。
アクセサリは、Android Open Accessory (AOA)プロトコルを使って、USB ケーブルやBluetooth 接続を通じて、Android デバイスと通信します。もし、USB を使うアクセサリを作成する場合、あなたのアクセサリハードウェアとAndroid が通信するために、どのようにAOAプロトコルを実装するか、理解する必要があります。より詳しくは、 Android Open Accessory protocol をみてください。
- 参考ページ/文献
ADK 開発環境の構築 †
1. Arduino (1.0 以上)の開発環境をインストール †
2. ADK パッケージのダウンロード †
3. Arduino の例題プログラムやライブラリやハードウェアの仕様が入ったパッケージをダウンロードして、解凍 †
- app, arduino_libs, hardware ディレクトリがある。
4. Arduino開発環境にADKライブラリのインストール †
- arduino_libs/AndroidAccessory? と arduino_libs/USB_Host_Shield directories を <arduino_installation_root>/libraries/にディレクトリごと、すべてコピー。
5. Arduino のスケッチ(firmware)を作成し、Arduinoに書き込み †
- 以下、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
AndroidAccessory acc("uPhyca",
"HelloADK",
"DemoKit Arduino Board",
"1.0",
"http://www.android.com",
"0000000012345678");
void setup();
void loop();
void init_leds()
{
// 24 の 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 側開発環境構築 †
- Android SDK マネージャで、Android 4.0 の Google APIs をインストール
7. Android 側アプリ開発 †
8. Android 側アプリをAndroid 端末の SDカードに保存し、アプリをインストール †
9. Android 端末と Arduino をUSBケーブルで接続。 †
10. 実行。 †
ADK利用の流れ †
- 1. BroadcastReceiver? を利用して、ACTION_USB_PERMISSION を判定する。
- 2. UsbAccessory?のインスタンスを取得する。
- 3. UsbAccessory?のインスタンスよりParcelFileDescriptor?を取得する。
- 4. ParcelFileDescriptor?よりFileDescriptor?を取得し、FileInputStream?とFileOutputStream?を取得する
- 5. 各Streamを利用し、入出力の処理を行う。
簡単なADK応用プログラムの開発例 †
Arduino の光センサの状態をAndroid に表示、Android でArduino のLEDを点滅 †
デバッグ †
- LogcatViewer? [#z89dd6d3]
Android で、LED 点灯自動制御 †
総合演習 †
- 隣どおし、または前後で2-4人のグループを作って、今までのプログラムを参考にしたり、改造したりして、何か面白いものを作ってください。
Counter: 2313,
today: 1,
yesterday: 0