Raspberry Pi をスマートリモコン化 -その1-


Raspberry Pi と赤外線学習リモコンボードを使って、スマートリモコン化し、iPhone の Siri からTV等の電源オン/オフができるようにします。

Raspberry Pi を使ったスマートリモコンの例では、IRKit を使ったものがよく紹介されていますが、

ここでは「ラトックシステム Raspberry Pi UART/USB対応 赤外線学習リモコンボード RPI-IREX」を使ってみます。

今回の「RaspberryPi をスマートリモコン化 -その1-」では、RPi-IREX のセットアップと動作確認までの内容になります。(Siri からのコントロールは 「その2」 以降で紹介します。)

RPi-IREX パッケージはこのような簡易パッケージでした。

組み立て:

パッケージの内容物は、ユーザーズマニュアル、ボード、ピンヘッダー、スペーサーx4、ネジx8 からなります。

 

RPi-IREX はGPIOを使用したUART接続とUSB接続のどちらでも使用することができます。私は、UART接続を選びました。(以下の説明はすべて UART 接続の場合になります。)

ボードの下からピンヘッダーを刺します。

しっかり刺し込むとこのような感じになります。

4つのスペーサーをネジ止めします。(ドライバが必要です。)

Raspberry Pi  のGPIOに差し込んでネジ止めします。(ハンダ付けしなくて良いようになってます。) 使用したのは Raspberry Pi 3 model B です。

本当は、公式ケースに入れたかったのですが、ネジ部分がケースに当たってしまいケースに入れることができませんでした。残念。入るケースを探さないと…。

 

ソフトウェアのセットアップ:

次はソフトウェアの設定です。

ユーザーズマニュアルに記載されている内容の通りですが、せっかく調べたので記載しておきます。

最初に Raspbian を最新状態にアップデートします。

 

シリアル設定の削除:

/boot/cmdline.txt をテキストエディタで開き、「console=serial0,115200」部分を削除します。

 

変更前: (注意: 行の途中から省略しています。)

 

変更後:

 

 

シリアル設定のサービス停止:

シェルから以下のコマンドを入力して、サービスを停止、削除します。

 

UARTの登録設定:

/boot/cmdline.txt の最後に次の1行を追加して、UART の登録設定を行います。

 

以上の設定が済めば、再起動します。

 

動作確認:

シェルから /proc/device-tree/hat/product, /proc/device-tree/hat/vendor の内容を確認します。正しく認識できていれば、以下のような出力が得られます。

 

次に /dev/ttyS0 が作成されていることを確認します。

もしコマンドがエラーになった場合は、/boot/cmdline.txt の設定を見直してください。誤りを修正後、再起動し、/dev/ttyS0 の存在を確認します。

 

RPi-IREX用Pythonサンプルファイル:

 

RPi-IREX用サンプルプログラムをダウンロードします。その前に サンプルプログラムの実行に必要な pyserial と RPi.GPIO をインストールします。

 

pyserialのインストール:

以下のコマンドで pyserial をインストールします。

 

RPi.GPIOのインストール:

以下のコマンドで  rpi.gpio をインストールします。

 

サンプルプログラムのダウンロード:

サンプルプログラム irexIn.py と irexOut.py をダウンロードします。これらのプログラムを使うことで、赤外線リモコン信号の学習と送信をコマンドラインから行うことができます。

 

ファームウェアバージョン取得:

 

以下のコマンドで RPi-IREX のファームウェアバージョンを取得することができます。

手元の RPi-IREX のファームウェアバージョンは 01.00 でした。

 

赤外線リモコンの信号学習:

 

準備が整いましたので、赤外線リモコンを学習させてみましょう。以下のコマンドを入力して赤外線信号学習モード(LED2が点灯)に入ります。

上記のように表示されたら、TV のリモコンを赤外線受光部に向けてリモコンの電源ボタンを押してみましょう。

と表示されたら正常に学習できています。学習したデータは、-f オプションで指定したファイルに保存されます。(今回の場合は、irData.json)

なお、15秒以内にリモコンの入力がないとタイムアウトしてしまいます。

この場合は、再度学習し直しましょう。

 

赤外線リモコンの信号出力:

 

先ほど学習したデータを使って、今後は RPi-IREX から赤外線リモコンの信号を出力して、TV の電源をオンしてみましょう。

以下のコマンドを入力すると、TV の電源が入ります。(TV の電源が入っていれば切れます。)

TV のリモコンの電源ボタンを押すのと同じことが、コマンド入力でできるようになりました。

あとは、学習したいリモコンのボタンごとに同じ操作を行って、学習データを揃えていきます。

 

リセット:

 

なお、以下のコマンドで RPi-IREX をリセットすることができます。万一、RPi-IREX が正常動作しなくなった場合にはリセットしてみましょう。

 

備考:

以下の GitHub ページにたくさんの資料が用意されています。

https://github.com/ratocsystems/rpi-irex

 

 

関連記事: