目录

1、红外遥控器通信原理

2、NEC协议

3、实践


机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。

项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html


红外遥控器是我们常用的一种遥控设备。你可以用它控制电视、空调、音响等家用电器,同时也可以改造家里的电饭煲、咖啡机和微波炉等传统家电。想象一下只用一个遥控器就能搞定所有的家用电器控制,只需要搭配Arduino控制器、继电器和红外遥控器套件,就可以搭建一个智能家用电器平台。

1、红外遥控器通信原理

红外遥控器有两部分组成:红外发射装置(红外遥控器)和红外接收装置(红外接收头)。

  • 红外发射装置(红外遥控器)发出的信号是一连串的二进制脉冲码为了使其在无线传输过程中免受其他红外信号的干扰,通常都是先将其调制在特定的载波频率上,然后再经红外发射二极管发射出去。
  • 红外接收装置(红外接收头)内置接收管将红外发射管发射出来的光信号转换为微弱的电信号,此信号经由IC内部放大器进行放大,然后通过自动增益控制、带通滤波、解调变、波形整形后还原为遥控器发射出的原始编码,经由接收头的信号输出脚输入到电器上的编码识别电路。

2、NEC协议

想对某一遥控器进行解码必须要了解该遥控器的编码方式,我选用的这款遥控器产品使用的编码方式为:NEC协议。

NEC协议特点如下所示:

  • 8位地址位,8位命令位;
  • 为了可靠性地址位和命令位被传输两次;
  • 脉冲位置调制;
  • 载波频率38khz;
  • 每一位的时间为1.125ms或2.25ms。

NEC协议表示逻辑0和1的定义如下图:

具体协议分析如下所示:

按键按下立刻松开的发射脉冲典型序列如下所示:

注意:这是首先发送LSB(最低位)的协议

在上面的脉冲传输的地址为0x59命令为0x16。一个消息是由一个9ms的高电平开始,随后有一个4.5ms的低电平,(这两段电平组成引导码)然后由地址码和命令码。地址和命令传输两次。第二次所有位都取反,可用于对所收到的消息中的确认使用。总传输时间是恒定的,因为每一点与它取反长度重复。如果你不感兴趣, 你可以忽略这个可靠性取反,也可以扩大地址和命令,以每16位。

按键按下一段时间才松开的发射脉冲典型序列如下所示:

一个命令发送一次,即使在遥控器上的按键仍然按下。当按键一直按下时,第一个110ms的脉冲与上图一样,之后每110ms重复代码传输一次。这个重复代码是由一个9ms的高电平脉冲和一个2.25ms低电平和560μs的高电平组成。

重复脉冲典型序列如下所示:

注意:脉冲波形进入一体化接收头以后,因为一体化接收头里要进行解码、信号放大和整形,故要注意在没有红外信号时,其输出端为高电平,有信号时为低电平,故其输出信号电平正好和发射端相反。接收端脉冲大家可以通过示波器看到,结合看到的波形理解程序。

3、实践

根据NEC编码的特点和接收端的波形,本实验将接收端的波形分成四部分:引导码(9ms和4.5ms的脉冲)、地址码16位(包括8位的地址位和8位的地址的取反)、命令码16位(包括8位命令位和8位命令位的取反)、重复码(9ms、2.25ms、560us脉冲组成)。

利用定时器对接收到的波形的高电平段和低电平段进行测量,根据测量到的时间来区分:逻辑“0”、逻辑“1”、引导脉冲、重复脉冲。引导码和地址码只要判断是正确的脉冲即可,不用存储,但是命令码必须存储,因为每个按键的命令码都不同, 根据命令码来执行相应的动作。

设置遥控器上的几个按键VOL+:控制LED灯亮的;VOL-:作为控制蜂鸣器响。

实现代码如下所示:

和12岁小同志搞创客开发:如何驱动红外遥控器?相关推荐

  1. 和12岁小同志搞创客开发:手撕代码,做一款遥控灯

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  2. 和12岁小同志搞创客开发:手撕代码,做一款数字骰子

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  3. 和12岁小同志搞创客开发:手撕代码,做一款密室自动门

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  4. 和12岁小同志搞创客开发:手撕代码,做一款亮度可调节灯

    目录 1.PWM呼吸灯 2.亮度可调节灯 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/ca ...

  5. 和12岁小同志搞创客开发:手撕代码,做一款声控灯

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  6. 和12岁小同志搞创客开发:手撕代码,做一款人体感应灯

    目录 1.传感器原理 2.代码实践 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/categ ...

  7. 和12岁小同志搞创客开发:手撕代码,做一款温湿度检测器

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  8. 和12岁小同志搞创客开发:手撕代码,做一款火焰报警器

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  9. 和12岁小同志搞创客开发:手撕代码,做一款节拍电子鼓

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

最新文章

  1. ci ajax js,CodeIgniter4 AJAX请求
  2. Vertica的这些事lt;十一gt;—— Vertica 管理
  3. Android中处理崩溃异常 (转)
  4. MySql中添加用户/删除用户
  5. 机器学习文献中的英文(part1)
  6. mask属性是css3的吗_使用CSS3 mask(蒙版,遮罩)属性实现超酷按钮悬停动画
  7. 初探EntityFramework——空Code First模型
  8. switch全部游戏列表_敢把游戏当教材,免费提供给学生!EA今年将推出7款NS作品!...
  9. 如何在单例模式下禁止init
  10. 计算机操作员高级工试题一,计算机操作员高级工操作题复习资料
  11. C语言-printf变参函数与它的实参转换/转换模板
  12. mongodb 常用操作(转)
  13. Common Lisp
  14. LaTeX之表格中强制换行
  15. cad填充图案乱理石_「AutoCAD之填充」CAD图案填充的6个要点以及3个墙裂的建议...
  16. matlab carcasonne,【My songs】原创英文歌词翻译
  17. unity android 触屏,Unity 移动端触摸屏操作
  18. mysql5717开发设置怎么调回来_mysql5.7.17安装配置图文教程
  19. android 图标弹跳动画,动效教程 | 5 分钟快速制作弹跳加载小动画
  20. 用狼的处世哲学做SOHO(一)

热门文章

  1. 7-5 藏头诗 (15 分)
  2. 服务器性能 延时和丢包率,暗黑3服务器丢包率测试 双方实力相当_技嘉 G1.Sniper 5_主板评测-中关村在线...
  3. 想学习编程,该怎么开始,需要多长时间?
  4. Ubuntu(Linux)下的整站下载工具
  5. 华为首款Harmonyos摄像头,海雀科技首款HarmonyOS智能摄像头Pro亮相华为智慧屏新品发布会...
  6. 如果想当程序员,高中开始接触编程知识是否来得及
  7. 使用ls / 命令卡死,或者df -h 查看卡死解决办法
  8. Nwafu-OJ-1437 Problem h C语言实习题六——6.进制转换函数设计
  9. 如何快速配置OA、CRM、ERP等管理软件
  10. html5-图片热区