とりあえず公式Dev Guideの通りやってみる?

さて、ADKの互換ボードを手に入れたはよいが、何をするかをあんまり考えていない。ので、それはそれで考えつつ、まずは公式のAndroid Open Accessory Development Kitのサイトの手順通り環境構築をしていこうかと。
 
一つ前の投稿でArduino IDEをインストールするところまでは終わっているのでその続きから。引き続きUbuntu 10.10 64bit上で構築する。
 

ADKの設定

まずはADKのパッケージをダウンロードしてくる。ダウンロードはここから。ダウンロードしたパッケージを適当なディレクトリに解凍する。解凍したディレクトリの中にapp、firmware、hardwareの3つのディレクトリがあるはず。
 
解凍してできたディレクトリのうちfirmware/arduino_libs以下のAndroidAccessoryディレクトリとUSB_Host_Shieldディレクトリを、Arduino IDE環境を構築した際にインストールされたライブラリに追加する。具体的には<arduinoのインストールディレクトリ>/libraries化にコピーすることになる。前回の投稿と同じ方法でインストールした場合は

$ dpkg -L arduino | grep libraries
/usr/share/arduino/libraries
/usr/share/arduino/libraries/SD
/usr/share/arduino/libraries/SD/README.txt
/usr/share/arduino/libraries/SD/utility
/usr/share/arduino/libraries/SD/utility/Sd2Card.h
/usr/share/arduino/libraries/SD/utility/FatStructs.h
                      ・
           ・
           ・

ということで、/usr/share/arduino/libraries以下にコピーする。

$ sudo cp -rf AndroidAccessory /usr/share/arduino/libraries/
$ sudo cp -rf USB_Host_Shield /usr/share/arduino/libraries/

 
次に同じlibrariesディレクトリ以下にCapSenseディレクトリを作成し、ここからダウンロードしたCapacitiveSenseライブラリのCapSense.cppとCapSense.hをコピーする。
 

$ cd /usr/share/arduino/libraries
$ sudo mkdir CapSense
$ sudo cp /path/to/CapacitiveSense/CapSense.cpp /path/to/CapacitiveSense/CapSense.h CapSense

この後、公式ドキュメント的にはavr-libcをaptでインストールしろ、になっている。自分の環境はすでに導入済だったのでスキップしたけど、一応入れてあるかどうかをdpkgコマンドなどで確認して、なければ入れる。
 

firmwareADK Main Boardに入れる

ADKのMain Boardにfirmwareをインストールする。今回使うMain BoardはSeeed Studioが出しているADK互換ボードであるSeeeduino ADK Main Board
 
このボードの場合、まずPCに接続する前にVCCのスイッチを5Vの方に切替えておく。その後、USBケーブルでPCに接続する。給電されると本体のLEDが点灯するはず。ということで、接続後おもむろにArduino IDEを立ち上げる。
 
Arduino IDEが立ち上がったらBoard TypeをMega 2560に設定する。設定はTools→Board→でArduino Mega 2560を選択。次に接続ポート指定する。Tools→Serial Portから接続可能なポートを選択する。
 
が、ちょっとここで問題発生。選択可能なポートが表示されない。どうもBoardが認識されていない模様。dmesgで見てみても、lsusbで見ても確かに認識されていない。
 

Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 004: ID 0472:0068 Chicony Electronics Co., Ltd 
Bus 004 Device 003: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 004 Device 002: ID 0472:0068 Chicony Electronics Co., Ltd 
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 
/dev/ttyUSB*ができるはずが、それもできていない。カーネルのバージョン(2.6.35-30-generic)からすると、FTDIのドライバは組込み済みのものなのだけどなぁ。
 
ということで、lsmodで調べてみたところ、ftdi_sioのモジュールが読み込まれていない。なので、とりあえず
 

$ sudo modprobe stdi_sio

 
を実行してモジュールを有効にしてみた。で再度つないでみたが、またもや認識されない。あれこれ切り分けてみた結果、USBケーブルにも問題があったことが判明。たまたま手元にあって使ってしまったマイクロUSBのケーブルが、給電はできてもデータ転送できないものだったようだ。ケーブルを変えてみて無事認識された。
 

Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 004: ID 0472:0068 Chicony Electronics Co., Ltd 
Bus 004 Device 003: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 004 Device 002: ID 0472:0068 Chicony Electronics Co., Ltd 
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC ←これ
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 
認識できたら、先程の手順通り、Arduino IDEで転送ポートを選択する。環境によって異なるはずだけど、ここで試してみている環境と同様なら/dev/ttyUSB0になるはず。
 

 
ここまで設定して最後にdemokitをBoardにアップロードする。File→OpenからADKの展開ディレクトリ下のfirmware/demokit/demokit.pdeを選択する。選択して開いたファイルをSketch→Verify/Compileを選択してコンパイルを実行する。
 

 
無事コンパイルが成功して「Done Compiling」のメッセージが表示されたら、File→Upload to I/O Boardでアップロードする。「Done Upload」のメッセージが表示されたら、ファームウェアまでの準備は終了。今日はここまでということで。