第1章 前言

要在树莓派3 (A20)android系统上实现红外遥控器,因为super3上有红外接收头,所以可以直接支持红外遥控器,可以把树莓派3应用到家庭控制当中。当作网络机顶盒用

树莓派3的红外遥控器,还有鼠标功能,也就是它可以代替的部份的鼠标功能,因为在有些软件,不支持纯遥控支持,必须要鼠标箭头去它按钮的,就可以用到这个功能了

只要轻轻按一下右下角这个“箭头”按钮,就可以用方向键来控制鼠标箭头了

遥控器的购买链接

http://item.taobao.com/item.htm?&id=37686098339

第2章 硬件相关2.1电路原理图

树莓派3的红外接收头对应的IO口是PB4,如下图

2.2 实物图

板子上的红外接收头位置

遥控器外观和对应编码

注意,上面的客服码,ff是高8位,00是低8位,所以add_core=0xff00;

第3章软件修改3.1 修改fex配置文件(sys_config.fex) 修改superoidlicheetoolspackchipssun7iconfigsandroidsmfy-super3sys_config.fex 如下项

[ir_para]ir_used = 1ir_rx = port:PB04<2>配置PB04作为红外输放脚(匹配我们内部的驱动)。3.2 修改kernel3.2.1 修改ADDR_CODE 在文件licheelinux-3.4driversinputkeyboardir-keymap.h中,根据自己的遥控器的地址码修改如下代码

#define IR_ADDR_CODE (0xff00)譬如说,如果地址码为0x7f80,则修改成

#define IR_ADDR_CODE (0x7f80)

如果发现无效,则将两个字节的值交换一下位置,修改成

#define IR_ADDR_CODE (0x807f) 本教程所针对的这个遥控器地址码是0xff00

3.2.2 修改sun7i-ir.c修改licheelinux-3.4driversinputkeyboardsun7i-ir.c 文件

if(SCIRPT_ITEM_VALUE_TYPE_INT != script_get_item("ir_para", "ir_wakeup", &ir_wakeup)){

pr_err("%s: ir_wakeup script_get_item error. n",__func__ );

ir_wakeup = 0;

}

if(SCIRPT_ITEM_VALUE_TYPE_INT != script_get_item("ir_para", "power_key", &power_key)){

pr_err("%s: power_key script_get_item error. n",__func__ );

power_key = 0x4d;

}

if(SCIRPT_ITEM_VALUE_TYPE_INT != script_get_item("ir_para", "ir_addr_code", &ir_addr_code)){

pr_err("%s: ir_addr_code script_get_item error. n",__func__ );

ir_addr_code = 0xff00;

//----这里重新指定了code,所以,修改了上面的 IR_ADDR_CODE,还要改这里才会生效 }

3.2.3 编译kernel 在lichee目录下执行 #./build.sh–p sun7i_android编译内核 然后在android42目录下#extract-bsp 拷贝sun7i-ir.ko到module目录

3.2.4 手动调试(新手可跳过)Step1: 树莓派3进入android系统,连接USB线到PC上,通过adb命令进到PC# adb shellStep2: 在adbshell里,# rmmod sun7i-ir.ko卸载原来的驱动Step3: 拷贝新编译的sun7i-ir.ko到super3根目录PC# adb pushC://sun7i-ir.ko /Step4: 再次adbshell进到super3设备命令行,#insmod sun7i-ir.ko手动加载驱动模块#getevent然后对着super3按遥控器,如果前面的地址码改对了,那这里就应该看得到按遥控会有key event打印出来,这就表示android底层已识别出了遥控器了,向上发了event了,此时可以放心地进行下一步

3.3 修改kl文件3.3.1修改sun7i-ir.kl文件superoidandroid42devicesoftwinnersmfy-super3sun7i-ir.kl文件针对前面2.3章里的图2.3 红外遥控器码表key 64 BACK WAKE_DROPPEDkey 4 MENU WAKE_DROPPEDkey 85 DPAD_CENTER WAKE_DROPPEDkey 22 DPAD_DOWN WAKE_DROPPEDkey 70 DPAD_UP WAKE_DROPPEDkey 6 HOME WAKEkey 71 DPAD_LEFT WAKE_DROPPEDkey 21 DPAD_RIGHT WAKE_DROPPEDkey 16 VOLUME_UP WAKEkey 20 VOLUME_DOWN WAKEkey 24 POWER WAKEkey 12 0 WAKEkey 84 1 WAKEkey 72 2 WAKEkey 7 3 WAKEkey 80 4 WAKEkey 18 5 WAKEkey 17 6 WAKEkey 76 7 WAKEkey 14 8 WAKEkey 13 9 WAKEkey 8 MUTE WAKEkey 86 PROG_RED WAKEkey 91 PROG_BLUE WAKEkey 87 PROG_GREEN WAKEkey 31 PROG_YELLOW WAKEkey 23 MOUSE WAKEkey 75 DEL WAKE

3.3.2 调试(新手可跳过) 如果是android老手,这个时候,可以手动调试一下,以保证这个地址码是对的,可以立即看得到修改的效果Step1: 通过USB连接树莓派3,PC上cmd进命令行, PC# adb push C:// sun7i-ir.kl/system/usr/keylayout/上面命令的前题:我们已把sun7i-ir.kl文件放在了PC的C盘根目录下 如上命令是把sun7i-ir.kl文件拷贝到super3的/system/usr/keylayout/目录下替换原文件 Step2: 重启树莓派3,进入android系统 此时应该遥控器已经可以用了,可以用上下左右键进行选择。3.4鼠标功能支持

修改build.prop文件 进入super3的终端命令行修改如下项ro.softmouse.left.code=71ro.softmouse.right.code=21ro.softmouse.top.code=70ro.softmouse.bottom.code=22ro.softmouse.leftbtn.code=85第4章 编译打包

#make –j4 编译到系统#pack打包img

大功告成了

http://item.taobao.com/item.htm?&id=15301429836



android如何编程红外遥控,全志A20[android教程]-红外遥控器调试相关推荐

  1. 红外遥控C语言程序设计,光电红外遥控开关设计(光电系统课程设计)【PCB图仿真图单片机C语言分工心得】..doc...

    光电红外遥控开关设计(光电系统课程设计)[PCB图仿真图单片机C语言分工心得]. 本科生课程论文 论文题目光电红外遥控开关设计课程名称光电系统设计学生姓名学号所在学院所在班级指导教师 目 录 摘要3 ...

  2. 红外遥控实现回充原理红外发射与调制信号

    遥控红外通信原理 在实际的通信领域,发出来的信号一般有较宽的频谱,而且都是在比较低的频率段分布大量的能量,所以称之为基带信号,这种信号是不适合直接在信道中传输的.为便于传输.提高抗干扰能力和有效的利用 ...

  3. 步进电机红外遥控C语言程序,单片机红外遥控+步进电机+1602液晶显示c语言源程序...

    这是我做的红外遥控控制的1602显示转速和转向的步进电机c语言原程序,已经调试成功!有些模块是以前做其他实验时做的,现在是直接调用的,包括1602液晶显示技术,TC9012红外解码,然后就是四相步进电 ...

  4. c语言红外解码程序,[转载]红外遥控和C语言51红外遥控解码程序设计实例

    什么是红外线?人的眼睛能看到的可见光按波长从长到短排列,依次为红.橙.黄.绿.青.蓝.紫.其中红光的波长范围为0.62-0.76μm:比红光波长还长的光叫红外线.红外遥控在生产和生活中应用越来越广泛, ...

  5. android obd编程,【图】DIY Android手机应用通过OBD读取行车电脑信息

    现在有多手机的智能驾驶应用程序,通过一个盒子,就能够让手机连接汽车并读取速度.温度.油耗.故障码等各种信息,为用户带来大便利.其实,这样的应用程序,有兴趣的话,也可以自己制作. 首先,要有硬件 ...

  6. 红外遥控c语言,NEC协议红外遥控器

    家电遥控器通信距离往往要求不高,而红外的成本比其它无线设备要低的多,所以家电遥控器应用中红外始终占据着一席之地.遥控器的基带通信协议很多,大概有几十种,常用的就有 ITT 协议.NEC 协议.Shar ...

  7. 红外遥控及Android手机红外遥控器开发

    一.红外遥控 红外遥控技术是通过红外技术.红外通信技术和遥控技术的结合实现的一种无线控制技术.由于红外线的波长较短,对障碍物的衍射能力较差,无法穿透墙壁,所以红外遥控术更适合应用在短距离直线控制的场合 ...

  8. Android智能手机编程笔试题,android智能手机编程

    spContent=为什么学习Android手机编程?自己适合学Android开发吗?零基础能学习吗?学Android应该学哪些技术呢?本课程以"任务驱动"为中心,"用中 ...

  9. 【Android】Android游戏编程之从零开始

    <Android游戏编程之从零开始>主要系统地讲解了Android游戏开发,从最基础部分开始,让零基础的Android初学者也能快速学习和掌握Android游戏开发.<Android ...

最新文章

  1. C:内存中供用户使用的存储空间
  2. 4-2 ADO.NET-查询和检索数据5
  3. 2019-04(2)Python学习
  4. Pl/sql 如何将oracle的表数据导出成excel文件?
  5. Java并发编程—定时器Timer底层原理
  6. eclipse2019-03设置代码编辑区背景为图片
  7. mysql创建新表失败_麻烦给我看一下为什么MySQL创建表格失败嘛
  8. 让Visual Studio 2013为你自动生成XML反序列化的类
  9. IT从业者几大职位薪酬对比
  10. 泡泡玛特回应与肯德基联名引发炒作:暂停食品行业的定制盲盒业务
  11. Spring Cloud Gray 微服务灰度中间件
  12. Cortex-M0+电源管理
  13. 7-4 走迷宫II(Dijkstra 算法)
  14. html实现名字滚动年会抽奖(附源码)
  15. 新一代容器技术———Podman
  16. CSP 202109-4 收集卡牌
  17. 创新案例分享 | 统计数据管理与挖掘分析平台助力民生统计
  18. 计算机专业电脑i5与i7的区别,电脑i5处理器和i7处理器有什么区别
  19. 【Docker系列】Docker Swarm 多节点集群
  20. Mysql之常见可视化管理工具

热门文章

  1. java窗口上 显示学号和姓名_java编程 完成下图所示的图形用户界面设计,要求在界面中输入个人的班级、学号、姓名信息后,点击“...
  2. log4j日志输出性能优化-缓存、异步
  3. charles的一个基本的使用
  4. 国产折叠屏手机:华为领航,跟随者众
  5. CPU也能速刷AlphaFold2?英特尔:请收下这份23倍通量优化指南
  6. 化工厂人员定位的实施,新导化工厂人员定位带来的效果
  7. Docker基础讲解狂神笔记(1/2)
  8. bzoj1905: Soldier 士兵控制的棋盘
  9. win10蓝牙开关不见了_山灵MW200评测:玩转高清蓝牙全编码,MMCX换线耳机必备升级线...
  10. QTextToSpeech 文本转语音输出