PS3を赤外線リモコンで操作したかったのですが、肝心の電源だけは操作できないため自分で作ってみました。作りはかなり原始的で、Arduinoにつなげたサーボをリモコンで動かすというだけです。
Wake up PS3 with a servo and a remote control
準備
赤外線の受信はこちらのパーツを使います。可変抵抗のように電源、GNDともう1つのピンで値を読み取ります。
赤外線の解析は自分でやってもよいのですが、面倒なのでこちらの便利なライブラリを使わせていただきます。
- Ken Shirriff's blog: A Multi-Protocol Infrared Remote Library for the Arduino
- shirriff/Arduino-IRremote · GitHub
githubでライブラリのzipをダウンロードして"IRremote"にリネームします。それをMacであれば下記においてください。Windowsでも同様にlibrariesフォルダ以下に置きましょう。Arduino IDEが起動していれば再起動してください。IRrecvDumpのデモを動かすとメーカーなどの情報も出てくるのでかなり便利なことがわかります。
/Users/YourName/Documents/Arduino/libraries/IRremote
スケッチ
IRrecvDumpのデモでPS3を操作するための値をメモしておいてください。下記のTRIG_VALが私の環境で利用するリモコンの値です。その値が来ればサーボが下がって、上がるという何ともマヌケなコードになっています。またサーボとIR受信の電源はArduino本体の5Vと3Vを利用しています。
#include <IRremote.h> #include <Servo.h> int RECV_PIN = 11; long int TRIG_VAL = 0x02FD9A65; IRrecv irrecv(RECV_PIN); decode_results results; Servo servo; int up = 10; int down = 40; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver servo.attach(3); servo.write(up); } void loop() { if (irrecv.decode(&results)) { if(results.value == TRIG_VAL) { Serial.println("CMND"); servo.write(down); delay(200); servo.write(up); } irrecv.resume(); // Receive the next value } }
最後に
電源のON/OFFだけでもかなり便利ですが、更に使い勝手を向上するため下記ガジェットを導入予定です。赤外線はかなりローテクですが、その分汎用性も高いので色々な使い方があって面白いですね。
- 出版社/メーカー: サイバーガジェット
- 発売日: 2010/06/26
- メディア: Video Game
- クリック: 3回
- この商品を含むブログ (1件) を見る
IRKit - iPhone,iPadを使って外出先からエアコン等の家電を操作できる学習リモコン
- 出版社/メーカー: maaash.jp
- メディア: エレクトロニクス
- この商品を含むブログを見る