发 帖  
原厂入驻New

[经验] 香橙派RK3399开发板orangepi4连接红外接收传感器模块

2020-9-2 20:27:23  50 开发板
分享
0
红外接收头内部包括红外监测二极管放大器、限副器、带通滤波器、积分电路、比较器等。红外监测二极管检测到红外信号,然后把信号送到放大器和限幅器,限 幅器把脉冲幅度控制在一定的水平,而不论红外发射器和接收器的距离远近。交流信号进入带通滤波器(带通滤波器可以通过30khz到60khz的负载波), 再通过解调电路和积分电路进入比较器,比较器输出高低电平,还原出发射端的信号波形。
示例:
模块接收到遥控器发送的信息并打印出来。

引脚说明:
红外接收模块引脚说明.png

测试说明:
采用driver/media/rc/下面的 gpio-ir-recv.c
并加入下面驱动添加键值
drivers/media/rc/keymaps/rc-nec.c
#include <media/rc-map.h>
#include <linux/module.h>
#include <uapi/linux/lirc.h>
static struct rc_map_table hceng_nec[] = {
    { 0x45, KEY_CHANNELDOWN},
    { 0x46, KEY_CHANNEL},
    { 0x47, KEY_CHANNELUP},
    { 0x44, KEY_PREVIOUS},
    { 0x40, KEY_NEXT},
    { 0x43, KEY_PLAYPAUSE}, //
    { 0x07, KEY_VOLUMEDOWN},
    { 0x15, KEY_VOLUMEUP},
    { 0x09, KEY_EQUAL},

    { 0x16, KEY_0},
    { 0x19, KEY_F1},
    { 0x0d, KEY_F2},

    { 0x0c, KEY_1},
    { 0x18, KEY_2},
    { 0x5e, KEY_3},
    { 0x08, KEY_4},
    { 0x1c, KEY_5},
    { 0x5a, KEY_6},
    { 0x42, KEY_7},
    { 0x52, KEY_8}, //
    { 0x4a, KEY_9},
};
static struct rc_map_list hceng_nec_map = {
    .map = {
        .scan    = hceng_nec,
        .size    = ARRAY_SIZE(hceng_nec),
        .rc_proto = RC_PROTO_NEC, //RC_TYPE_UNKNOWN //echo nec > /sys/class/rc/rc0/protocols
        .name    = "rc-nec",
    }
};
static int __init init_rc_map_hceng_nec(void)
{
    return rc_map_register(&hceng_nec_map);
}
static void __exit exit_rc_map_hceng_nec(void)
{
    rc_map_unregister(&hceng_nec_map);
}
module_init(init_rc_map_hceng_nec)
module_exit(exit_rc_map_hceng_nec)
MODULE_LICENSE("GPL");
MODULE_AUTHOR("hceng");

添加内核配置:
CONFIG_RC_CORE=y
CONFIG_RC_MAP=y
CONFIG_LIRC=y
CONFIG_RC_DECODERS=y
CONFIG_IR_NEC_DECODER=y

在arch/arm64/boot/dts/rockchip/rk3399-orangepi-4.dts中加入如下代码:
ir: ir-receiver {
                compatible = "gpio-ir-receiver";
                gpios = <&gpio1 11>;
                linux,rc-map-name = "rc-nec";
        };

用evtest 来测试,安装evtest 用sudo apt-get install evtest 就可以
evtest
No device specIFied, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:      Typec_Headphone
/dev/input/event1:      gpio_ir_recv
/dev/input/event2:      adc-keys
/dev/input/event3:      realtek,rt5651-Codec Headphones
/dev/input/event4:      gpio-keys
Select the device event number [0-4]:
选择 gpio_ir_recv 驱动对应的 1 ,然后按遥控器 就会打印出相应键值

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表