
シフトブレスなしでも大丈夫!Raspberry Piを使い赤外線を送信する方法
Arduinoを使い赤外線パターンを解析した結果を参考に、シフトブレスから送信される赤外線をRaspberry Piを使って送信し、ドライブドライバーから音声を鳴らします。
赤外線の送信はArduinoでも可能ですが、次の3つの理由からTONGARISMではRaspberry Piを使用しました。
- Raspberry Piでは、LIRCという赤外線データの送受信をサポートするソフトウェアを使用することができるため、簡単に赤外線のパターンを作成することができる
- ArduinoではLIRCが使えないため、赤外線LEDを周波数38kHzでパターンにそって点滅させるといった処理を作りこむ必要がある
- 赤外線パターンを大量に作成・保存するとき、Arduinoは記憶領域が少なく容量に不安があるが、Raspberry Piでは十分な領域を用意できる
使用機器
赤外線送信に必要な機器
- Raspberry Pi Model B+
小型のコンピュータで、HDMIやUSB、Ethernet、Audio出力といったインターフェースを備えています。Debianをはじめとした各種LinuxOSが動作可能です。
- 赤外線LED
赤外線を発光するLEDです。今回はこちらの赤外線送受信キットに入っていたものを使用しました。
- 抵抗(220Ω)
流れる電流の量を制限したり調整したり役割をもつ部品です。こちらも赤外線LEDと同じく赤外線送受信キットに入っていたものを使用しました。
- MicroSDカード(8GB以上推奨)
Raspberry Piでは、ハードディスクの代わりにMicroSDカードをストレージとして使用します。
Raspberry Pi環境構築
OSインストール
Raspberry PiはOSをインストールする領域として、MicroSDカードを使用します。TONGARISMではRaspberry Piの公式ページに従い、”Raspbian”をインストールしました。
LIRC(Linux Infrared Remote Control)インストール
LIRCはLinuxでの赤外線データの送受信をサポートするソフトウェアです。以下のコマンドでインストールします。
$ sudo apt-get install lirc |
LIRC自動起動設定
LIRCを起動時に読み込むようにするため、rootユーザーで /etc/modules を編集し、以下2行を追加します。
lirc_dev lirc_rpi gpio_out_pin=18 |
赤外線送信準備
回路図
上記のようにブレットボードとジャンプワイヤーを使い、入出力ピンに赤外線LEDを接続します。今回はデジタル入出力ピンの18番ピンを使いました。赤外線LEDを直接電源と接続すると、赤外線LEDの定格電流を越える電流が流れてしまうため、間に抵抗を入れて電流を調整します。
lircd.confの作成
LIRCを使って赤外線を送信するには、送信するパターンをlircd.confというファイルに定義します。今回は、前回解析した赤外線パターンの波形を参考に、シフトスピードとシフトマックスフレアのシフトアップ時のデータを定義してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
begin remote name DRIVE flags RAW_CODES|CONST_LENGTH eps 30 aeps 100 gap 132921 begin raw_codes name SHIFTSPEED 6000 500 1500 500 1500 500 500 1500 1500 500 1500 500 1500 500 1500 500 1500 500 500 1500 1500 500 500 1500 500 name SHIFTMAXFLARE 6000 500 1500 500 1500 500 500 1500 1500 500 1500 500 1500 500 500 1500 1500 500 500 1500 1500 500 1500 500 500 end raw_codes end remote |
“name SHIFTSPEED”と”name SHIFTMAXFLARE”以降に記載している数字の羅列で、送信する赤外線パターンのHIGH/LOWの時間を定義しています。左側の数字がHIGHの時間で、右側の数字がLOWの時間です。(例:”6000 500″の場合、HIGH:6000μs、LOW:500μs)
この数字を変更することで、様々な赤外線パターンを送信することができます。
また、ファイル中の”name”については自由に定義可能で、赤外線パターンを送信する際にどのパターンを送信するかを選択するのに使用できます。今回紹介するシフトスピード、シフトマックスフレア以外のパターンを試してみる場合は、適切な名前に設定してください。
LIRCの設定と再起動
作成したlircd.confファイルを/etc/lirc/にコピーします。
$ sudo cp lircd.conf /etc/lirc/. |
rootユーザーで設定ファイル /etc/lirc/hardware.conf 内の4行を以下のように編集します。
LIRCD_ARGS=”–uinput” DRIVER=”default” DEVICE=”/dev/lirc0″ MODULES=”lirc_rpi” |
LIRCを再起動します。
$ sudo /etc/init.d/lirc restart |
赤外線送信
送信方法
以下のコマンドを実行することで、lircd.confで設定した赤外線パターンが送信されます。
- シフトスピードの場合
$ sudo irsend SEND_ONCE DRIVE SHIFTSPEED |
- シフトマックスフレアの場合
$ sudo irsend SEND_ONCE DRIVE SHIFTMAXFLARE |
実際にRaspberry Piを使って赤外線送信してみました。
動画の最後に、人の手によるシフトブレスの操作では絶対に実現できない、人の限界を超えたソフトウェアならではの遊び方も載せています。
次回は…
今回の取り組みを応用し、おもちゃとして登場していない音声を鳴らしてみます。