秋月電子で販売されているLPC1769搭載ボード、LPC11C24搭載ボードの Android Open Accessory Kit を使ってみています。「Android Open Accessory Kit: マイコン関連 秋月電子通商 電子部品 ネット通販」のページにマニュアルなどへのリンクがあるので、これらの資料を読めば動かすことはできます。まずは導入ガイドを一通り確認してみて、敷居が高そうだと思ったら手は出さない方が良いでしょう。試してませんが、LinuxユーザやWindowsユーザなら、それほど大変ではないかもしれません。MacOS Xはイメージ書き込みが面倒なようだったのでLinuxを使って書き込むことにしました。
初期状態で何かのプログラムが書き込みがされているのですが、Nexus7(2012)を接続してもアクセサリとなりません。試しに導入ガイドにしたがって最新のサンプルイメージを書き込もうとしてみましたが、Flash Magicの使い方がわかりませんでした。MacOS Xで動作するWineで動かしているのか、Windowsで動いているかのような感じです。
例えば、ファイルを指定すると「C:\Users…」とCドライブの文字がつきますし、ポートもMacBook Proでは「/dev/tty.usbserial-A5018W6X」と認識しているのに、「COM1」といった指定しかできません。Windowsを使うと簡単に解決しそうですが、MacBook Proでも作業をしたいところです。
VirtualBox + VirtualBox拡張 + Ubuntu12.04
USBドライバなどがきちんとインストールできていて、MBPで認識しているのであれば、VirtualBox + VirtualBox拡張 + Ubuntu12.04 でいけるのではないかと考えて、それで書き込みをしてみることにしました。
VirtualBoxでUbuntu12.04を起動したら、「Devices」ー「USB Devices」ー「FTDI FT232R USB UART[0600]」をチェックすると、Ubuntu側で「/dev/ttyUSB0」が認識されて使えるようになります。環境によっては「USB0」の「0」が違っていることがあるかもしれません。
そのままでは通信ができないので、ユーザ「user001」で使いたいとすると、dialoutのグループへuser001を登録しておく必要があります。直接 /etc/group を編集するか、rootでaddgroupコマンドを使って登録するかします。下記では catとgrepでdialoutの登録状態を確認しています。
$ cat /etc/group|grep dialout dialout:x:20:user001
aoaサンプル
「Android Open Accessory Application (AOAA) Kit | Embedded Artists AB」から、android_apps_131022.zip、aoa_board_130410.zip、aoa_board_binaries_131022.zip を ${HOME}/Downloadsにダウンロードしておきます。
次に、各ファイルを展開するための ${HOME}/workspace/aoa を作成して、そこへ展開をします。書き込みには lpc21ispコマンドを使います。書き込みをするときは、5V 1A以上のACアダプタかUSBでボードへ給電をしつつ、ボードのUSB BコネクタとPCをUSBでつなげます。また、VirtualBoxでUSBデバイスを確認し、Ubuntuでも/dev/ttyUSB0があることを確認しておきます。次の例では demo_aoa_basic.hex を書き込んでいます。
$ mkdir -p ${HOME}/workspace/aoa $ unzip ${HOME}/Downloads/android_apps_131022.zip $ unzip ${HOME}/Downloads/aoa_board_130410.zip $ unzip ${HOME}/Downloads/aoa_board_binaries_131022.zip $ cd ~/workspace/aoa/binaries/ $ lpc21isp -control demo_aoa_basic.hex /dev/ttyUSB0 57600 12000
ちなみに、lpc21ispコマンドは、「-b」オプションを使うと、binファイルも書き込むことができます。
Nexus7(2012)
書き込みが成功したら、PCとボードのUSBは取り外しておきます(外さなくてもいいですが、一応念のため)。
Nexus7(2012)では、セキュリティで提供元が不明のアプリをインストールできるようにしておくことと、開発者オプションでUSBデバッグを有効、スリープモードにしないを有効にしておきましょう。
準備ができたら、Nexus7(2012)とボードのUSB Aコネクタとつなげます。AOAのアプリをインストールするよう促されるので、Embedded Artists のサイトからダウンロードしてインストールします。手元ではChrome経由だとうまくダウンロードできなかったのでFirefoxでダウンロードしてから、ASTROファイルマネージャで、Demo_AOA_Basic.apk をインストールしました。
Demo AOA Basic を起動すると、Androidとボードの連携をさせることができました。RGB6 LED、RGB7 LED はAndroidアプリの画面でRedをクリックするとボードのLEDが赤で、Greenだと緑で、Blueだと青で光ります。Button1、Button2 は、LEDの横にあるSW2とSW3に対応していて、押下すると1になり、はなすと0となります。TrimPotはボリューム(赤っぽい回転する装置)に対応していて、回すと数値が変動ます。
lpc21isp
lpc21ispコマンドは「lpc21isp | Free System Administration software downloads at SourceForge.net」から入手します。開発環境をインストールしてあれば、簡単にコンパイルできます。生成されたlpc21ispコマンドは/usr/local/binへ置くと使えるようになります。
$ sudo mkdir /usr/local/src/lpc21isp $ cd /usr/local/src/lpc21isp $ sudo tar xf ~/Downloads/lpc21isp_194.tar.gz $ sudo make -f Makefile clean all $ sudo mv lpc21isp /usr/local/bin/
参考書籍
Embedded ArtistsのAOA評価ボードを使うより、mbedの方がいいかもしれません。mbedは,ARM社のCortex-M3をコアにしたNXPセミコンダクターズ社のUSBを内蔵したマイコン・ボード(LPC1768評価ボード)で、資料も下記があります。マイコンチップに若干の違いがありますから、その点だけ気をつけましょう。