Android+Arduinoでリモコン3 その1(AndroidAccessory接続)
何度か、Android+リモコンのネタを書いたことがあるのですが、今回はAndroid Accessoryで接続する学習リモコン・デバイスを作ったので、その報告です。
これ1台で、赤外線リモコンの学習~操作までができます。
(※注意・便宜上、プログラムの名前にADKと付けていますが、ADKボードで動作すると言う意味ではありません。)
今回は、回路図やプログラムのソースも公開していますので、お暇な方は是非作って遊んでみて欲しいです。
デバイスの仕様
・タイトル通り、メインとなるのはArduinoです。 ちなみに、僕のArduinoはDuemilanoveで最新のUNOでは有りません。 動作に問題は無いと思いますが、確証は有りません。 (便宜上、プログラムの名前にADKと付けていますが、ADKボードで動作すると言う意味ではありません。 僕は本物のADKボードを持っておらず、ADKボードで動く物は作れませんので・・・)
・Android Accessoryで接続する為に、USB Host シールドを利用
・その他の主な部品は、動作確認用LED・赤外線送信用LED・赤外線受信モジュールを各1個づつ。
・データ仕様/コマンド仕様は、KURO-RS(PC-OP-RS1)と、その機能拡張版と言えるIRIO88形式用。
・データ保存用のバッファは、512バイト。 本当はもっと多く確保したかったが、メモリが足りないっぽいので、安定動作する512バイトにしています。 この部分は様子をみながら増減させると良いかも・・・あまり大きくすると突然暴走してしまったりする(正直なところ、別のところに問題があるのかもしれない・・・ArduinoのOutOfMemoryの捕捉の仕方が分からないでorz)
512バイトのバッファで、100usのサンプリングだと、409.6msまでの長さのリモコンデータを記録できる。(512バイト x 8ビット x 100us)
ちなみにKURO-RSは、データバッファが240バイトでサンプリングレートが100usなので、192msの記録ができる。
サンプリングレートは20us~100usまで指定できる。(サンプルアプリでは、20us・50us・100usから選べるようにした)
参考リンク)
IRIO88(InfraRed-Input/Output for atmega88) – Electric House
玄人志向 – KURO-RS(販売終了品)
BUFFALO PCastTV2対応 PC用学習リモコンキット PC-OP-RS1(Amazon)
PC-OP-RS1のコマンド仕様・データ仕様 PC-OP-RS1
パーツリスト
名前&メーカーリンク | 数量 | 記号 | 備考&販売店リンク |
Arduino Duemilanove | 1 | スイッチサイエンス(UNO) | |
Sparkfun USBホストシールド | 1 | スイッチサイエンス | |
赤色LED | 1 | LED1 | 動作確認用LED(秋月) |
OSI5LA5113A | 1 | LED2 | 赤外線LED(秋月) |
OSRB38C9AA | 1 | 赤外線受信モジュール(秋月) | |
2SC1815 | 1 | NPNトランジスタ(秋月) | |
抵抗 – 1k | 2 | R1-2 | (秋月) |
抵抗 – 47 | 1 | R3 | (秋月) |
![]() 赤外線LED OSI5LA5113A 袋買いしちゃってますw |
![]() 赤外線リモコン受信モジュール OSRB38C9AA 2個で100円 |
その他・オススメパーツ
Sparkfun USBホストシールドには連結用のピンヘッダが付属していないので、別途購入の必要があります。
ブレッドボードで作る場合
回路図
※実際には、ArduinoにUSBホストシールドを接続してから、各部品の配線を行います。
※必要最小限の回路です。
※回路図中のRESETピンに繋がっているタクトSWは必要ありません。僕は押しやすいようにSWを外付けしたので、とりあえず記載しておきました。
ブレッドポードで作る場合(実態配線図)
今回初めて、Fritzingと言う回路図作成ツールで、ブレッドボード用の実態配線図を作ってみました。
なかなか使いやすくて良いです。http://fritzing.org/
図中の青いLEDが赤外線LEDとなります。白いLEDも選択できたのですが、見難いので青LEDで代用しました。
Arduino用プログラム(ソース)
↓のzipファイルに、本記事のソース一式をまとめています。
zipファイル内の Arduino Firmwareフォルダ内に、Arduino用のソースが入っています。
※2011/8/3
少しだけソース修正しました。+kuro-rsコンパチで動くプログラムも同梱しました。
注意点
上記の回路図や実態配線図通りに部品を接続し、ArduinoIDEを使ってプログラムをArduinoに書き込めばデバイスは完成です。
プログラムをArduinoに書き込む手順は、Arduino + USBホストシールド で ADK を試す(その3) を参照してください。
完成後、電源を接続して、動作確認LEDが一回点滅すれば、デバイスの初期化までは正しく動いていると言えます。
ここから先の動作チェックは、実際にアプリを使って確認してください。
USBホストシールドのUSB給電問題
SparkfunのUSBホストシールドは、USBから給電で動作させる場合、電圧不足でAndroid Accessoryのデバイスとして認識されません。 その原因と対策は、Arduino + USBホストシールド で ADK を試す(その2)のUSBホストシールドの項 を参照してください。
![]() ブレッドボード |
![]() ユニバーサル基板を切って作ったなんちゃってシールド |
デバイスの作り方は 以上です。
Androidのアプリの紹介は次のページで行います。
関連記事
-
-
Arduino + USBホストシールド で ADK を試す(その1)
先日Google IOで発表された Android Open Accessory。みなさん知ってます
-
-
Android + Arduino でリモコン2 (softmodem接続)
以前、LAN接続のリモコン Android + Arduino でリモコン と言うものを作ったのです
-
-
Arduino + USBホストシールド で ADK を試す(その3)
「Arduino + USBホストシールド で ADK を試す(その1)」では、Android上のア
-
-
Android + Bluetooth + Arduino
以前書いた『気になる物』で紹介したBluetoothモジュールですが、本当に気になって実
-
-
Androidで温度計(STTS751使用)
Androidに温度センサー(STTS751)を繋いで温度表示してみました。 温度
-
-
ArduinoでSDカード
電子工作で大量のデータを保存する方法を調べていると、 Arduinoでも比較的簡単にSDカードを
-
-
Android+Arduinoでリモコン3 その2(AndroidAccessory接続)
何度か、Android+リモコンのネタを書いたことがあるのですが、今回はAndroid Access
-
-
米粒AVRの動作周波数
米粒AVR(ATtiny10)のデフォルトでは内臓発振器利用の1MHzが指定されてい
-
-
Raspberry Pi SDカードのクラスと起動速度
SDカードにOSをインストールするので、起動にはそれなりに時間がかかります。 では、どれくらい
-
-
米粒AVRでI2C通信(マスター)
米粒AVRことATtiny10は3つまたは4つのI/Oピンしか使えないのですが、I2Cなら2つの