あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

7年の時を経て赤外線学習に手をつけてしまった話

Raspberry Pi Advent Calendar 2016の13日目です。

Raspberry Pi Advent Calendar 2016 - Adventar

Big Jamでやる気が再燃したというわけでもなく、たんに忙しくて趣味に手を付けられなくなっていた状態からだいぶ開放されたのでやりました的な感じです。

赤外線なリモコンのリモート操作といえば、2010年のEjectに始まって、今ではフォトカプラによる間接制御が現役稼働しています。先日のBig Jamでも展示していましたね。

新居に越してから、さらにLED照明が2個増えました。旧宅はデフォでクソ古い蛍光灯が備え付けられていましたが、新居は自前調達が必要だったのでそうしました。選んだLED照明はアイリスオーヤマのリモコン付きのもので、明るさ調整の他に暖色・寒色の調整もできるスグレモノです。

LED照明のリモコンはなんかなくしそうですし、帰宅時にリモコンを手に取るまで照明がつけられないのもだるいので、これもリモート操作の対象にしたいです。いつもどおりこのリモコンにフォトカプラをつけてもいいのですが、なんかさすがになあと思ったので、いよいよ赤外線学習に手を付けてしまいました。前置き長かったね。

さて、一式は以下のサイトを参考に作りました。じつは弊社部長が先にこれで作っていて、そのあまり部材で作ったのでした。

3.3V対応赤外線LED駆動回路決定版 | 電脳伝説 Vintagechips

使ったもの。

  • 赤外線LED×2
  • 15オームの抵抗×2
  • NchパワーMOSFET(100V17A)IRLU3410PBF×1
  • 赤外線受光モジュール×1

ブレッドボードで試作。LED照明が2個なので、LEDを並列回路にして2個さしたらかなり反応が良くなりました。これあれだ、シャープのテレビのリモコンにLEDが2個ついてるあの感じだ。

こっちは1個でやったときの。

f:id:Akkiesoft:20161213094032j:plain

これが2個版。

f:id:Akkiesoft:20161213094033j:plain

この状態でLIRCを使って赤外線学習タイム。

まず/boot/config.txtのdtoverlay=lirc-rpiをコメントアウトします。

続けて/etc/modulesの記述。GPIOのPinは受光モジュールに18を、送信のLEDに17を利用しているのでそのように書きました。

lirc_dev
lirc_rpi gpio_in_pin=18 gpio_out_pin=17

そしていっかい再起動。再起動後はLIRCをインストールします。

pi@irtest:~ $ sudo apt-get install lirc

ほんでテストを実行。リモコンを受光モジュールに向けてボタンを押すと…アイヤァァァァァァァァァァ!!なんか流れる!

pi@irtest:~ $ mode2 -d /dev/lirc0
space 16777215
pulse 29711
space 49465
pulse 3386
space 1661
pulse 424
:
:

これで動作バッチリなので、設定ファイルを作ります。コマンドは対話式で、始めはいろんなリモコンのボタンをじっくりじっくり押してドットを貯める作業があります。これでパターンを岸駒州するのだと思いますが、LED照明のリモコンはボタンの反応がイマイチでなかなかドットがたまらず苦労。その後はボタンの登録を名前の入力、実際にリモコンのボタンを押して読み込み、と言う作業を繰り返して設定ファイルを完成させます。

pi@irtest:~ $ irrecord -n -d /dev/lirc0 ledlight.conf

こうして出来上がったファイルをひらいて、ファイル冒頭のbrandとmodel no. of remote controlを入れます。参考にしたブログではソニーブラビアでしたが、アイリスオーヤマのLED照明なのでそんな感じのを入れます。

# brand:                       IRIS-OHYAMA
# model no. of remote control: R5.0-DL

そして作成したledlight.confを/etc/lirc/lircd.confとしておきます。

pi@irtest:~ $ sudo mv /etc/lirc/lircd.conf /etc/lirc/lircd.conf.orig
pi@irtest:~ $ sudo mv ledlight.conf /etc/lirc/lircd.conf

あとは、lircのサービスを自動起動とかにします。

pi@irtest:~ $ sudo systemctl enable lirc
pi@irtest:~ $ sudo systemctl start lirc

最後はブレッドボードに挿したやつを基板化。今回はaitendoのPiZeroサイズに作られたボードを使用しました。

f:id:Akkiesoft:20161213103916j:plain

ピンソケットもaitendoのミク色(??)を使用。ミク色ピンソケットが惜しいのは20ピンピッタリのがいないことですが、今回はそんなに使わないので、16ピン×2で妥協。もう一つ買ってた16ピンのソケットからピンを抜いてパキパキ切り取り(あとヤスリで削り)、受光モジュールと送信LEDを差し込むソケットを作りました。これなら気が変わったりケーブルで延長したくなっても柔軟に対応できるかなあと。抵抗とMOSFETは固定。

作ってから気づいたけど、これと既存のエアコンリモート(256版Pi1B)の併用ができないな……。このためにまた1台消費してもまあ良いのですが、ちょっとさすがにもったいないので、エアコンも赤外線学習の対象にしてしまうか検討したいところです。エアコンリモート7年間ありがとうキャンペーン開催と言った感じですかね。。。

参考記事