じゃがいもログ

脊髄性筋萎縮症(SMA)1型の息子と生活中

ArduinoでカスタムTVリモコン

うちはTVリモコンをスイッチで操作するのに、Panasonicのレッツ・リモコンを使っています。

こちらチャンネル操作という点では機能的には申し分ないのですが、自作のタッチセンサースイッチにこれをつなぐとなぜかスイッチ側の動作が安定しないのと、レコーダーに録画した番組も選べるようにしたいと思い、カスタムリモコンを作ってみることにしました。

例によってArduinoを使うことにし、手持ちのArduino unoとブレッドボードを使っていろいろ試してみました。

プログラミングのほうは、Device Plusさんのこちらの記事がとても参考になります。githubで公開されているArduino-IRremoteというライブラリを使います。examplesフォルダー内にあるIRrecvDumpV2を使って、赤外線レシーバーでリモコンの信号を受信して信号を特定、その信号を今度はこれまたexamplesフォルダーにあるIRsendRawDemoを使って赤外線LEDで発信すれば、Arduinoからテレビ操作できることを確認できます。

たとえば、Panasonic製テレビリモコンのPlayボタンであれば、IRrecvDumpV2で信号を受信すると、次のような出力がコンソールに流れます。

Encoding  : UNKNOWN
Code      : A173823E (32 bits)
Timing[99]: 
     +3500, -1700     + 450, - 400     + 500, -1250     + 450, - 400
     + 500, - 400     + 450, - 400     + 450, - 400     + 500, - 350
     + 500, - 400     + 450, - 400     + 450, - 400     + 500, - 400
     + 450, - 400     + 450, - 400     + 450, -1300     + 450, - 400
     + 450, - 400     + 450, - 400     + 500, - 400     + 450, - 400
     + 450, - 400     + 450, - 400     + 500, - 400     + 450, - 400
     + 450, -1300     + 450, -1250     + 450, - 450     + 450, - 400
     + 450, -1300     + 450, - 400     + 450, - 400     + 450, - 400
     + 500, - 400     + 450, - 400     + 450, - 400     + 450, - 400
     + 500, - 400     + 450, - 400     + 450, - 400     + 450, -1300
     + 450, -1300     + 450, -1250     + 450, - 400     + 500, - 400
     + 450, -1300     + 450, - 400     + 450, - 400     + 450, -1300
     + 450, - 400     + 450
unsigned int  rawData[99] = {3500,1700, 450,400, 500,1250, 450,400, 500,400, 450,400, 450,400, 500,350, 500,400, 450,400, 450,400, 500,400, 450,400, 450,400, 450,1300, 450,400, 450,400, 450,400, 500,400, 450,400, 450,400, 450,400, 500,400, 450,400, 450,1300, 450,1250, 450,450, 450,400, 450,1300, 450,400, 450,400, 450,400, 500,400, 450,400, 450,400, 450,400, 500,400, 450,400, 450,400, 450,1300, 450,1300, 450,1250, 450,400, 500,400, 450,1300, 450,400, 450,400, 450,1300, 450,400, 450};  // UNKNOWN A173823E

このうちの unsigned int rawData[99] で始まる行の{}内が信号になるので、これをIRsendRawDemoで送信するようにします。

今回は、赤外線レシーバーと赤外線LEDはこちらこちらを使いました。リモコンは周波数がたいてい38kHzらしく、赤外線レシーバーも38kHzのものを選びます。

いつも使っているArduino microを調達中なので、そちらが来たら本実装に取り掛かろうと思います。