Arduinoというマイコンボードがある。AndroidにはAndroid Open Accessory(AOA)があって、Accessory Development Kit (ADK)がある。
んで、これが結びついてADKで使えるArduino Mega ADK r3が発売されていて、スイッチサイエンスさんとかで買える。
なぜArduino ADKか
Arduino x Androidで夢がひろがリング。部屋にXperia Tabletが置いてあるのでこれにつないで赤外線を支配すれば外からエアコンつけたりとかなんでもAndroidやウェブから部屋のいろんなものを操作できるんじゃないかと思ったから。ロボットとかは敷居が高いけどソフトウェアよりなら調べながらでもいけるんじゃないかと考えてみたり。
はじめの一歩のレシピ
参考文献と微妙に状況が変わっているようだった。
- Mac OS X 10.8
- Arduino Mega ADK r3
- Android 4.0端末
- Mac-Arduino用USBケーブル(Aコネクタ-Bコネクタ)
- Arduino-Android用USBケーブル(Aコネクタ-*)
- FTDIドライバ
- Arduino (IDE) 1.0
- ADK_release_20120606
- サンプルコード
6のドライバを1のMacにインストール、
7の開発環境を1のMacにインストール(/Applicationに配置)
8のADK_release_20120606のarduino_libsにあるAndroidAccessory、USB_Host_Shieldを~/Documents/Arduino/libraries/にコピー
MacとArduino Mega ADKを4のUSBケーブルでつなぐ。
7のArduinoアプリを起動。ツール > マイコンボード > Arduino Mega 2560 or Mega ADK を選択。ツール > シリアルポート > /dev/tty.usbmodem-###を選択。以下のサンプルコードを入力して、検証して、書き込み。
#include//ADKを利用するための3つのライブラリを読み込む(1) #include #include //外部インテントのための指定(2) AndroidAccessory acc("ADKstudyGroupTokyo ", //第1引数:組織名 "AdkNoSuchAppTitle", //第2引数:存在しないアプリのタイトル名 "このAndroidはADKが使えます ADK Connection Test", //第3引数:ダイアログ表示メッセージ "1.0", //第4引数:バージョン "http://accessories.android.com/", //第5引数:ジャンプ先URL "0000000012345678"); //第6引数:シリアル番号 void setup() //最初に一度だけ実行される部分 { Serial.begin(115200); Serial.print("\r\nStart"); //USBホスト機能を有効にする acc.powerOn(); } void loop() //繰り返し実行される部分 { if (acc.isConnected()) { //Androidを起動・接続する命令を送る(3) //communicate with Android application(4) } else { //set the accessory to its default state(5) } delay(10); //10ミリ秒処理を停止(10ミリ秒おきにloop()を繰り返す) (6) }
ArduinoとAndroidを5のUSBケーブルで接続(Android側のUSBコネクタは端末による)。AndroidがArduinoを検出すれば成功。
次は赤外線と格闘する・・・予定。
参考文献
混乱したところ
ADK 2012がでていて多少混乱。今回はADK 2011が対象。
欲しい内容は「Android ADK プログラミング&電子工作バイブル」の方なんだけど、新しいのは「Android×Arduinoでつくるクラウド連携デバイス」の方でこっちはMac向けだったりして交互に見ながらなんとかなった。
「Android ADK プログラミング&電子工作バイブル」は章ごとに著者が違って二章と三章で開発環境が違ったりしてややこしい。書籍の時点ではADKがArduino (IDE) 1.0に対応していないが現在はADK_release_20120606があり対応している。
レシピを見てわかるように普通にやれば何も問題なかった。