Android Host – Arduino間シリアル通信の実現
ひとまず動作確認。最近はプライベートで体力的にきついけど頑張る(愚痴)。
Arduino側の準備
Android側のプログラムで使用するライブラリの関係で前提条件として、FTDIのチップを搭載したモデルであることが必要。対応モデルは「Arduino Duemilanove」や「Arduino Mega」など。現在もっとも入手容易な「Arduino UNO」はAtmelのチップなので不可。チップに関しては個人的にこの辺でちょこっと調べたが、合ってる保証はない。
今回はもちろん、Arduino互換なながてぃ~の。を使用した。ちなみにながてぃ~の。はArduino IDEのボードで「Arduino Duemilanove」を選択すればプログラムを書き込める。
Arduinoには以下のスケッチをPCなどから予め書き込んでおく。ご覧のとおり、シリアルポートを通じて受信したデータをそのまま送信するという素朴なechoを実現するスケッチだ。
void setup() {
Serial.begin(115200);
}
void loop() {
if (Serial.available())
Serial.write(Serial.read());
}
転送速度(ボーレートと呼ぶらしい)はAndroid側サンプルプログラムに合わせて115200bpsとしたが、ArduinoとAndroidが同じならば何でも良いと思う。
Android側の準備
前提条件として、AndroidはUSB Host機能がサポートされるOSバージョン3.1以上でなければならない。また物理的にUSBホスト端子がついていなければならない。今回はAcer ICONIA TAB A500(A500)を使用した。
通信を実現するためのライブラリとしては@ksksue氏のFTDriverを使用する。FTDriverはReadmeにsupport FTDI chips (FT232RL, FT232H, FT2232C/D/HL, FT4232HL FT230X, REX-USB60F(FT232BL) checked)
とあるようにFTDIのチップに対応しているライブラリである故、使用できるArduinoのモデルに制限が出てくるのだ。
Android SDK、eclipseなどの導入は済んでいるものとする。新しくA500を接続し、プログラムを書き込むには以下の手順が必要となる。詰まった時にはこちらの記事が参考となった。
あとは先ほどのFTDriverライブラリに含まれるサンプルプログラム、FTSampleTerminalをeclipseにインポートし、A500に書き込めばよい。ここで詰まった時はこちらの記事が参考になった。
通信の確認
A500のUSBホストポートとながてぃ~の。をつないで先ほどのAndroidサンプルプログラムを実行してみよう。
このサンプルプログラムは、任意の文字列を送信でき、逆に受信したデータを画面上に表示する。丁度Arduino IDEのシリアルモニタみたいなものだ。
Arduino側のプログラムは送られてきたデータをそのまま送り返すというものなので、ここで適当な文字列を送信してやると、
このようにA500の画面に表示されることが分かる。
さて次はソースを読むか、RC-S620/Sをいじるか……。