文档章节

Cubieboard自带的红外接收(IR)测试成功

cubieboard
 cubieboard
发布于 2014/08/27 11:05
字数 1566
阅读 900
收藏 1

首先,你要自己有编译sun4i-ir.ko驱动,不过好像默认编译就带了这个驱动,所以,你们用的各个版本的内核应该都已经有驱动了,不过不一定自动加载了的。自己lsmod查看一下有木有,如果木有,就去驱动目录下insmod一下(insmod /lib/modules/3.0.57+(换3.0.57+为你的内核版本)/kernel/drivers/input/keyboard/sun4i-ir.ko)

先看看驱动信息,和被加载的位置:
未命名1.jpg 

未命名2.jpg 

如果无误,那就可以直接使用了~
要强调的是:请使用家里的电视机遥控器来测试,因为我试过空调遥控器,因为频率不对,接收不到,完全没反应。
未命名3.jpg 
先看看红外接收设备被加载在哪个位置,它其实是被当做键盘设备来加载的,当接收到信息的时候就会产生系统事件,所以我们只要查看这个设备产生的事件就好了。嗯,是input1,经测试,该事件的系统路径应该在/dev/input/event1

现在我们直接来在命令行里查看接收到的信息被解码后的数据,因为直接查看的话,一堆二进制0101在命令行里展示出来就是乱码,所以我使用hexdump将其转换为16进制查看。
未命名4.jpg 
看到了吧,收到的信息就是这些,你买个遥控器,把每一个键的信息记录下来之后,就可以写程序监听这些信号,实现遥控板操控CB了,哈哈

最后解释一下我猜测的 信号解读,比如:
00003f0 0b7f 0000 312b 0007 0000 0000 0000 0000
0000400 0b7f 0000 861b 000a 0001 005b 0001 0000
0000410 0b7f 0000 8621 000a 0000 0000 0000 0000
0000420 0b80 0000 a199 0000 0001 005b 0000 0000
0000430 0b80 0000 a19e 0000 0000 0000 0000 0000
0000440 0b80 0000 d641 0005 0001 005b 0001 0000
0000450 0b80 0000 d646 0005 0000 0000 0000 0000
0000460 0b80 0000 502c 000b 0001 005b 0000 0000
0000470 0b80 0000 5031 000b 0000 0000 0000 0000
0000480 0b81 0000 6b30 000b 0001 005b 0001 0000
0000490 0b81 0000 6b36 000b 0000 0000 0000 0000
00004a0 0b82 0000 8c76 0001 0001 005b 0000 0000
00004b0 0b82 0000 8c7b 0001 0000 0000 0000 0000
00004c0 0b82 0000 6927 0009 0001 005b 0001 0000
00004d0 0b82 0000 692c 0009 0000 0000 0000 0000
00004e0 0b82 0000 d320 000e 0001 005b 0000 0000
00004f0 0b82 0000 d325 000e 0000 0000 0000 0000
0000500 0b84 0000 6dc5 0005 0001 005b 0001 0000
0000510 0b84 0000 6dcb 0005 0000 0000 0000 0000
0000520 0b84 0000 dbd7 000a 0001 005b 0000 0000
0000530 0b84 0000 dbdc 000a 0000 0000 0000 0000

这是我反复按下和放开同一个键得到的信息,首先,可以确认的是,当你按下一个键,会产生一组信号,当你的红外移出IR的接收范围或者放开按键,又会产生一组信号。
我来截取其中4组信号来分析:
00004c0 0b82 0000 6927 0009 0001 005b 0001 0000  #这两行是第1次按下时产生的
00004d0 0b82 0000 692c 0009 0000 0000 0000 0000
00004e0 0b82 0000 d320 000e 0001 005b 0000 0000  
#这两行是第1次放开时产生的
00004f0 0b82 0000 d325 000e 0000 0000 0000 0000
0000500 0b84 0000 6dc5 0005 0001 005b 0001 0000
  #这两行是第2次按下时产生的
0000510 0b84 0000 6dcb 0005 0000 0000 0000 0000
0000520 0b84 0000 dbd7 000a 0001 005b 0000 0000
  #这两行是第2次放开时产生的
0000530 0b84 0000 dbdc 000a 0000 0000 0000 0000

首先抛开第一列(红色部分),那是hexdump打印出的解码后的信号的内存地址。

第二列,应该是每次按下和放开是相同的值,第二次按下就会+2,那我们可以理解为每一次按键产生信号的自增ID,如果多个遥控器在给他发信号,你接收信号可以不会乱,因为某次按下和放开的值始终相同。

第3列,不清楚,可能是第二列的扩展,或者是第4列的开始(前半部分)

第4、5列,看不懂了。。都是同一个键。。这些变化的数据肯定和键的值无关

每次按下同一个键的时候,不变的部分,就是后面4列了。而且我按完所有的键,每一组(两行)的第二行后4列始终是0.
那么是不是可以理解为,每一组第一行的数据后4列:

0001 005b 0001 0000  表示我遥控器上的xx键被按下  
0001 005b 0000 0000  表示我遥控器上的xx被按放开
0001 005b代表我的键的标示符,0001 0000 表示被按下 0000 0000 表示被放开
再进一步想,0x10000换成十进制就是65536 。应该没有人会用65536 表示按下 然后 0表示放开吧?
所以后面4个0应该也不用管,可能有其他用途把,那么0001就应该表示被按下, 0000表示放开。

猜解完毕!

2013-5-4更新:键的标示符也是只用1列数据表示,比如上面的005b ,而前面的0001是无关数据也就是说,005b 0001表示5b这个键按下 005b 0000表示它被放开

如有疑问请参考hipboi大神的答复(for Android):
http://cn.cubieboard.org/forum.p ... ad&tid=100#post_415


同时,我也上传两个驱动,以防万一有人没有这个驱动:
 sun4i-ir for 3.0.57 .zip (3.63 KB, 下载次数: 114)   for kernel 3.0.57+ only
 sun4i-ir for 3.0.57.zip (36.59 KB, 下载次数: 107)   for kernel 3.0.57 only
提示:版本不符的就不要下了,版本符合的,下了也不一定行,哈哈(因为module的全版本号是:vermagic:       3.0.57+ mod_unload modversions ARMv7 ,如果你查看系统其他驱动信息带了 PREEMPT或是其他字眼,反正只要与这串字符有差异,你就没法用,即使相同,也有可能报一些莫名其妙的错,不过不是驱动的问题,还是版本的问题)
所以,如果你的系统没有自带,还是自己编译吧。


后续步骤就是安装lirc,但我装了没配置成功。
这里只是抛砖引玉,希望各位有所发展,希望有能人能把 lirc 搞定就,然后给大家参考~

2013-5-4更新:lirc已经有人测试成功了,我也测过,可行,只是貌似还是不太完美。
地址见此处:http://cn.cubieboard.org/forum.php?mod=viewthread&tid=281


原文作者:WindLand
原文链接:http://forum.cubietech.com/forum.php?mod=viewthread&tid=133&extra=page%3D9

本文转载自:http://forum.cubietech.com/forum.php?mod=viewthread&tid=133&extra=page%3D9

cubieboard
粉丝 11
博文 64
码字总数 2651
作品 1
珠海
私信 提问
[教程]使用buildroot完全自定义自己的embedded linux系统(nand)

ubuntu, fedora, debian太过庞大了,你是否想完完全全的构建自己的embedded linux系统?本篇文章教你如何实现 编译环境: ubuntu 12.04(x8664) 目标环境: 1) linux-3.4内核 2) buildroot 2...

cubieboard
2014/08/29
509
0
cubieboard常见问题整理[不再更新]

以下均为本人自己想到而整理的,如有误欢迎指出。 本文不再更新,新问题统一在cubieboard官方论坛更新: http://cubie.cc/forum.php?mod=viewthread&tid=249 1.Cubieboard是什么? Cubieboard...

lanybass
2013/01/28
5.4K
18
在Cubieboard上通过GPIO成功点亮第一个LED【My first step on G...

如果你不知道什么是Cubieboard,点这里。 GPIO是干嘛的?你能看到的就是那96个pin针脚,可以用来:外接其他外设或传感器,比如LED灯,步进电机,继电器,温度传感器,红外传感器,超声波传感...

lanybass
2013/02/02
4.7K
5
我的 Cubieboard ARM 集群

Cubieboard hadoop 集群 hadoop是一个开源分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高 速运算和存储。Hadoop实...

Keepace
2013/08/20
4.1K
4
Cubieboard究竟几个意思?

Cubieboard究竟几个意思? Cubieboard是由一支中国珠海的技术团队Cubieteam开发的一个开源MiniPC,有些类似于英国人开发的树莓派,但是在硬件的性能上,接口丰富性上和扩展性上均优于后者,同...

benny0755
2013/08/16
4K
10

没有更多内容

加载失败,请刷新页面

加载更多

Activity启动模式二

上篇文章Activity启动模式一主要介绍了Activity的四种启动模式,这些启动模式都是在AndroidManifest中进行配置的。除此之外,Android系统还通过Intent类提供了一些标志位,同样可以指定Activ...

ltlovezh
55分钟前
7
0
三原色还原

1、Color Filter Array — CFA 随着数码相机、手机的普及,CCD/CMOS 图像传感器近年来得到广泛的关注和应用。 图像传感器一般都采用一定的模式来采集图像数据,常用的有 BGR 模式和 CFA 模式...

天王盖地虎626
今天
7
0
kubernetes pod exec接口调用

正文 一般生产环境上由于网络安全策略,大多数端口是不能为集群外部访问的。多个集群之间一般都是通过k8s的ApiServer组件提供的接口通信,如https://192.168.1.101:6443。所以在做云平台时,...

码农实战
今天
8
0
3_数组

3_数组

行者终成事
今天
8
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部