作为水壶,遥控器读取

长期以来,我一直想将一个IR接收器(1838B)和一个IR发射器(5毫米IR二极管,940 nm,大约80度的发射角)连接到Raspberry,以了解它们将如何工作以及如何使用它们。这样的一天来了。

在研究了包括Habr的材料在内的问题之后,我意识到除了IR二极管和IR接收器之外,您还需要一个晶体管和几个电阻,这些电阻有点压抑。接收器更容易-它随套件一起提供,但晶体管不足以容纳二极管,但仍然决定尝试,但是如果能解决的话该怎么办?原来...

基本上,我在浩瀚的地方找到了所有必要的信息,但是在每种材料中都遗漏了一点,因此我必须自己思考一下。这种情况特别复杂,因为我是编程的茶壶,所以有些时候并不容易,所以我将尝试与我逐步描述所有内容并尽可能详细的相同的那些。

因此,IR接收器模块已连接到GPIO23,gnd和3.3V-上面有相应的符号。在GPIO和3.3V之间有一个10k的电阻。LED-通过一个1kΩ电阻连接到GPIO22(阳极)和gnd(阴极)。

接下来-安装LIRC

sudo apt-get install lirc

编辑文件/ etc /模块:

sudo nano /etc/modules

将行添加到文件中:

lirc_dev
lirc_rpi gpio_in_pin=23 gpio_out_pin=22

其中:
gpio_in_pin = 23-接收器连接的引脚。
gpio_out_pin = 22-发送器的引脚。

编辑文件/etc/lirc/hardware.conf:

sudo nano  /etc/lirc/hardware.conf

应该是这样的:

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

sudo nano  /boot/config.txt

将行添加到文件中:

dtoverlay=lirc-rpi,gpio_in_pin=23,gpio_out_pin=22

其中:
gpio_in_pin = 23-接收器连接的引脚。
gpio_out_pin = 22-发送器的引脚。

重新启动树莓:

sudo reboot

设置完成,您现在可以检查所有工作方式。

检查红外线接收器

停止lirc守护程序:

sudo /etc/init.d/lirc stop

使用以下命令检查接收器的操作:

mode2 -d /dev/lirc0

现在,我们拿起任何遥控器,然后按按钮,直达接收器。数字应贯穿屏幕。

一定有这样的东西
space 1805
pulse 315
space 122
pulse 215
space 731
pulse 232
space 122
pulse 214
space 1067
pulse 1379
space 114
pulse 210

创建一个遥控器图像

现在,最有趣的是记录您(或几个)遥控器的配置,以便程序将来自遥控器的IR信号与按钮的名称进行匹配,并在将来使用该信号。

为此,请使用lirc附带的irrecord程序。

irrecord -d /dev/lirc0 ~/aa59-00741a.conf

如果aa59-00741a是我的遥控器的型号,则可以使用任何其他名称。在此示例中,配置文件保存在主文件夹中。

启动后,您需要按照屏幕上的提示(英文)进行操作。

俄语简要说明
1)
2) Enter
3)
4) Enter
5) , . , 10
6)
7)
8) ,
9) Enter

输入按钮名称时,最好使用连接到程序中的列表。

一长串按钮(使用irrecord --list-namespace命令显示)
KEY_0
KEY_102ND
KEY_1
KEY_2
KEY_3
KEY_4
KEY_5
KEY_6
KEY_7
KEY_8
KEY_9
KEY_A
KEY_AB
KEY_ADDRESSBOOK
KEY_AGAIN
KEY_ALTERASE
KEY_ANGLE
KEY_APOSTROPHE
KEY_ARCHIVE
KEY_AUDIO
KEY_AUX
KEY_B
KEY_BACK
KEY_BACKSLASH
KEY_BACKSPACE
KEY_BASSBOOST
KEY_BATTERY
KEY_BLUE
KEY_BLUETOOTH
KEY_BOOKMARKS
KEY_BREAK
KEY_BRIGHTNESS_CYCLE
KEY_BRIGHTNESSDOWN
KEY_BRIGHTNESSUP
KEY_BRIGHTNESS_ZERO
KEY_BRL_DOT10
KEY_BRL_DOT1
KEY_BRL_DOT2
KEY_BRL_DOT3
KEY_BRL_DOT4
KEY_BRL_DOT5
KEY_BRL_DOT6
KEY_BRL_DOT7
KEY_BRL_DOT8
KEY_BRL_DOT9
KEY_C
KEY_CALC
KEY_CALENDAR
KEY_CAMERA
KEY_CANCEL
KEY_CAPSLOCK
KEY_CD
KEY_CHANNEL
KEY_CHANNELDOWN
KEY_CHANNELUP
KEY_CHAT
KEY_CLEAR
KEY_CLOSE
KEY_CLOSECD
KEY_COFFEE
KEY_COMMA
KEY_COMPOSE
KEY_COMPUTER
KEY_CONFIG
KEY_CONNECT
KEY_CONTEXT_MENU
KEY_COPY
KEY_CUT
KEY_CYCLEWINDOWS
KEY_D
KEY_DASHBOARD
KEY_DATABASE
KEY_DEL_EOL
KEY_DEL_EOS
KEY_DELETE
KEY_DELETEFILE
KEY_DEL_LINE
KEY_DIGITS
KEY_DIRECTION
KEY_DIRECTORY
KEY_DISPLAY_OFF
KEY_DISPLAYTOGGLE
KEY_DOCUMENTS
KEY_DOLLAR
KEY_DOT
KEY_DOWN
KEY_DVD
KEY_E
KEY_EDIT
KEY_EDITOR
KEY_EJECTCD
KEY_EJECTCLOSECD
KEY_EMAIL
KEY_END
KEY_ENTER
KEY_EPG
KEY_EQUAL
KEY_ESC
KEY_EURO
KEY_EXIT
KEY_F10
KEY_F11
KEY_F12
KEY_F13
KEY_F14
KEY_F15
KEY_F1
KEY_F16
KEY_F17
KEY_F18
KEY_F19
KEY_F20
KEY_F21
KEY_F22
KEY_F23
KEY_F24
KEY_F2
KEY_F
KEY_F3
KEY_F4
KEY_F5
KEY_F6
KEY_F7
KEY_F8
KEY_F9
KEY_FASTFORWARD
KEY_FAVORITES
KEY_FILE
KEY_FINANCE
KEY_FIND
KEY_FIRST
KEY_FN
KEY_FN_1
KEY_FN_2
KEY_FN_B
KEY_FN_D
KEY_FN_E
KEY_FN_ESC
KEY_FN_F
KEY_FN_F10
KEY_FN_F1
KEY_FN_F11
KEY_FN_F12
KEY_FN_F2
KEY_FN_F3
KEY_FN_F4
KEY_FN_F5
KEY_FN_F6
KEY_FN_F7
KEY_FN_F8
KEY_FN_F9
KEY_FN_S
KEY_FORWARD
KEY_FORWARDMAIL
KEY_FRAMEBACK
KEY_FRAMEFORWARD
KEY_FRONT
KEY_G
KEY_GAMES
KEY_GOTO
KEY_GRAPHICSEDITOR
KEY_GRAVE
KEY_GREEN
KEY_H
KEY_HANGEUL
KEY_HANJA
KEY_HELP
KEY_HENKAN
KEY_HIRAGANA
KEY_HOME
KEY_HOMEPAGE
KEY_HP
KEY_I
KEY_INFO
KEY_INSERT
KEY_INS_LINE
KEY_ISO
KEY_J
KEY_K
KEY_KATAKANA
KEY_KATAKANAHIRAGANA
KEY_KBDILLUMDOWN
KEY_KBDILLUMTOGGLE
KEY_KBDILLUMUP
KEY_KEYBOARD
KEY_KP0
KEY_KP1
KEY_KP2
KEY_KP3
KEY_KP4
KEY_KP5
KEY_KP6
KEY_KP7
KEY_KP8
KEY_KP9
KEY_KPASTERISK
KEY_KPCOMMA
KEY_KPDOT
KEY_KPENTER
KEY_KPEQUAL
KEY_KPJPCOMMA
KEY_KPLEFTPAREN
KEY_KPMINUS
KEY_KPPLUS
KEY_KPPLUSMINUS
KEY_KPRIGHTPAREN
KEY_KPSLASH
KEY_L
KEY_LANGUAGE
KEY_LAST
KEY_LEFT
KEY_LEFTALT
KEY_LEFTBRACE
KEY_LEFTCTRL
KEY_LEFTMETA
KEY_LEFTSHIFT
KEY_LINEFEED
KEY_LIST
KEY_LOGOFF
KEY_M
KEY_MACRO
KEY_MAIL
KEY_MAX
KEY_MEDIA
KEY_MEDIA_REPEAT
KEY_MEMO
KEY_MENU
KEY_MESSENGER
KEY_MHP
KEY_MINUS
KEY_MODE
KEY_MOVE
KEY_MP3
KEY_MSDOS
KEY_MUHENKAN
KEY_MUTE
KEY_N
KEY_NEW
KEY_NEWS
KEY_NEXT
KEY_NEXTSONG
KEY_NUMERIC_0
KEY_NUMERIC_1
KEY_NUMERIC_2
KEY_NUMERIC_3
KEY_NUMERIC_4
KEY_NUMERIC_5
KEY_NUMERIC_6
KEY_NUMERIC_7
KEY_NUMERIC_8
KEY_NUMERIC_9
KEY_NUMERIC_POUND
KEY_NUMERIC_STAR
KEY_NUMLOCK
KEY_O
KEY_OK
KEY_OPEN
KEY_OPTION
KEY_P
KEY_PAGEDOWN
KEY_PAGEUP
KEY_PASTE
KEY_PAUSE
KEY_PAUSECD
KEY_PC
KEY_PHONE
KEY_PLAY
KEY_PLAYCD
KEY_PLAYER
KEY_PLAYPAUSE
KEY_POWER
KEY_POWER2
KEY_PRESENTATION
KEY_PREVIOUS
KEY_PREVIOUSSONG
KEY_PRINT
KEY_PROG1
KEY_PROG2
KEY_PROG3
KEY_PROG4
KEY_PROGRAM
KEY_PROPS
KEY_PVR
KEY_Q
KEY_QUESTION
KEY_R
KEY_RADIO
KEY_RECORD
KEY_RED
KEY_REDO
KEY_REFRESH
KEY_REPLY
KEY_RESERVED
KEY_RESTART
KEY_REWIND
KEY_RFKILL
KEY_RIGHT
KEY_RIGHTALT
KEY_RIGHTBRACE
KEY_RIGHTCTRL
KEY_RIGHTMETA
KEY_RIGHTSHIFT
KEY_RO
KEY_S
KEY_SAT
KEY_SAT2
KEY_SAVE
KEY_SCALE
KEY_SCREEN
KEY_SCROLLDOWN
KEY_SCROLLLOCK
KEY_SCROLLUP
KEY_SEARCH
KEY_SELECT
KEY_SEMICOLON
KEY_SEND
KEY_SENDFILE
KEY_SETUP
KEY_SHOP
KEY_SHUFFLE
KEY_SLASH
KEY_SLEEP
KEY_SLOW
KEY_SOUND
KEY_SPACE
KEY_SPELLCHECK
KEY_SPORT
KEY_SPREADSHEET
KEY_STOP
KEY_STOPCD
KEY_SUBTITLE
KEY_SUSPEND
KEY_SWITCHVIDEOMODE
KEY_SYSRQ
KEY_T
KEY_TAB
KEY_TAPE
KEY_TEEN
KEY_TEXT
KEY_TIME
KEY_TITLE
KEY_TUNER
KEY_TV
KEY_TV2
KEY_TWEN
KEY_U
KEY_UNDO
KEY_UNKNOWN
KEY_UP
KEY_UWB
KEY_V
KEY_VCR
KEY_VCR2
KEY_VENDOR
KEY_VIDEO
KEY_VIDEO_NEXT
KEY_VIDEOPHONE
KEY_VIDEO_PREV
KEY_VOICEMAIL
KEY_VOLUMEDOWN
KEY_VOLUMEUP
KEY_W
KEY_WAKEUP
KEY_WIMAX
KEY_WLAN
KEY_WORDPROCESSOR
KEY_WWW
KEY_X
KEY_XFER
KEY_Y
KEY_YELLOW
KEY_YEN
KEY_Z
KEY_ZENKAKUHANKAKU
KEY_ZOOM
KEY_ZOOMIN
KEY_ZOOMOUT
KEY_ZOOMRESET
BTN_0
BTN_1
BTN_2
BTN_3
BTN_4
BTN_5
BTN_6
BTN_7
BTN_8
BTN_9
BTN_A
BTN_B
BTN_BACK
BTN_BASE
BTN_BASE2
BTN_BASE3
BTN_BASE4
BTN_BASE5
BTN_BASE6
BTN_C
BTN_DEAD
BTN_DIGI
BTN_EXTRA
BTN_FORWARD
BTN_GAMEPAD
BTN_GEAR_DOWN
BTN_GEAR_UP
BTN_JOYSTICK
BTN_LEFT
BTN_MIDDLE
BTN_MISC
BTN_MODE
BTN_MOUSE
BTN_PINKIE
BTN_RIGHT
BTN_SELECT
BTN_SIDE
BTN_START
BTN_STYLUS
BTN_STYLUS2
BTN_TASK
BTN_THUMB
BTN_THUMB2
BTN_THUMBL
BTN_THUMBR
BTN_TL
BTN_TL2
BTN_TOOL_AIRBRUSH
BTN_TOOL_BRUSH
BTN_TOOL_DOUBLETAP
BTN_TOOL_FINGER
BTN_TOOL_LENS
BTN_TOOL_MOUSE
BTN_TOOL_PEN
BTN_TOOL_PENCIL
BTN_TOOL_QUADTAP
BTN_TOOL_RUBBER
BTN_TOOL_TRIPLETAP
BTN_TOP
BTN_TOP2
BTN_TOUCH
BTN_TR
BTN_TR2
BTN_TRIGGER
BTN_WHEEL
BTN_X
BTN_Y
BTN_Z

结果是一个配置文件-在我们的例子中为aa59-00741a.conf,它将保存在主文件夹中。在生成的文件中,我通过#注释添加了按钮,以了解按钮的含义。

我的文件aa59-00741a.conf
# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.9.0-pre1(default) on Wed Feb 10 02:11:48 2016
#
# contributed by Malina-shop.ru
#
# brand: Samsung /home/pi/aa59-00741a.conf.conf
# model no. of remote control: aa59-00741a
# devices being controlled by this remote: Color TV screen
#

begin remote

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

header 4565 4509
one 570 1677
zero 570 553
ptrail 570
pre_data_bits 16
pre_data 0xE0E0
gap 108301
toggle_bit_mask 0x0

begin codes
KEY_POWER 0x40BF
KEY_CYCLEWINDOWS 0x807F #SOURCE
KEY_1 0x20DF
KEY_2 0xA05F
KEY_3 0x609F
KEY_4 0x10EF
KEY_5 0x906F
KEY_6 0x50AF
KEY_7 0x30CF
KEY_8 0xB04F
KEY_9 0x708F
KEY_PREVIOUS 0xC837 #PRE-CH
KEY_0 0x8877
KEY_TEXT 0x34CB #TTX/MIX
KEY_MUTE 0xF00F
KEY_CHANNELUP 0x48B7
KEY_CHANNELDOWN 0x08F7
KEY_VOLUMEUP 0xE01F
KEY_VOLUMEDOWN 0xD02F
KEY_LIST 0xD629 #CH LIST
KEY_MEDIA 0x31CE #MEDIA.P
KEY_MENU 0x58A7
KEY_EPG 0xF20D #GUIDE
BTN_TL 0xD22D #TOOLS
KEY_UP 0x06F9
BTN_RIGHT 0x46B9
KEY_LEFT 0xA659
KEY_DOWN 0x8679
KEY_OK 0x16E9 #ENTER
BTN_BACK 0x1AE5 #RETURN
KEY_EXIT 0xB44B
KEY_A 0x36C9 #RED
KEY_B 0x28D7 #GREEN
KEY_C 0xA857 #YELLOW
KEY_D 0x6897 #BLUE
BTN_START 0xFC03 #E-MANUAL
KEY_SUBTITLE 0xA45B #AD/SUBT.
KEY_STOP 0x629D
KEY_REWIND 0xA25D
KEY_PLAY 0xE21D
KEY_PAUSE 0x52AD
KEY_FORWARD 0x12ED
KEY_P 0x7C83 #P.SIZE
end codes

end remote

需要为每个遥控器执行此操作。配置文件包含一个重要字段-名称。这是lirc用来确定从哪个文件中接收命令的设备的名称(在我的情况下为Samsung_TV)。

生成的文件被复制到某处。我放入/ etc / lirc / rc文件夹,并将该行添加到/etc/lirc/lircd.conf文件中:

include "/etc/lirc/rc/aa59-00741a.conf"

因此,lirc配置文件将从/ etc / lirc / rc文件夹中的aa59-00741a.conf文件获取有关我的遥控器的信息。我认为,这是将有关控制台配置的信息添加到程序设置的最简单方法。

重新启动lirc:

sudo /etc/init.d/lirc restart

现在,lirc可以使用远程控制数据通过发送器进行发送,或者识别来自远程控制的命令并启动任何响应于覆盆子的操作。

检查Lirc和IR发射器的操作

为此,我们将发射器放置在尽可能靠近设备的位置(以进行验证,然后有可能通过实验确定其工作距离),并在终端中编写命令,例如:

irsend SEND_ONCE Samsung_TV KEY_POWER

irsend是用于控制发送器的程序;
SEND_ONCE-一次性信号发送的属性;
Samsung_TV-配置文件中的设备名称(在名称字段中);
KEY_POWER-要从配置文件发送的命令的名称。

这样,电视可以打开或关闭。使用此命令,我可以打开或关闭电视。

再次检查IR接收器,以及是否正确识别配置文件

在终端中,输入命令:

irw

之后,按下遥控器的按钮时,将显示配置文件中的名称。

下一步是通过浏览器控制发送器,但我尚未对此进行研究。

乐于评论。

Source: https://habr.com/ru/post/zh-CN390455/


All Articles