本帖最后由 小小毛 于 2021-3-24 22:18 编辑

            本文介绍的是一种非常普遍且便宜易实现的短距离无线通讯-红外通讯,电视机、空调虽无线控制方式也是五花八门了,但红外控制仍然占据着一席之地。

红外发射器(遥控器)、红外接收管
640?wx_fmt=png.jpg

1.1 红外信号调制解调原理

  平时所使用的红外遥控器传输的信号是经过调制过的信号,调制、解调是无线通信的经常用的通信手段,通信原理、高频电子课程上大家想必都已经很熟悉了。红外遥控器所使用的是38KHZ的载波频率,下面结合红外通讯做点简单介绍。

  调制:就是用待传送信号去控制某个高频信号的幅度、相位、频率等参量变化的过程,即用一个信号去装载另一个信号。比如我们的红外遥控信号要发送的时候,先经过38K调制,如图所示。

  原始信号就是我们要发送的一个数据“0”位或者一位数据“1”位,而所谓38K载波就是频率为38K的方波信号,调制后信号就是最终我们发射出去的波形。我们使用原始信号来控制38K载波,当信号是数据“0”的时候,38K载波毫无保留的全部发送出去,当信号是数据“1”的时候,不发送任何载波信号。

640?wx_fmt=png.jpg

  正常来讲,如果对经过调制的信号进行解调处理,是需要很多工作的,比如,信号检测、前级放大、后级放大、滤波、解调电路等,最后解调出原始信号,但红外通信的一体化接收头HS0038B,已经把这些电路全部集成到一起了,我们只需要把这个电路接上去,就可以直接输出我们所要的基带信号了,如图2所示,下图是我实际设计验证过的电路,也是很多开源设计上的原理,比较简单,只需要很少的外围器件。

640?wx_fmt=png.jpg   上图所示电路,当HS0038监测到有38K的红外信号时,就会在OUT引脚输出低电平,当没有38K的时候,OUT引脚就会输出高电平。原始信号对我们来说就是纯粹的高低电平了,采集的方法也有很多,此次我们是用单片机资源,输入捕获功能来采集数据。
1.2 红外通信协议介绍

  红外通信协议也是多种多样,只介绍一种常用的编码协议,NEC协议,载波也就是上面说到的38KHZ载波,NEC协议是基于PWM(脉冲宽度调制)来传输数据的。其特征如下:


  • 8 位地址和 8 位指令长度
  • 地址和命令 2 次传输(确保可靠性)
  • PWM 脉冲宽度调制,以发射红外载波的占空比代表“0”和“1”;
  • 载波频率为 38Khz
  • 位时间为 1.125ms 或 2.25ms

  NEC 码的位定义:一个脉冲对应 560us 的连续载波:

一个逻辑 1 传输需要 2.25ms(560us脉冲+1680us 低电平),

640?wx_fmt=png.jpg

一个逻辑 0 的传输需要 1.125ms(560us 脉冲+560us 低电平)。

640?wx_fmt=png.jpg

  而遥控接收头在收到脉冲的时候为低电平,在没有脉冲的时候为高电平,这样,我们在接收头端收到的信号为:逻辑 1 应该是 560us 低+1680us 高,逻辑 0 应该是 560us 低+560us 高。

  NEC 遥控指令的数据格式为:同步码头、地址码、地址反码、控制码、控制反码。同步码由一个 9ms 的低电平和一个 4.5ms 的高电平组成,地址码、地址反码、控制码、控制反码均是8 位数据格式。按照低位在前,高位在后的顺序发送。采用反码是为了增加传输的可靠性(可用于校验)。

  下面结合我们逻辑分析仪截取的数据波形,对着协议对上面提到的协议格式进行分析,下面是按键2的波形,对应的数据为98即01100010: 640?wx_fmt=png.jpg   从波形图中我们可以看出,显示同步码,9ms的低电平+4.5ms的高电平,紧接着是8位地址码,地址码为0,后面是地址反码,FF,在后面是数据码,刚好是98,也是我们2键按下后发送的数据,最后是数据反码。

640?wx_fmt=png.jpg

  可以看到在数据之后,还收到了几个脉冲,这是 NEC 码规定的连发码(由 9ms 低电平+2.5m 高电平+0.56ms 低电平+97.94ms 高电平组成),如果在一帧数据发送完毕之后,按键仍然没有放开,则发射重复码,即连发码,可以通过统计连发码的次数来标记按键按下的长短/次数。

640?wx_fmt=png.jpg

  至此,关于红外的一些基础知识就算啰嗦完了,没懂的可以留言一起讨论哈。