とりあえず公式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コマンドなどで確認して、なければ入れる。
firmwareをADK 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」のメッセージが表示されたら、ファームウェアまでの準備は終了。今日はここまでということで。