読者です 読者をやめる 読者になる 読者になる

The jonki

呼ばれて飛び出てじょじょじょじょーんき

PS3の電源をリモコンで操作(物理)

PS3を赤外線リモコンで操作したかったのですが、肝心の電源だけは操作できないため自分で作ってみました。作りはかなり原始的で、Arduinoにつなげたサーボをリモコンで動かすというだけです。


Wake up PS3 with a servo and a remote control


準備

赤外線の受信はこちらのパーツを使います。可変抵抗のように電源、GNDともう1つのピンで値を読み取ります。

赤外線の解析は自分でやってもよいのですが、面倒なのでこちらの便利なライブラリを使わせていただきます。

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だけでもかなり便利ですが、更に使い勝手を向上するため下記ガジェットを導入予定です。赤外線はかなりローテクですが、その分汎用性も高いので色々な使い方があって面白いですね。

CYBER・リモートコントローラ (PS3用)

CYBER・リモートコントローラ (PS3用)