Seeeduinoで始めるADK (Android3.1(XOOM) Ubuntu 64bit 環境)


Seeeduino ADKAndroid 3.1(XOOM)で遊んでみました。
Seeeduino ADKはI/O少ないので今回はLEDチカチカまで。


自分のホスト環境はUbuntu 10.10 64bit
この記事の読者対象は「これからADK始める」って人向け。
サクッと要点残しておきます。

  1. 準備部材
  2. 環境設定
    1. Android環境構築
    2. Arduino環境構築
    3. ADK package
    4. udev rulesの設定
  3. Seeeduino ADK ファームウェア
  4. AndroidADKアプリをインストール
  5. LEDチカチカファームへ書き換え


1.準備部材


Seeeduinoはダウンロードコネクタにmicro-Bを使ってます。写真のようにmini-Bと比べすこし平べったいです。


最近micro-Bタイプ増えてきたけど手元にあるケーブルはmini-Bってことが多いので
micro-B - mini-B 変換コネクタを手に入れておくと便利かも。




2.環境設定
2.1 Android 環境構築
Android環境構築の解説は他サイトに多いのではぶきます。
特にTechBoosterさんの記事がわかりやすいのでリンクぺたり。


Ubuntu 11.04にAndroid開発環境を構築する - TechBooster
http://techbooster.jpn.org/andriod/environment/5580/




2.2 Arduino環境構築

Arduino http://arduino.cc/en/Main/Software

上記サイトからDLしたファイルを解凍。lnでパス統一しとくと幸せ。

$ mkdir ~/opt
$ cd ~/opt
$ mv ~/Download/arduino-0022-64-2.tgz .
$ tar zxvf arduino-0022-64-2.tgz
$ ln -s arduino-0022 arduino

arduino環境のパスを通す

$ vi ~/.bashrc

~/.bashrcに追記

export PATH=$PATH:$HOME/opt/arduino

.bashrcを読み直してarduinoが立ち上がればOK

$ source ~/.bashrc
$ arduino &


2.3 ADK package
ADK packageにはADK開発に必要なファイルが入っているので、それぞれ適切な場所に置きます。


ADK package をダウンロード
http://developer.android.com/intl/ja/guide/topics/usb/adk.html

解凍して必要なファイルをarduino環境にコピーします。

$ unzip adk_release_0512.zip
$ cd ADK_release_0512/firmware/arduino_libs
$ cp -r AndroidAccessory USB_Host_Shield ~/opt/arduino/libraries/.


Androidのソースは以下パスにあります。あとで必要になります。

ADK_release_0512/app


2.4 udev rulesの設定
タブレット端末をUbuntuに認識させます。ADKアプリをPCからタブレット端末へ転送するための準備です。


XOOMの場合、USBのベンダIDは22b8なので以下追記
/etc/udev/rules.d/51-android.rules

SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", MODE="0666"

USBを抜き差ししておきます。


他ベンダのタブレットを使う場合、lsusbコマンドでベンダIDをチェックできます。

$ lsusb
...
Bus 001 Device 026: ID 22b8:70a9 Motorola PCS
...


3.Seeeduinoへファームウェアをダウンロード
ファームウェアをSeeeduinoへダウンロードします。
USBでPCとSeeeduinoを繋げておきます。


arduinoを起動します。

$ arduino &


初期設定をしておきます。

  1. Tools -> Board -> Arduino Mega 2560 を選択
  2. Tools -> Serial Port -> /dev/ttyUSB? を選択


File -> Open... で以下ファイルを開きます。


ADK_release_0512/firmware/demokit/demokit.pde


※ソース内のJoystick初期化でコケていたので init_joystick(5); をコメントアウトします。

...
void setup()
{
	Serial.begin(115200);
	Serial.print("\r\nStart");

	init_leds();
	init_relays();
	init_buttons();
//	init_joystick( 5 );

	// autocalibrate OFF
	touch_robot.set_CS_AutocaL_Millis(0xFFFFFFFF);
...

Uploadボタンを押して完了。




4.AndroidADKアプリをインストール
PC-タブレットをUSB接続した状態で eclipse 起動

ADK_release_0512/app

を開いて実行。
ADKアプリが立ち上がればOK。


この状態で、PC-タブレット と繋いでいたUSBを
タブレット-Seeeduinoに挿し替え。


Seeeduinoを認識してくれたら万々歳。



5.LEDチカチカ ファームウェアへ書き換え
LEDチカチカさせるためにSeeeduinoのファームを書き換えます。
Relay1のボタンでLEDがON/OFFするようになっています。

#include <Max3421e.h>
#include <Usb.h>
#include <AndroidAccessory.h>

#define LED1 13

AndroidAccessory acc("Google, Inc.",
		     "DemoKit",
		     "DemoKit Arduino Board",
		     "1.0",
		     "http://www.android.com",
		     "0000000012345678");

void setup();
void loop();

void setup() {
  Serial.begin(115200);
  Serial.print("\r\nStart");

  digitalWrite(LED1, LOW);    // set the LED off
  pinMode(LED1, OUTPUT);
  
  acc.powerOn();
}

void loop() {
  byte msg[3];
  // Androidと接続された場合
  if (acc.isConnected()) {
    int len = acc.read(msg, sizeof(msg), 1);
    if(len > 0) {
      if (msg[0] == 0x3) {
        if (msg[1] == 0x0)
	  digitalWrite(LED1, msg[2] ? HIGH : LOW);
      }
    }
  // Androidと接続されていない場合
  } else {
    digitalWrite(LED1, LOW);
  }
  delay(10);
}


以上で記事おわり。


余談だけど、Android 2.3.4 のケータイとか 3.1以上のタブレットないよ〜
って場合でも MicroBridge(ADB接続) って方法でAndroid1.5以上の端末とSeeeduino ADKをUSBで繋げて遊べます。

Seeeduino ADKwikiのソースコピペでできるんでお試しあれ。
http://garden.seeedstudio.com/index.php?title=Seeeduino_ADK_Main_Board