Top/Devel/電子工作/Arduino/赤外線学習リモコンR2-D2

赤外線学習リモコンR2-D2 の変更点はてなブックマーク


#ref(IR_R2-D2_01.jpg,right,around,10%)
夏は暑い。

~
外が暑い中を帰ってきて、自宅も暑いとうんざりする。

~
帰宅途中にエアコンをオンにできたらいいのに。

~
…そうだ!R2-D2に頼もう!

ということで、赤外線で色々な機器を操作するR2-D2を作ることに。

~
以前、[[Devel/電子工作/トラ技付録78K0 USBマイコン基板/赤外線学習リモコンR2-D2]]で作ったものがハードウェア故障とソース紛失で動作しなくなってしまったので、そのリベンジです。


~
&size(30){この後、[[Raspberry Pi+irMagicianで作り直しました!>Devel/電子工作/irMagician/赤外線学習リモコンR2-D2]]};


#clear
#ref(IR_R2-D2_02.jpg,right,around,40%)
#youtube(lf4M0azgHjg)
#clear

*機能
http://【ArduinoのIPアドレス】/【IRパケットの10進数表現】 にGETリクエストを送ると、任意の赤外線信号を送信できます。

*材料
-[[Arduino Uno>http://www.amazon.co.jp/exec/obidos/ASIN/B0044X2E5S/cubic9com-22]]

#amazon(B0044X2E5S,left)
#clear

-[[Arduino イーサネットシールド>http://www.amazon.co.jp/exec/obidos/ASIN/B003YXPPD2/cubic9com-22]]

#amazon(B003YXPPD2,left)
#clear

-[[東京デバイセズ Arduino 赤外線リモコン・家電操作シールド (IRシールド)>http://tokyodevices.jp/products/detail.php?product_id=78]]

[[&ref(ir_shield.jpg);>http://tokyodevices.jp/products/detail.php?product_id=78]]

#clear

-[[LED光拡散キャップ(5mm)>http://www.amazon.co.jp/exec/obidos/ASIN/B004396E8G/cubic9com-22]] または [[LED光拡散キャップ(プラスチック製)>http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4B44]]

#amazon(B004396E8G,left)
#clear

-[[Star Wars Bank R2-D2>http://www.amazon.co.jp/exec/obidos/ASIN/B002OED6UQ/cubic9com-22]]

#amazon(B002OED6UQ,left)
#clear

*手順
+Arduino Uno、イーサネットシールド、IRシールドを順に接続する。
+IRシールドの赤外線LEDに拡散キャップを装着する。
+IRシールドのジャンパをすべて外す。
+「赤外線信号を10進表現IRパケットに変換するスケッチ」をArduinoに書き込む。
+シリアルモニタを表示する。
+IRシールドのジャンパを2ピンと8ピンにつける。
+リモコンをIRシールドに向けて、ボタンを押す。
+シリアルモニタに表示された10進表現IRパケットをメモしておく。これを学習させたい信号分繰り返す。
+IRシールドのジャンパをすべて外す。
+「ウェブサーバとして10進表現IRパケットを受信し、赤外線信号を送信するスケッチ」をArduinoに書き込む。
+IRシールドのジャンパを2ピンと8ピンにつける。
+【動作確認】ブラウザを開き、http://【ArduinoのIPアドレス】/【10進数表現IRパケット】にアクセスしてみる。
+正常に動作することが確認できたら、外装の製作に入る。
+Star Wars Bank R2-D2を切断する。
+IRシールドの赤外線LEDが露出するように穴を空ける。
+Star Wars Bank R2-D2にArduinoを格納する。

*スケッチ
**赤外線信号を10進表現IRパケットに変換するスケッチ
赤外線信号を受信し、シリアルモニタにIRパケット情報を10進数表現で表示します。

Jun様の[[いじわるリモコン>http://www.geocities.jp/jun930/ele/irshield.html]]スケッチの改変版です。Jun様ありがとうございます!

#code(C,nonumber,nooutline,ir_receiver.ino)

**ウェブサーバとして10進表現IRパケットを受信し、赤外線信号を送信するスケッチ
ウェブサーバとしてGETリクエストで10進数表現IRパケット情報を受信し、赤外線信号を送信します。

実際に使用する前にMACアドレスをご自身のArduinoイーサネットシールド貼付のMACアドレスに書き換えてください。IPアドレス、ポートも必要であれば変更してください。

ブロードバンドルータなどでポートマッピング設定(いわゆるポート開放)をするとインターネット経由でR2-D2を操作できるようになります。

#code(C,nonumber,nooutline,ir_sender.ino)

*自宅のIRパケット
|操作|型番|10進数表現IRパケット|h
|エアコン電源オフ|東京ガス DCグリル-35CEA|255.1.69.0.157.23.57.23.17.23.255.0.48.86.232.111.1.68.43.190|
|エアコン電源オン|東京ガス DCグリル-35CEA|255.1.69.0.157.23.57.23.18.23.255.0.48.86.232.111.1.68.24.172|
|シーリングライト電源オフ|Panasonic HHFZ4290|255.0.139.0.62.21.47.21.13.20.255.0.40.52.74.144.236.124.224|
|シーリングライト電源オン|Panasonic HHFZ4290|255.0.139.0.62.21.47.21.13.21.255.0.40.52.74.144.44.188.97|
|テレビ電源オン/オフ|Panasonic TH-36FG15|255.0.138.0.63.21.46.22.13.21.255.0.48.64.4.1.0.188.189.49|
|テレビ音量増|Panasonic TH-36FG15|255.0.138.0.63.21.47.21.13.20.255.0.48.64.4.1.0.4.5.192|
|テレビ音量減|Panasonic TH-36FG15|255.0.138.0.63.21.45.23.12.21.255.0.48.64.4.1.0.132.133.192|
|MDコンポ電源オン/オフ|Panasonic SA-PM35MD|255.0.138.0.62.21.46.21.13.21.255.0.48.64.4.5.56.188.129.47|
|コンポ音量減|Panasonic SA-PM35MD|255.0.138.0.62.21.45.21.13.21.255.0.48.64.4.5.0.132.129.190|
|コンポ音量増|Panasonic SA-PM35MD|255.0.137.0.63.21.47.21.13.21.255.0.48.64.4.5.0.4.1.192|
|コンポCD再生|Panasonic SA-PM35MD|255.0.138.0.62.21.45.21.13.21.255.0.48.64.4.5.80.80.5.94|
|コンポMD再生|Panasonic SA-PM35MD|255.0.138.0.62.21.45.21.13.21.255.0.48.64.4.5.4.80.81.94|
|コンポ停止|Panasonic SA-PM35MD|255.0.137.0.62.21.46.21.13.21.255.0.48.64.4.5.56.0.61.46|

*備考
ソニーのブルーレイレコーダBDZ-AT950Wの信号は学習できませんでした (^^;

これはソニー製品の信号フォーマットは、家電協フォーマットやNECフォーマットとは違い、明滅の時間の長さによってビットを表現しており、IRレシーバで読み取れる方式ではないためです。

もちろん自前で実装すれば解決できます。特にビットを判定せず、読み取った波形をそのまま再現するようにすればよいのです。

*しゃべらせる
しゃべらせたい場合、音声再生部品を別途調達する必要があります。

一般的なのは[[Waveシールド>http://www.switch-science.com/catalog/1139/]]だと思うのですが、私が秋葉原に行ったときは見つけられませんでした。

そこで後述の通り、APLUS社の録音再生IC APR9600を利用した秋月電子通商のキットを使いました。

**機能
http://【ArduinoのIPアドレス】/【IRパケットの10進数表現】 にGETリクエストを送ると、任意の赤外線信号を送信できます。

また、

http://【ArduinoのIPアドレス】/sound にGETリクエストを送ると、APR9600に録音された音声を再生します。

**材料
-前述のR2-D2
-[[60秒電子録音・再生モジュールキット K01-A(K01)>http://akizukidenshi.com/catalog/g/gK-01655/]]
#ref(apr9600.jpg,,33.3%)
#clear
-[[HT82V739使用ミニモノアンプ基板>http://akizukidenshi.com/catalog/g/gK-03234/]]
#ref(ht82v739.jpg,,33.3%)
#clear
-[[サンスイ トランジスタ用小型トランス(ドライバー) ST-20A>http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=357F-4GLF]]
#clear

**手順
+K01-Aとアンプ基盤を組み立てて動作確認する。
+K01-Aの音質アップのためにオシレーターの周波数を決める抵抗(回路図のR7)を24kΩに差し替える。
+K01-Aの電源端子(基盤のJ3)の線を除去する。
+ArduinoのGNDをK01-Aの電源端子(基盤のJ3)に接続する。
+ST-20Aの白線をK01-Aのオーディオ出力(回路図のJ2)の+に接続する。
+ST-20Aの緑線をK01-Aのオーディオ出力(回路図のJ2)の-に接続する。
+ST-20Aの赤線をアンプ基盤のオーディオ入力(回路図のA)に接続する。
+ST-20Aの黒線をアンプ基盤のオーディオ入力(回路図のG)に接続する。
+スピーカーの+をアンプ基盤のオーディオ出力(回路図のP)に接続する。
+スピーカーの-をアンプ基盤のオーディオ出力(回路図のN)に接続する。
+ArduinoのDIGITAL2をK01-AのAPR9600の(回路図のM1)に接続する。
+Arduinoの5VをK01-Aの電源端子(基盤のJ3)に接続する。
+ArduinoのGNDをK01-Aの電源端子(基盤のJ3)に接続する。
+Arduinoの5Vをアンプ基盤の電源端子(回路図のV)に接続する。
+ArduinoのGNDをアンプ基盤の電源端子(回路図のG)に接続する。
+IRシールドのジャンパをすべて外す。
+「赤外線信号を送信したり音声出力したりするスケッチ」をArduinoに書き込む。
+IRシールドのジャンパを2ピンと8ピンにつける。

※とりあえず組む場合、Arduinoのピンと何かを接続するには[[ICテストリード>http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=22NB-2RDV]]が便利です。

**赤外線信号を送信したり音声出力したりするスケッチ
下記は前述の「ウェブサーバとして10進表現IRパケットを受信し、赤外線信号を送信するスケッチ」からの差分です。
#code(C,nonumber,nooutline,ir_sender_apr9600.diff)

*コメント等ありましたらどうぞ :)
#pcomment(,10,reply)

*参考
-[[いじわるリモコン>http://www.geocities.jp/jun930/ele/irshield.html]]
-[[Arduino - WebServer>http://arduino.cc/en/Tutorial/WebServer]]
-[[音声録音・再生装置>http://www.hi-ho.ne.jp/hida/h_made39.htm]]

*関連
-[[Devel/電子工作/トラ技付録78K0 USBマイコン基板/赤外線学習リモコンR2-D2]]
-[[Devel/電子工作/RaspberryPi/ホームオートメーションシステム]]

*Amazon
#amazon(487311537X,left)
#amazon(B00E9LM8LK,left)
#amazon(B00AXVHQLC,left)
#amazon(B0044X2E5S,left)
#amazon(4800711460,left)
#amazon(4873117895,left)
差分 一覧