質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.00%

raspberry pi 3でLIRCを使う際のGPIOの設定がうまくいかない

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 2,715

 前提・実現したいこと

raspberry piを初めて触る初心者です。

以下のサイトを参考に、raspberry pi 3で赤外線送受信を行おうとしていますが、
その過程で詰まったので、質問させていただきます。

https://qiita.com/_kazuya/items/62a9a13a4ac140374ce8
https://qiita.com/Library/items/35eec18fbe11387be6d5
http://doctor.hatenablog.jp/entry/2016/02/22/115222

どうぞよろしくお願い致します。

使っている環境は以下の通りです

% uname -a
Linux raspberrypi 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux

% lsb_release -a
No LSB modules are available.
Distributor ID:    Raspbian
Description:    Raspbian GNU/Linux 8.0 (jessie)
Release:    8.0
Codename:    jessie

発生している問題・エラーメッセージ

問題が発生するまでに行った手順を示します

lircのインストール

% sudo apt-get install lirc

/etc/lirc/hardware.conf の編集

# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS="--uinput"

#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD=false

#Don't start irexec, even if a good config file seems to exist.
#START_IREXEC=false

#Try to load appropriate kernel modules
LOAD_MODULES=true

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="default"
# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""

/boot/config.txt の編集(ピンの指定。Uncomment this to enable the lirc-rpi module以下を編集した)

# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable the lirc-rpi module
dtoverlay=lirc-rpi
dtparam=gpio_in_pin=17
dtparam=gpio_out_pin=18
dtparam=gpio_in_pull=down

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

デバイスファイルが生成できているかを確認

% ls -l /dev/lirc*
crw-rw---- 1 root video 243, 0 11月 14 10:58 /dev/lirc0
lrwxrwxrwx 1 root root      21 11月 14 10:58 /dev/lircd -> ../var/run/lirc/lircd=

ここまでは良いのですが、debugfsでGPIOのアサインを確認の部分で詰まりました

% 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
gpiochip0: GPIOs 0-53, parent: platform/3f200000.gpio, pinctrl-bcm2835:

gpiochip2: GPIOs 100-101, brcmvirt-gpio, can sleep:
 gpio-100 (                    |?                   ) out hi

gpiochip1: GPIOs 128-135, brcmexp-gpio, can sleep:
 gpio-135 (                    |?                   ) in  hi

本来であれば、

GPIOs 0-53, bcm2708_gpio:
gpio-17 (lirc_rpi ir/in ) in lo
gpio-18 (lirc_rpi ir/out ) in lo
gpio-47 (led0 ) out lo


このような出力になるはずです。

試したこと

/boot/config.txtの記述に問題があるのではと思い、
http://wbbwbb.blog83.fc2.com/blog-entry-225.html
を参考に、書き換えて見たのですが、うまくいきませんでした。

また、同じ症状だと思われる事例も見つけたのですが、解決策は得られませんでした
https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=186762

補足情報(言語/FW/ツール等のバージョンなど)

とりあえず、この症状を無視して、赤外線送受信を試みました。

すると、一応信号らしきものが受信できました。(ノイズ等なのか不明)

そのデータを整形し、送信用LEDから発信したのですが、何も反応がありませんでした。
手持ちの50Ω抵抗がなかったため、330Ωのものを使いました。
また、受信家電との距離は1mもありませんでした。

これについて、GPIOから出力が上手く行っていないために反応がないのか、
それとも、電子回路のセットアップの問題なのかを判定する方法はあるのでしょうか?
そちらについてもアドバイスを頂ければと思います。

/etc/log/messageの内容を載せておきます

% cat /var/log/messages | grep lirc
Nov 14 10:58:53 raspberrypi kernel: [    2.599477] lirc_dev: IR Remote Control driver registered, major 243
Nov 14 10:58:53 raspberrypi kernel: [    2.643125] lirc_rpi: module is from the staging directory, the quality is unknown, you have been warned.
Nov 14 10:58:53 raspberrypi kernel: [    3.705579] lirc_rpi: auto-detected active high receiver on GPIO pin 17
Nov 14 10:58:53 raspberrypi kernel: [    3.705900] lirc_rpi lirc_rpi: lirc_dev: driver lirc_rpi registered at minor = 0
Nov 14 10:58:53 raspberrypi kernel: [    3.705906] lirc_rpi: driver registered!
Nov 14 10:58:54 raspberrypi kernel: [    6.939693] input: lircd as /devices/virtual/input/input0
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

logを見る限り17番pinで受信として検出してるので問題ないんじゃないですか。

mountが失敗したのはすでにマウント済みだからであってそれ自体に問題はないかと。

330Ωが正しいかはIRLEDに何を使用してるかわからないので何とも言えません。データシートを見てください。定格電流が書かれているはずなので3.3Vで定格電流を流すために何オームの抵抗を使えばよいかがわかるはずです。また単純に光るかどうかはGPIOをたたいてスマホなりで確認すれば見えます。

gpioはsysfsでシェルから使えるようになっていると思うので

echo 18 >/sys/class/gpio/export
echo out >/sys/class/gpio/gpio18/direction
echo 1 >/sys/class/gpio/gpio18/value

こんな感じで確認してください。

ちなみに赤外線リモコンの仕様はいくつかあるので、ものによっては使えないかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/15 19:38

    丁寧な回答ありがとうございます。

    そうだったのですね。
    sudo cat /sys/kernel/debug/gpio
    の表示形式が異なっていたので、なにか間違っているのかと勘違いしていました。

    そうなると、やはり回路側の問題のようなので、そちらを見直したいと思います。
    ありがとうございました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.00%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる