Thiết lập điều khiển từ xa bằng lirc


7

Làm cách nào tôi có thể điều khiển TV của mình chỉ bằng Raspberry Pi và diode Hồng ngoại từ một điều khiển từ xa cũ. Cộng với cách tôi có thể diễn giải các lệnh IR từ một điều khiển từ xa hiện có.


Hướng dẫn tốt đẹp! Lirc chắc chắn là xa "cắm và chơi".
Dmitry Grigoryev

Câu trả lời:


8

Tôi có thể bật TV bằng cách sử dụng lệnh sau:

irsend SEND_ONCE LG_AKB72915207 KEY_POWER

Đây là cách tôi thiết lập nó.

Thiết lập phần cứng

Tôi đang sử dụng Raspberry Pi P1 2011.12.

Đèn LED hồng ngoại trần kết nối với GPIO#18GND. phần cứng

Cài đặt lirc

sudo apt-get install lirc -y

Cập nhật /etc/modules

sudo nano /etc/modules

Và thêm các dòng sau đây dẫn đến

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
lirc_dev
lirc_rpi gpio_in_pin=4 gpio_out_pin=18

Xin lưu ý rằng tôi chưa (chưa) sử dụng gpio_in_pincài đặt của mình.

Cập nhật /etc/lirc/hardware.conf

Đây là của tôi 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=""

Cập nhật /boot/config.txt

sudo nano /boot/config.txt

Cập nhật dòng liên quan đến lirc-rpimô-đun

# Uncomment this to enable the lirc-rpi module
dtoverlay=lirc-rpi,gpio_in_pin=4,gpio_out_pin=18
# dtparam=gpio_in_pull=up

Tải xuống cài đặt trước điều khiển từ xa

Tại lirc.sourceforge.net/remotes bạn tìm thấy một kho khổng lồ các điều khiển từ xa cùng với các cài đặt trước.

Trong trường hợp của tôi, gần nhất với Điều khiển từ xa của tôi LG AKB73275606LG_AKB72915207. Mà trông ít nhiều giống như điều khiển từ xa của tôi .

Vì vậy, tôi đã sao chép nội dung của lirc.sourceforge.net/remotes/lg/AKB72915207 sang /etc/lirc/lircd.conf:

sudo nano /etc/lirc/lircd.conf
#
# this config file was automatically generated
# using lirc-0.8.6(default) on Fri Sep 10 22:02:46 2010
#
# contributed by
#
# brand:                       TV LG 42"LD420
# model no. of remote control: AKB72915207
# devices being controlled by this remote:
#

begin remote

  name  LG_AKB72915207
  bits           16
  flags SPACE_ENC|CONST_LENGTH
  eps            30
  aeps          100

  header       9056  4448
  one           601  1647
  zero          601   538
  ptrail        601
  repeat       9081  2199
  pre_data_bits   16
  pre_data       0x20DF
  gap          108229
  toggle_bit_mask 0x0

      begin codes
          KEY_POWER                0x10EF                    #  Was: power
          energy                   0xA956
          avmode                   0x0CF3
          input                    0xD02F
          tvrad                    0x0FF0
          KEY_1                    0x8877                    #  Was: 1
          KEY_2                    0x48B7                    #  Was: 2
          KEY_3                    0xC837                    #  Was: 3
          KEY_4                    0x28D7                    #  Was: 4
          KEY_5                    0xA857                    #  Was: 5
          KEY_6                    0x6897                    #  Was: 6
          KEY_7                    0xE817                    #  Was: 7
          KEY_8                    0x18E7                    #  Was: 8
          KEY_9                    0x9867                    #  Was: 9
          KEY_0                    0x08F7                    #  Was: 0
          KEY_LIST                 0xCA35                    #  Was: list
          q.view                   0x58A7
          KEY_VOLUMEUP             0x40BF                    #  Was: vol_up
          KEY_VOLUMEDOWN           0xC03F                    #  Was: vol_down
          KEY_CHANNELUP            0x00FF                    #  Was: ch_up
          KEY_CHANNELDOWN          0x807F                    #  Was: ch_down
          KEY_FAVORITES            0x7887                    #  Was: fav
          ratio                    0x9E61
          KEY_MUTE                 0x906F                    #  Was: mute
          KEY_MENU                 0xC23D                    #  Was: menu
          KEY_INFO                 0xD52A                    #  Was: guide
          q.menu                   0xA25D
          KEY_UP                   0x02FD                    #  Was: up
          KEY_DOWN                 0x827D                    #  Was: down
          KEY_LEFT                 0xE01F                    #  Was: left
          KEY_RIGHT                0x609F                    #  Was: right
          KEY_OK                   0x22DD                    #  Was: ok
          KEY_BACK                 0x14EB                    #  Was: back
          KEY_INFO                 0x55AA                    #  Was: info
          KEY_EXIT                 0xDA25                    #  Was: exit
          KEY_RED                  0x4EB1                    #  Was: red
          KEY_GREEN                0x8E71                    #  Was: green
          ellow                    0xC639
          KEY_BLUE                 0x8679                    #  Was: blue
          exit2                    0x04FB
          t.opt                    0x847B
          KEY_SUBTITLE             0x9C63                    #  Was: subtitle
          KEY_STOP                 0x8D72                    #  Was: stop
          KEY_PLAY                 0x0DF2                    #  Was: play
          KEY_PAUSE                0x5DA2                    #  Was: pause
          KEY_REWIND               0xF10E                    #  Was: <<
          KEY_FORWARD              0x718E                    #  Was: >>
          simplink                 0x7E81
      end codes

end remote

Bây giờ khởi động lại lircdịch vụ:

sudo /etc/init.d/lirc restart

Gửi lệnh

Bây giờ tôi có thể bật và tắt TV như vậy:

irsend SEND_ONCE <DEVICE> <KEY>

cụ thể là:

irsend SEND_ONCE LG_AKB72915207 KEY_POWER

Và voilà TV của tôi bật và tắt.




Cập nhật: Thêm người nhận

Cập nhật /etc/modules

snd-bcm2835
lirc_dev
lirc_rpi gpio_in_pin=18 gpio_out_pin=17

Cập nhật /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=""

Nối các mục sau vào /boot/config.txt:

# LIRC
dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=17
dtparam=gpio_in_pull=up

Để kiểm tra từ xa chạy như sau, nó sẽ cho bạn thấy các xung

sudo /etc/init.d/lirc stop
mode2 -d /dev/lirc0

Để ghi lại một điều khiển từ xa mới, sử dụng các lệnh sau. Đảm bảo chia sẻ điều khiển từ xa của bạn với cộng đồng lirc bằng cách gửi cấu hình tới lirc@bartelmus.de.

irrecord --list-namespace # Shows the allowed identifiers for the commands
irrecord -f -d /dev/lirc0 ~/lirc.conf

Bây giờ để kiểm tra cấu hình, bạn bắt đầu dịch vụ lirc và chạy irw

#  sudo /etc/init.d/lirc start
[ ok ] Loading LIRC modules:.
[ ok ] Starting remote control daemon(s) : LIRC :.
root@phone2:~# irw
0000000008087887 00 KEY_POWER LG_6710CMAM09D
0000000008087887 01 KEY_POWER LG_6710CMAM09D
0000000008087887 02 KEY_POWER LG_6710CMAM09D
000000000808c837 00 KEY_PAGEUP LG_6710CMAM09D
000000000808c837 01 KEY_PAGEUP LG_6710CMAM09D
00000000080848b7 00 KEY_PAGEDOWN LG_6710CMAM09D
000000000808c837 00 KEY_PAGEUP LG_6710CMAM09D



Xử lý sự cố

Tự khởi động daemon socket

sudo lircd --device /dev/lirc0

Hướng dẫn đã giúp tôi ra

Thông báo lỗi tôi nhận được trong quá trình thiết lập

irsend: hardware does not support sending
irsend: command failed: SEND_ONCE LG_AKB72915207 KEY_POWER
irsend: unknown remote: "/etc/lirc/lircd.conf"
lirc_rpi: gpio chip not found!

Bài viết khác về lirc

lsmod

lsmod
...
lirc_dev               10211  1 lirc_rpi
rc_core                23776  1 lirc_dev

Hiển thị các lỗi liên quan đến lircquá trình:

dmesg | grep -i lirc
[    5.118133] lirc_dev: IR Remote Control driver registered, major 244
[    7.148664] lirc_rpi: module is from the staging directory, the quality is unknown, you have been warned.
[    8.269729] lirc_rpi: auto-detected active high receiver on GPIO pin 4
[    8.270174] lirc_rpi lirc_rpi: lirc_dev: driver lirc_rpi registered at minor = 0
[    8.270188] lirc_rpi: driver registered!
[   16.197900] input: lircd as /devices/virtual/input/input0

Liệt kê một điều khiển từ xa:

Liệt kê tất cả các điều khiển từ xa:

irsend LIST "" ""
irsend: LG_AKB72915207

Liệt kê các lệnh cho một Remote đã cho

irsend LIST LG_AKB72915207 ""
irsend: 00000000000010ef KEY_POWER
irsend: 000000000000a956 energy
irsend: 0000000000000cf3 avmode
irsend: 000000000000d02f input
irsend: 0000000000000ff0 tvrad
irsend: 0000000000008877 KEY_1
irsend: 00000000000048b7 KEY_2
irsend: 000000000000c837 KEY_3
irsend: 00000000000028d7 KEY_4
irsend: 000000000000a857 KEY_5
irsend: 0000000000006897 KEY_6
irsend: 000000000000e817 KEY_7
irsend: 00000000000018e7 KEY_8
irsend: 0000000000009867 KEY_9
irsend: 00000000000008f7 KEY_0
irsend: 000000000000ca35 KEY_LIST
irsend: 00000000000058a7 q.view
irsend: 00000000000040bf KEY_VOLUMEUP
irsend: 000000000000c03f KEY_VOLUMEDOWN
irsend: 00000000000000ff KEY_CHANNELUP
irsend: 000000000000807f KEY_CHANNELDOWN
irsend: 0000000000007887 KEY_FAVORITES
irsend: 0000000000009e61 ratio
irsend: 000000000000906f KEY_MUTE
irsend: 000000000000c23d KEY_MENU
irsend: 000000000000d52a KEY_INFO
irsend: 000000000000a25d q.menu
irsend: 00000000000002fd KEY_UP
irsend: 000000000000827d KEY_DOWN
irsend: 000000000000e01f KEY_LEFT
irsend: 000000000000609f KEY_RIGHT
irsend: 00000000000022dd KEY_OK
irsend: 00000000000014eb KEY_BACK
irsend: 00000000000055aa KEY_INFO
irsend: 000000000000da25 KEY_EXIT
irsend: 0000000000004eb1 KEY_RED
irsend: 0000000000008e71 KEY_GREEN
irsend: 000000000000c639 ellow
irsend: 0000000000008679 KEY_BLUE
irsend: 00000000000004fb exit2
irsend: 000000000000847b t.opt
irsend: 0000000000009c63 KEY_SUBTITLE
irsend: 0000000000008d72 KEY_STOP
irsend: 0000000000000df2 KEY_PLAY
irsend: 0000000000005da2 KEY_PAUSE
irsend: 000000000000f10e KEY_REWIND
irsend: 000000000000718e KEY_FORWARD
irsend: 0000000000007e81 simplink

Hiển thị lirctrạng thái:

Lệnh sau không được hiển thị bất kỳ lỗi nào

sudo /etc/init.d/lirc status

Đây là những gì tôi thấy trên thiết lập làm việc của mình:

$ sudo /etc/init.d/lirc status
● lirc.service - LSB: Starts LIRC daemon.
   Loaded: loaded (/etc/init.d/lirc)
   Active: active (running) since Wed 2017-08-09 08:21:34 UTC; 21min ago
  Process: 385 ExecStart=/etc/init.d/lirc start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/lirc.service
           ├─444 /usr/sbin/lircd --driver=default --device=/dev/lirc0 --uinput
           └─458 /usr/sbin/lircmd

Aug 09 08:36:22 JHD lircd-0.9.0-pre1[444]: accepted new client on /var/run/lirc/lircd
Aug 09 08:36:22 JHD lircd-0.9.0-pre1[444]: removed client
Aug 09 08:36:24 JHD lircd-0.9.0-pre1[444]: accepted new client on /var/run/lirc/lircd
Aug 09 08:36:25 JHD lircd-0.9.0-pre1[444]: removed client
Aug 09 08:36:26 JHD lircd-0.9.0-pre1[444]: accepted new client on /var/run/lirc/lircd
Aug 09 08:36:26 JHD lircd-0.9.0-pre1[444]: removed client
Aug 09 08:36:27 JHD lircd-0.9.0-pre1[444]: accepted new client on /var/run/lirc/lircd
Aug 09 08:36:27 JHD lircd-0.9.0-pre1[444]: removed client
Aug 09 08:36:29 JHD lircd-0.9.0-pre1[444]: accepted new client on /var/run/lirc/lircd
Aug 09 08:36:29 JHD lircd-0.9.0-pre1[444]: removed client

Trích dẫn định dạng sai được lấy từ hướng dẫn trực tuyến

Các trích dẫn được định dạng sai trong các tệp cấu hình gây ra một số rắc rối khiến tôi mất khá nhiều thời gian để giải quyết.

”/dev/lirc0″

thay vì trích dẫn thích hợp

"/dev/lirc0"

3

@Besi cảm ơn bạn rất nhiều. Nó thực sự hữu ích cho tôi.

Đối với tôi, tôi vẫn gặp vấn đề khi khởi động lại rasp của mình.

Tôi nghĩ tốt hơn là sử dụng để kích hoạt nó khi khởi động

systemctl enable lirc.service

hơn

sudo lircd --device /dev/lirc0

Và bây giờ bạn không cần phải chỉnh sửa / etc / mô-đun.

Đây là kịch bản cài đặt của tôi:

#!/usr/bin/env bash

# Echo in Blue
function echoBlue () {
  echo -e "\x1B[0;34m\033[1m${1}\033[0m"
}

# Echo in Red
function echoRed () {
  echo -e "\x1B[0;31m\033[1m${1}\033[0m"
}

echoRed "For me PinIN=4 and PinOUT=26"

# Ask Pin Number
echoBlue "Pin In Number ?"
read pinIN
echoBlue "Pin OUT Number ?"
read pinOUT

# Install Lirc
echoBlue "Install Lirc"
sudo apt-get install lirc

# Load Module
# For raspberry instead use /boot/config.txt
#sudo cat >> /etc/modules <<EOF
#lirc_dev
#lirc_rpi gpio_out_pin=4 gpio_in_pin=26
#EOF

# Edit your /boot/config.txt by entering the command below
if ! grep -Fxq "dtoverlay=lirc-rpi,gpio_out_pin=$pinIN,gpio_in_pin=$pinOUT" /boot/config.txt; then
  echoBlue "Edit /boot/config.txt"
  cat >> /boot/config.txt <<EOF

dtoverlay=lirc-rpi,gpio_out_pin=$pinIN,gpio_in_pin=$pinOUT
EOF
else
  echoRed "Line already exist in /boot/config.txt"
fi

# Backup hardware.conf
echoBlue "Backup hardware.conf"
sudo cp /etc/lirc/hardware.conf /etc/lirc/hardware.bak.conf

# Add hardware
echoBlue "Create hardware.conf"
sudo cat > /etc/lirc/hardware.conf <<EOF
########################################################
# /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=""
########################################################
EOF

# Now use systemcl instead of init.d
echoBlue "Stop lirc.service"
sudo systemctl stop lirc.service
echoBlue "Start lirc.service"
sudo systemctl start lirc.service
echoBlue "Status lirc.service"
sudo systemctl status lirc.service

# Launch it on startup
echoBlue "Launch it on startup"
echoBlue "o|O|y|Y ou n|N|*"
read repdrop
echo -e "\t"
case "$repdrop" in
  o|O|y|Y)
    sudo systemctl enable lirc.service
  ;;
  n|N|*)
    echoBlue "If you want to add it latter just run sudo systemctl enable lirc.service"
  ;;
esac

echoRed "You need to reboot pi"
echoRed "You have to check that /etc/lirc/lircd.conf exist or dl one on http://lirc.sourceforge.net/remotes"

0

Hướng dẫn tuyệt vời, rất chi tiết, nhưng nó không giải quyết được vấn đề của tôi. Sau nhiều giờ cố gắng, tôi vẫn nhận được thông báo "irsend: phần cứng không hỗ trợ gửi".

Cuối cùng tôi đã tìm thấy https://www.raspberrypi.org/forums/viewtopic.php?t=191425#p1213186

và nó đã giải quyết vấn đề của tôi Tóm lại...

sudo /usr/share/lirc/lirc-old2new

và khởi động lại lirc:

sudo /etc/init.d/lircd restart

Chúc mừng, Daniel

Sử dụng RPi 3 lircd-0.9.4c

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.