树莓派实现红外遥控电视

树莓派3B,网上买的红外收发模块,参考网上资料自己捯饬了下,如下:

1、安装LIRC软件

sudo apt-get install lirc


2、编辑config.txt 

sudo vim /boot/config.txt

添加
dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=17


3、参考网上资料编辑LIRC的配置文件

sudo vim /etc/lirc/hardware.conf

如下:

#Chosen Remote Control
REMOTE="None"
REMOTE_MODULES="lirc_rpi"
REMOTE_DRIVER="default"
REMOTE_DEVICE="/dev/lirc0"
REMOTE_SOCKET=""
REMOTE_LIRCD_CONF=""
REMOTE_LIRCD_ARGS="--uinput-listen"


#Chosen IR Transmitter
TRANSMITTER="None"
TRANSMITTER_MODULES="lirc_rpi"
TRANSMITTER_DRIVER="default"
TRANSMITTER_DEVICE="/dev/lirc0"
TRANSMITTER_SOCKET=""
TRANSMITTER_LIRCD_CONF=""
TRANSMITTER_LIRCD_ARGS="--uinput-listen"



4、 重启LIRC功能
sudo /etc/init.d/lirc stop
sudo /etc/init.d/lirc start


5、验证能够接收
sudo /etc/init.d/lirc stop

mode2 -d /dev/lirc0

使用任何红外线遥控器,对着红外收发板按下任意按键时,屏幕打印一堆space、pulse的内容,就说明红外线接收功能正常。



6、查看可用name
sudo /etc/init.d/lirc stop
irrecord –list-namespace   
(参数表示可用的按键名,记下来,后面录制的时候会让你手动输入这些name)

7、执行红外线编码录制命令

irrecord -d /dev/lirc0 ~/lircd.conf   (根据提示操作即可

录制完成可以在~/lircd.conf  中看到类似如下:

begin codes
          KEY_0                 0xAXXXXXX
end codes

<<<<<<<<<<

  name  ~/lircd.conf
  bits           32
  flags SPACE_ENC|CONST_LENGTH
  eps            30
  aeps          100   //怀疑此处是指误差范围30%


  header       9118  4393   //NEC格式,第一个完整 引导码:9 ms + 4.5 ms
  one           670  1579  //逻辑“1”是由0.56ms的38KHZ载波和1.68ms的无载波间隔组成
  zero          670   460   //逻辑“0”是由0.56ms的38KHZ载波和0.560ms的无载波间隔组成
  ptrail        671            //结束位是0.56ms
  repeat       9124  2153      //重复引导码:9 ms + 2.25 ms
  gap          107516         //两个引导脉冲上升沿之间的间隔都是108ms
  toggle_bit_mask 0x0                //若红外码为RC6码则需要获取toggle_bit_mask


      begin codes
          KEY_0                    0xA81B58A7
      end codes

  例如:KEY_0                    0xA81B58A7

get_lengths()通过采样值,计算出红外遥控码的特性。在获取红外的数据特征之后,get_lengths()调用get_scheme()函数来分析红外的协议。此例采用的是是NEC Protocol 的PWM( 脉冲宽度调制) 标准:

1)A81B表示16位用户代码;

2)58表示8位数据代码(0101 1000),A7表示8位取反的数据代码 (1010 0111);

需要注意的是:波形先是发低位地址再发高位地址,所以对应的KEY_0对应的键值是 1A(0001 1010)。

参考文章:

http://blog.csdn.net/zhangfei714/article/details/42424199
https://wenku.baidu.com/view/422790114431b90d6c85c73b.html
https://www.cnblogs.com/lijumiao/archive/2013/07/30/3225660.html

>>>>>>>>>>>

8、复制配置文件后,重启LIRC软件
sudo cp ~/lircd.conf /etc/lirc/lircd.conf
sudo /etc/init.d/lirc restart


9、发送红外命令
irsend LIST /home/xxx/lircd.conf “”   (查看录制的命令)
irsend SEND_ONCE /home/xxx/lircd.conf KEY_0  (发送录制的命令)


注意:

在使用irsend命令 时,提示如下:
irsend: could not connect to socket
irsend: No such file or directory;
说是需要启动lircd服务,执行如下:
sudo lircd -d /dev/lirc0
提示如下错误:
can't open or create the file /var/run/lirc;
No such file or directory;

你可以手动创建创建文件夹,sudo mkdir /var/run/lirc   ,然后 sudo lircd -d /dev/lirc0
但是,每次开机都要执行这两步。


如果不想每次都执行,可以在/etc/rc.local中的 exit 0 前添加
mkdir /var/run/lirc 
lircd -d /dev/lirc0

这样,应该就OK了。


你可能感兴趣的:(树莓派实现红外遥控电视)