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

[NEW] 2016/04/17

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

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

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を基にした内容がそのままでは動かない可能性が有ります。)


●ラズパイで LIRC 赤外線リモコンの受信と送信(学習リモコン、リモコン機器を制御)

 検索で出てくる他のラズパイ記事で「LIRCはあきらめましょう」と有りますが、私の環境ではラズパイ3と Raspbian Jessieの組み合わせで LIRCを無事に動かせました。

 ※ ラズパイの OS Raspbianはバージョンが上がる毎に過去の版と内部の作りが変わり、過去に書かれた製作記事がそのままでは動かない事が有ります。
 ※ 当方のホームページのラズパイ記事は全てラズパイ3 + Raspbian Jessieの組み合わせで動作確認をしております。

ちなみに、歴代のバージョンと名称は
Debian 8 コードネーム Jessie(ラズパイ3対応版)(2015 - )
Debian 7 コードネーム Wheezy (2013 - 2016)
Debian 6.0 コードネーム Squeeze (2011 - 2014)
Debian GNU/Linux 5.0 コードネーム Lenny (2009 - 2012)



● 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

 GPIO17 出力 リモコン送信(負論理)
 GPIO18 入力 リモコン受信

 赤外線 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本並列に接続している。


●秋葉原の秋月に行けない場合はこちら


SODIAL(R)10pcs 5mm赤外線IR LED発光ダイオード
ASIN: B00JGFF2SA

SODIAL(R) 10枚8mmLED IR赤外線LEDライト
ASIN: B00SSLSVI6

uxcell IR赤外線LED 5MM 940nm 起動放射 ダイオード ランプ発光 ウォータークリア 20枚
ASIN: B016UFGBGA

uxcell 赤外線リモコン受光モジュール 赤外線受信モジュール 受信距離18M 10 Pcs
ASIN: B016DA2FIK

SODIAL(R)10個受信距離15M赤外線VS838 IRレシーバモジュールブラック
ASIN: B00ZE9UKL6

10pcs VS1838 TL1838 VS1838B赤外線 ヘッド リモコン 受光部 受信機
ASIN: B00FR2UAXI


● 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
 一旦、再起動する
$ 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プレイヤーの再生停止動作とテレビの音量変更コマンドの動作を確認出来ました。




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

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

Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入出来る通販ショップ一覧まとめ
Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入出来る通販ショップ一覧まとめ

  ラズパイゼロW Pi Zero Wirelessモデルを海外通販で先行して購入し、サクッと入手する方法

Raspberry Pi3で安定して使える相性の無い microSDカードのまとめ
Raspberry Pi3で安定して使える相性の無い microSDカードのまとめ

  ラズパイ3で安定して使える microSDカードを購入する Teamと SanDiskは絶対に買わない

Raspberry Pi 3 Model Bに専用カメラモジュールを接続する方法
Raspberry Pi 3 Model Bに専用カメラモジュールを接続する方法

  ラズパイに専用カメラモジュールを接続して Raspbianで写真の静止画撮影や動画を録画する方法

Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ
Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ

  ラズパイの Raspbian OSのコマンドラインで使用する便利コマンド、負荷試験や CPUシリアル番号の確認方法等も

Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳
Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳

  ラズパイ公式フォーラムの「The Raspberry Pi 3 Model B Q&A thread」の日本語訳

Raspberry Pi 3で GPIO端子の I2C機能を有効化する方法
Raspberry Pi 3で GPIO端子の I2C機能を有効化する方法

  ラズパイ3の GPIO端子の I2C機能を有効にして各種センサーを繋げる方法まとめ

大人気の CPUボード、Raspberry Pi 3 Model Bで作ってみよう
大人気の CPUボード、Raspberry Pi 3 Model Bで作ってみよう

  Raspberry Piの開発環境の構築やタッチパネル付き液晶ディスプレイや各種センサーの使い方まとめ


Raspberry Pi 3、シングルボードコンピュータ ラズパイ3 Raspberry Pi関連はこちらへまとめました
 下記以外にも多数のラズパイ関係の記事が有ります。
 (I2C制御、GPIO制御、1-Wire制御、シリアル通信、日本語音声合成、日本語音声認識、中国語音声合成、MeCab 形態素解析エンジン、赤外線リモコン制御、秋月 I2C液晶モジュール、KeDei 3.5インチ液晶、HDMI 5インチ液晶、NFCカードリーダ、コマンドライン操作方法等)
Raspberry Pi 3に HDMI接続の 800x480 5インチ TFT液晶を接続して使用する方法
Raspberry Pi 3 Jessieで LIRC機能を使って学習リモコン、赤外線リモコンを送受信する方法
Raspberry Pi 3の WiFiを無線LANアクセスポイント化 hostapd + dnsmasq編
Raspberry Pi 3の Bluetoothで ブルテザで通信する方法(Bluetooth編)
Raspberry Pi 3で日本語音声を合成して喋らせる方法(Open JTalk編)
Raspberry Pi 3に USB Micを接続して日本語の音声認識をする方法(Julius編)
Raspberry Pi 3の GPIOに LEDとスイッチを接続して Lチカする方法
Raspberry Pi 3の GPIOに LEDとスイッチを接続してシャットダウンボタンを実装する方法
Raspberry Pi 3で GPIO端子の I2C機能を有効化する方法
Raspberry Pi 3の GPIOに I2C通信方式の気圧計 BMP280を接続する方法
Raspberry Pi 3に I2C通信方式の NFCリーダライタ PN532を接続して NFC FeliCaカードを読む方法
Raspberry Pi 3でネットワーク ライブカメラを構築する方法 Motion編
Raspberry Pi 3でネットワーク ライブカメラを構築する方法 MJPG-streamer編
Raspberry Pi 3 Model Bで動画処理アプリ FFmpegをコンパイルする方法
Raspberry Pi3の X-Window Systemに Windowsのリモートデスクトップから接続する方法
Raspberry Pi3に WebRTCの STUN/TRUNサーバと PeerJSサーバをインストールする方法


Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板
Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板

  Espressif ESP8266 ESP-12-E NodeMCU V1 ESP12 CP2102

BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)
BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)

  レーザー彫刻機、カラー液晶の DIYオシロ、Arduinoや Raspberry Pi用の小型カラー液晶



[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/