LPC1769、LPC11C24搭載 Android Open Accessory Kit

秋月電子で販売されている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評価ボード)で、資料も下記があります。マイコンチップに若干の違いがありますから、その点だけ気をつけましょう。

同じタグの記事: Android
同じタグの記事: Android ADK
同じタグの記事: Linux
同じタグの記事: Ubuntu
同じカテゴリの記事: Android
関連書籍: Android