HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
English Translate 中文翻訳
LINK
BACK
 

2016/04/17

【旧版】Raspberry Pi 3 Jessieで LIRC機能を使って学習リモコン、赤外線リモコンを送受信する方法 【旧版】Raspberry Pi 3 Jessieで LIRC機能を使って学習リモコン、赤外線リモコンを送受信する方法

(ラズパイ3で赤外線受信センサと Ir LEDで赤外線リモコン信号を送受信して家電等の外部機器を制御する方法)

Tags: [Raspberry Pi], [電子工作]






● Raspberry Pi 3 Model Bを遂に購入

 Raspberry Pi3 Model B RPI2 RPI3

 大人気の CPUボードの Raspberry Piに WiFiと Bluetoothが搭載されたモデルが新発売となりました。
 以前から Raspberry Pi 2を買おうかどうか迷っていましたが、Raspberry Pi 3 Model Bの発売を機に購入を決意してラズベリアンになる事にしました。

 ※ ラズパイの OS Raspbianはバージョンが上がる毎に過去の版と OSの内部の作りが変わり、過去に書かれた製作記事(例えば Raspbian Wheezyの時代の記事)がそのままではエラーが出たりして動かない事が有ります。
 ※ 当方のホームページのラズパイ記事は全て Raspberry Pi 3 Model Bと Raspbian Jessieの組み合わせで動作確認をしております。
(ただし、将来的に新しい Raspbian OSが出た場合に、当方の Raspbian Jessieを基にした内容がそのままでは動かない可能性が有ります。)
 ※ 2017/08/16から Raspbian OSは Raspbian Jessieから Raspbian Stretchに変わりました。

Download Raspbian for Raspberry Pi

ちなみに、歴代のバージョンと名称は
Debianコードネーム年月備考
Debian 9Stretch2017/08/16~
Debian 8Jessie2015~2016/02からラズパイ3対応
Debian 7Wheezy2013~2016
Debian 6.0Squeeze2011~2014
Debian GNU/Linux 5.0Lenny2009~2012


● Raspbian Jessie 2017/07最終版で LIRCを使って学習リモコン、赤外線リモコンを送受信する方法

 下記にまとめました。

[UPDATE] 2017/09/04
Raspberry Pi Raspbian Jessie 2017-07最終版で LIRCを使って学習リモコン、赤外線リモコンを送受信する方法
Raspberry Pi Raspbian Jessie 2017-07最終版で LIRCを使って学習リモコン、赤外線リモコンを送受信する方法

  ラズパイ3 Jessieで赤外線受信センサと IR LEDで赤外線リモコン信号を送受信して家電等の外部機器を制御する方法


※ 2017年 8月追記:このページの内容は古いので現在の 2017年 7月版 Raspbian Jessieとは若干設定方法が異なります。

 具体的には、
DEVICE TREES, OVERLAYS, AND PARAMETERS
 の DEVICE TREESの書き方(/boot/config.txt)です。

旧方式:(1行に全部書く)
dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=18,gpio_in_pull=up,invert=on

新方式:(複数行になる)
dtoverlay=lirc-rpi
dtparam=gpio_out_pin=17
dtparam=gpio_in_pin=18
dtparam=gpio_in_pull=up
dtparam=invert=on


● What is LIRC ?

 LIRC is a package that allows you to decode and send infra-red signals of many (but not all) commonly used remote controls.

 LIRC(Linuxの赤外線リモコンは、Linuxの赤外線リモコン)は、オープンソースのスイートです。このキットには、お使いのLinuxシステムは、赤外線信号を送受信する事ができます。

IRSEND - LIRC - Linux Infrared Remote Control

赤外線リモコン受信モジュールOSRB38C9AA(2個入) OSRB38C9AA
5mm赤外線LED OSI5LA5113A (10個入) OSI5LA5113A

・5mm 赤外線LED OSI5LA5113A
 ・順方向電圧(VF):1.35V(標準)(@100mA)
 ・ピーク波長:940nm
 ・放射強度:55mW/sr
 ・半減角:15°

・赤外線リモコン受信モジュールOSRB38C9AA
 ・電源電圧範囲:DC2.7V~DC5.5V
 ・中心周波数:37.9kHz
 ・ピーク感度波長:940nm

 赤外線 LEDの電流制限抵抗は 330Ωで、その場合の LEDの駆動電流は 6mAです。
 OSI5LA5113Aの標準駆動電流は 50mAですが、6mAでもリモコン機器の制御が可能でした。ただし、赤外線LED光の拡散範囲が半減角 15度と狭く、指向性が高いので、10cm程度の至近距離まで近付ける必要が有りました。(角度が合えばもう少し距離を離せるかも。)
 電流制限抵抗を 240Ωにすると LEDの駆動電流は 8mAになります。
 (ラズパイの GPIOの絶対最大定格は 16mAなので注意)

 ※ 赤外線 LEDを 50mAで駆動する場合はトランジスタ等の回路が必要になります。単純に電流制限抵抗を 47Ω(計算値 41mA駆動)にして GPIOに接続すると絶対最大定格の 16mAを超えるのでラズパイを破壊します。電流の計算式 (3.3-1.35)/47=41mA

 ※ 赤外線 LEDの点灯確認方法としてはデジカメの液晶モニタやスマホをカメラモードにして画面を見る方法が有ります。テレビ等のリモコンの送信部分を見てみると良くわかります。(赤外線は可視光線ではないので肉眼での点灯確認はできません。)

・Raspberry Pi3の GPIO端子の LIRC機能を有効化して リモコン送受信をしてみるテスト
Raspberry Pi3の GPIO端子の LIRC機能を有効化して リモコン送受信をしてみるテスト
 赤い線はラズパイの +3.3Vに接続します。

・Raspberry Pi3の GPIO端子の LIRC機能を有効化して リモコン送受信をしてみるテスト
Raspberry Pi3の GPIO端子の LIRC機能を有効化して リモコン送受信をしてみるテスト
 赤い線はラズパイの +3.3Vに接続します。

・Raspberry Pi3の GPIO端子の LIRC機能を有効化して リモコン送受信をしてみるテスト
Raspberry Pi3の GPIO端子の LIRC機能を有効化して リモコン送受信をしてみるテスト


・Raspberry Pi3の GPIO端子の LIRC機能を有効化して リモコン送受信をしてみるテスト
Raspberry Pi3の GPIO端子の LIRC機能を有効化して リモコン送受信をしてみるテスト
 ※ 330Ωの抵抗が無かったので 1kΩの抵抗を 3本並列に接続している。


● 赤外線 LEDをトランジスタで駆動する場合の実体配線図

・Raspberry Pi3の GPIO端子の LIRC機能を有効化して リモコン送受信をしてみるテスト
Raspberry Pi3の GPIO端子の LIRC機能を有効化して リモコン送受信をしてみるテスト
 赤い線はラズパイの +3.3Vに接続します。
 図中の NPNトランジスタは ECB配列です。(EBC配列の場合はピン配置を読み替えてください。)
 電流制限抵抗に 47Ωを使用して赤外線 LEDを 41mAで駆動しています。電流の計算式 (3.3-1.35)/47=41mA


● Raspberry Pi3の GPIO端子の LIRC機能を有効化して リモコン送受信をしてみるテスト

 lircをインストール
$ sudo apt-get -y install lirc

$ sudo nano /etc/lirc/hardware.conf

 4箇所を下記の様に変更して書き換える
変更前変更後備考
LIRCD_ARGS=""LIRCD_ARGS="--uinput"LIRCD_ARGS="--uinput -listen"だと駄目だった
DRIVER="UNCONFIGURED"DRIVER="default"
DEVICE=""DEVICE="/dev/lirc0"
MODULES=""MODULES="lirc_rpi"

 面倒な場合は下記をコマンドラインで実行。(sedコマンドによるファイルの文字列置換と上書き編集)
cp /etc/lirc/hardware.conf ~/hardware.conf
sed -i -e "s/LIRCD_ARGS=\"\"/LIRCD_ARGS=\"--uinput\"/g" ~/hardware.conf
sed -i -e "s/DRIVER=\"UNCONFIGURED\"/DRIVER=\"default\"/g" ~/hardware.conf
sed -i -e "s/DEVICE=\"\"/DEVICE=\"\/dev\/lirc0\"/g" ~/hardware.conf
sed -i -e "s/MODULES=\"\"/MODULES=\"lirc_rpi\"/g" ~/hardware.conf
cat ~/hardware.conf
sudo mv /etc/lirc/hardware.conf /etc/lirc/hardware.conf.bak
sudo cp ~/hardware.conf /etc/lirc/hardware.conf
$ sudo nano /boot/config.txt
dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=18,gpio_in_pull=up
 ※ラズパイで赤外線リモコンを学習し発信する系のサイトで gpio_out_pin=18,gpio_in_pin=17の設定で解説している所が多いですが、これはラズパイ標準の設定とは入出力の関係が逆になっているので注意。

GitHub raspberrypi/firmware firmware/boot/overlays/README
 GitHubの CONFIG.TXTの説明。
sudo bash -c "echo \# IR-Remote controller >> /boot/config.txt"
sudo bash -c "echo dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=18,gpio_in_pull=up >> /boot/config.txt"

※ リモコン送信側の LEDの論理が負論理の場合は invert=onを付ける。(上記の接続方法の場合が該当します)
dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=18,gpio_in_pull=up,invert=on

※ メモ Pifi Digi DAC仕様の場合 GPIO26に赤外線受光モジュールを接続。GPIO17に Tr経由で赤外線 LEDを接続(正論理)
sudo bash -c "echo \# IR-Remote controller >> /boot/config.txt"
sudo bash -c "echo dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=26,gpio_in_pull=up >> /boot/config.txt"
 一旦、再起動する
$ sudo reboot

 lsmodで lircの存在を確認
$ lsmod | grep lirc
lirc_rpi 6422 0
lirc_dev 8110 1 lirc_rpi
rc_core 16220 1 lirc_dev

$ sudo /etc/init.d/lirc stop
[ ok ] Stopping lirc (via systemctl): lirc.service.

 リモコンの動作確認(受信モジュールにリモコンを向けて操作すると受信の様子が画面に出る)
$ mode2 -d /dev/lirc0
pulse 426
space 415
pulse 390
space 450
pulse 389
space 450
pulse 391
space 449
pulse 416
space 424
pulse 416
space 423
pulse 423
 リモコン信号を受信する度に space / pulseが連続して表示される。

$ ls -l /dev/lirc*
crw-rw---- 1 root video 244, 0 Apr 16 15:41 /dev/lirc0

$ sudo mount -t debugfs debugfs /sys/kernel/debug
mount: debugfs is already mounted or /sys/kernel/debug busy
debugfs is already mounted on /sys/kernel/debug

$ sudo cat /sys/kernel/debug/gpio
GPIOs 0-53, platform/3f200000.gpio, pinctrl-bcm2835:
gpio-4 (w1 ) in lo
gpio-23 (sda ) in lo
gpio-24 (scl ) in lo
gpio-25 (ads7846_pendown ) in hi

GPIOs 100-101, platform/soc:virtgpio, brcmvirt-gpio, can sleep:
gpio-100 (? ) out lo
上記コマンドでは GPIO端子の lirc_rpiが確認できない?

 リモコンの内容を記憶させる(/etc/lirc/lircd.confの内容を半自動で生成してくれる)
$ irrecord -n -d /dev/lirc0 ~/dvd_player_ir.conf

irrecord: could not open /dev/lirc0
irrecord: default_init(): Device or resource busy
irrecord: could not init hardware (lircd running ? --> close it, check permissions)
 のエラーが出たら
 LIRCサービスを再起動する
$ sudo /etc/init.d/lirc restart
irrecord -  application for recording IR-codes for usage with lirc
Copyright (C) 1998,1999 Christoph Bartelmus(lirc@bartelmus.de)

Press RETURN to continue.

Now start pressing buttons on your remote control.

It is very important that you press many different buttons and hold them
down for approximately one second. Each button should generate at least one
dot but in no case more than ten dots of output.
Don't stop pressing buttons until two lines of dots (2x80) have been
generated.

Press RETURN now to start recording.
................................................................................
................................................................................
Found const length: 107893

Please enter the name for the next button (press <ENTER> to finish recording)
play

Now hold down button "play".
Got it.
Signal length is 67

Please enter the name for the next button (press <ENTER> to finish recording)
stop

Now hold down button "stop".
Got it.
Signal length is 67

Please enter the name for the next button (press <ENTER> to finish recording)
pause

Now hold down button "pause".
Got it.
Signal length is 67

Please enter the name for the next button (press <ENTER> to finish recording)
eject

Now hold down button "eject".
Got it.
Signal length is 67

Please enter the name for the next button (press <ENTER> to finish recording)
 リモコンのボタン学習の時に下記エラーが出てリモコン学習ができない場合は -fオプションを付ける。
Something went wrong. Please try again. (9 retries left)
Something went wrong. Please try again. (8 retries left)
Something went wrong. Please try again. (7 retries left)

例: -fを付けてリモコン学習コマンド irrecordを実行する。
$ irrecord -n -f -d /dev/lirc0 ~/dvd_player_ir.conf

 生成した dvd_player_ir.confファイルの NAME部分を書き換える
$ sudo nano dvd_player_ir.conf
変更前変更後備考
  name  /home/pi/dvd_player_ir.conf  name  DVD_PLAYER  name DVD PLAYERの様に名称に空白が有ると駄目

 リモコンの定義ファイルをコピーする(複数の機器が有る場合は追記していく)
$ sudo cp dvd_player_ir.conf /etc/lirc/lircd.conf

 LIRCサービスを再起動する
$ sudo /etc/init.d/lirc restart

 リモコンの定義内容を確認する
$ irsend LIST "" ""
irsend: DVD_PLAYER

$ irsend LIST DVD_PLAYER ""
irsend: 0000000000000001 play
irsend: 0000000000000002 stop
irsend: 0000000000000003 pause
irsend: 0000000000000004 eject

 リモコンの内容を送信する
$ irsend SEND_ONCE DVD_PLAYER play

 リモコン送信の動作確認のデバグ用に連続して送信したい場合(例は 100回送信する)
$ for i in {0..100}; do irsend SEND_ONCE DVD_PLAYER play; echo $i; done;

 DVDプレイヤーの再生停止動作とテレビのチャンネル変更、音量変更コマンドの動作を確認できました。

※ メモ LG製テレビ -f不要 irrecord -n -d /dev/lirc0 ~/lg_tv_ir.conf


Tags: [Raspberry Pi], [電子工作]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

Raspberry Pi Raspbian Jessie 2017-07最終版で LIRCを使って学習リモコン、赤外線リモコンを送受信する方法
Raspberry Pi Raspbian Jessie 2017-07最終版で LIRCを使って学習リモコン、赤外線リモコンを送受信する方法

  ラズパイ3 Jessieで赤外線受信センサと IR LEDで赤外線リモコン信号を送受信して家電等の外部機器を制御する方法

Raspberry Pi Raspbian Stretchで LIRC機能を使った学習リモコン、赤外線リモコンを動かす方法
Raspberry Pi Raspbian Stretchで LIRC機能を使った学習リモコン、赤外線リモコンを動かす方法

  ラズパイ Stretchで赤外線リモコンの制御アプリ LIRC 0.9.4cの設定方法、Ir LED

ラズパイでエアコン対応の赤外線学習リモコンを pigpioライブラリを使って作る方法、Goodbye LIRC
ラズパイでエアコン対応の赤外線学習リモコンを pigpioライブラリを使って作る方法、Goodbye LIRC

  Raspbian Stretchでエアコン対応の赤外線リモコンを動かす、ややこしい LIRCを使わないで IR機器を制御

赤外線 LEDの点灯を目視確認する方法、Raspberry Piで赤外線リモコンの実験で動かない時に
赤外線 LEDの点灯を目視確認する方法、Raspberry Piで赤外線リモコンの実験で動かない時に

  赤外線リモコンの実験で動かない時の確認ポイント、赤外線 LEDの点灯を目視確認する方法

Raspberry Pi専用 TI PCM5122 DACオーディオ基板でハイレゾ音源 PiFi DAC+ V2.0基板
Raspberry Pi専用 TI PCM5122 DACオーディオ基板でハイレゾ音源 PiFi DAC+ V2.0基板

  ラズパイに TI PCM5122 I2S DACモジュール基板を接続して 384kHz 32bitでハイレゾ音源を楽しむ



[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2016 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_3_lirc_ir_remote_control_2016/