该项目允许任何人使用LIRC(LINUX红外遥控器)将树莓派变成通用遥控器。
这个项目中使用的东西
硬件
Raspberry Pi 3B 1个
红外接收器(通用) 1个
红外发射器(通用) 1个
开始
最近,我一直在从事一个项目,该项目将允许任何人将树莓派变成通用遥控器。为此,我一直在使用LIRC (LINUX红外遥控器),LIRC是一个软件包,可让您解码红外信号并将其发送到许多(但不是全部)常用遥控器。该项目为在Raspberry Pi 上试验IR LED和LIRC封装以及使用新功能扩展基本设置提供了一个起点,例如添加IR接收器以使用现有的遥控器生成LIRC远程配置文件。
步骤1:材料
- 树莓派2
- 940nm红外LED 40度-40度视角。明亮并调谐到940nm波长。
- 38khz红外接收器-以遥控频率接收红外信号
- PN2222晶体管-用于驱动IR LED
- 10k 电阻器-用于RPI GPIO和PN2222晶体管之间的电阻器
步骤2:电路
尽管您可以将IR LED直接连接到Raspberry Pi上的GPIO引脚,但是LED的输出信号将太弱,并且IR发送器的范围将非常有限。一个简单的晶体管电路通过放大从引脚输出的电流来解决该问题,从而提高了IR LED的信号强度。首先将IR LED放在面包板上,并将长脚(阳极)连接到3.3伏(引脚1),并将长脚(阴极)连接到晶体管的发射极。接下来,将一根接地线(引脚6)连接到晶体管的集电极,然后使用10K电阻将晶体管的基极连接到引脚22。
首先将您的IR LED放在面包板上,并将长脚(阳极)连接到3.3伏(引脚1),并将长脚(阴极)连接到晶体管的发射极。接下来,将一根接地线(引脚6)连接到晶体管的集电极,然后使用10K电阻器将晶体管的基极连接到引脚22。接下来,将IR接收器放在面包板上。在其右脚上运行3.3伏,并将其中脚接地。最后,将针脚23连接到IR接收器的左脚。
步骤3:LIRC安装和设置
首先,我们需要安装和配置LIRC以在RaspberryPi上运行:
sudo apt-get install lirc
输入以下命令添加到/etc/modules
文件中:
sudo cat >> /etc/modules <<EOF
lirc_dev
lirc_rpi gpio_in_pin=23 gpio_out_pin=22
EOF
通过输入以下命令来更改/etc/lirc/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
通过输入以下命令来编辑您/boot/config.txt
的:
cat >> /boot/config.txt <<EOF
dtoverlay=lirc-rpi,gpio_in_pin=23,gpio_out_pin=22
EOF
现在重新启动,lircd
以便它进行以下更改:
sudo /etc/init.d/lirc stop
sudo /etc/init.d/lirc start
步骤4:测试红外线接收器
测试IR接收器相对简单。运行以下两个命令以停止lircd
并开始从IR接收器输出原始数据:
sudo /etc/init.d/lirc stop
mode2 -d /dev/lirc0
将遥控器对准IR接收器,然后按一些按钮。您应该会看到以下内容:
space 16300
pulse 95
space 28794
pulse 80
space 19395
pulse 83
space 402351
pulse 135
space 7085
pulse 85
space 2903
如果不这样做,则可能是某些配置错误。仔细检查您是否已正确连接所有设备,并且未交叉任何电线。我强烈建议参考我上面链接的示意图。我在上面链接到的RaspberryPi论坛线程中也存在一些麻烦的建议咨询。最后-您可能想在黑暗的房间里这样做。我发现我的台灯和头灯会使IR接收器认为它正在接收有效信号。
步骤5:测试IR LED
您将需要找到用于遥控器的现有LIRC配置文件,或者使用IR接收器生成新的LIRC配置文件(在此处查找现有的远程配置文件)。就我而言,我创建了一个新的LIRC配置文件。为此,请阅读LIRC随附的irrecord 应用程序上的文档。
当使用irrecord时,它会要求您在编程按钮时给它们命名。在开始之前,请确保先运行irrecord --list-namespace
以查看有效名称。
这是我运行以生成远程配置文件的命令:
# Stop lirc to free up /dev/lirc0
sudo /etc/init.d/lirc stop
# Create a new remote control configuration file (using /dev/lirc0) and save the output to ~/lircd.conf
irrecord -d /dev/lirc0 ~/lircd.conf
# Make a backup of the original lircd.conf file
sudo mv /etc/lirc/lircd.conf /etc/lirc/lircd_original.conf
# Copy over your new configuration file
sudo cp ~/lircd.conf /etc/lirc/lircd.conf
# Start up lirc again
sudo /etc/init.d/lirc start
完成远程配置文件并将其保存/添加到远程文件后,/etc/lirc/lircd.conf
可以尝试测试IR LED。我们将使用LIRC附带的irsend 应用程序来方便发送命令。您一定要查看文档以了解有关选项的更多信息irsend
。
这是我运行以测试我的IR LED的命令(使用我创建的“ Roku”远程配置文件):
# List all of the commands that LIRC knows for 'Roku'
irsend LIST Roku ""
# Send the KEY_POWER command once
irsend SEND_ONCE Roku KEY_POWER
# Send the KEY_VOLUMEDOWN command once
irsend SEND_ONCE Roku KEY_VOLUMEDOWN
我通过将红外灯对准我的Roku接收器并测试是否可以打开它并按Enter来测试它是否有效。
步骤6:结束
翻译自:https://www.hackster.io/austin-stanton/creating-a-raspberry-pi-universal-remote-with-lirc-2fd581