使用LIRC红外控制树莓派
认识红外传感器
红外传感器
引脚从上到下分别为
IO GND VCC
lirc的安装与使用
使用红外,首先需要安装树莓派的lirc模块
LIRC (Linux Infrared remote control)是一个linux系统下开源的软件包。这个软件可以让Linux系统接收及发送红外线信号。
注意事项:
安装:
sudo apt-get install lirc
修改以下几处:
sudo leafpad /etc/lirc/hardware.conf
LIRCD_ATGS=""
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc-rpi
终端执行
sudo leafpad /etc/modules
添加下面两行到模块配置文件:
lirc-dev
#红外接收模块的OUT接口接到了树莓派的GPIO18
#因为本例中未用到红外发射模块,所以后面的gpio_out_pin可以不写
lirc-rpi gpio_in_pin=18 gpio_out_pin=17
如测试时报错-ERROR: could not insert ‘lirc_rpi’: No&nbs
解决办法:
sudo vi /boot/config.txt
找到:
#dtoverlay=lirc-rpi
把前面的“#”号去掉, 然后重启系统即可
测试红外线接收功能
首先关闭lirc软件,然后执行如下命令:
sudo /etc/init.d/lirc stop
mode2 -d /dev/lirc0
这时候提示
no such file or directory
经过查看发现 /dev 下面没有 lirc0 这个module,发现在/boot/config.txt里面dtoverlay=lirc-rpi
取消注释,然后reboot,问题解决。
再次执行
mode2 -d /dev/lirc0
如果弹出
Partial read 8 bytes on /dev/[email protected]:~ $
发生错误,解决方案:
changed the following two lines in
/etc/lirc/lirc_options.conf
driver = default
(尝试过程中第一次仍然无效,但是第二次重装系统后正常,目前未知原理)
如果显示下面内容
pulse 629
space 518
pulse 627
space 523
pulse 628
space 523
pulse 631
space 517
pulse 629
则说明接收正常.
#协议
采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的"0";以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的"1
协议:
上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如下图。
| 引导码 | 用户识别码 |用户识别码反码 | 操作码 | 操作码反码 |
一个命令只发送一次,即使遥控器上的按键一直按着。但是会每110mS发送一次代码,直到遥控器按键释放。
重复码比较简单:一个9mS的AGC脉冲、2.25mS间隔、560uS脉冲。