红外通信原理

发送过程

数据 -> 编码 -> 调制 -> 发送电路

  1. 数据:假设发送的数据为 0XA5,二进制为:10100101

  2. 编码:用脉冲宽度编码(Pulse Width Encoding)来表示二进制数据。每个数据位由一系列的脉冲组成,逻辑0和逻辑1分别由不同的脉冲宽度表示。现假设如下:

逻辑0为:0.5ms高 + 0.5ms低; 逻辑1为:1ms高 + 0.5ms低;

  1. 调制:就是把编码数据放到一定频率的载波上面,即使用数据调制载波,形成一串脉冲信号
  2. 发送电路:即:红外灯珠对脉冲信号的发送 + 脉冲信号的放大

接收过程

接收电路 -> 解调 -> 解码 -> 数据

  1. 接收电路:接收发过来的红外信号
  2. 解调:当红外接收管接收到调制信号时,输出高电平,否则输出为低电平
  3. 解码:解调后将得到的一系列脉冲变为二进制
  4. 数据:解码后即可得到发来的数据,即 0XA5 (二进制为:10100101)

优缺点

红外通信的优点:抗电磁干扰、成本低

红外通信的缺点:传输效率低,易受到环境光干扰导致传输误码

载波

红外通信一般为 38K 载波,“载波” 简单来讲就是一段周期性的、不断震荡的波;

注:特别注意的是,对于一些非信号专业的新手来讲,虽然眼睛看到了该条件,但并没有进行思考,只当作“公理”给记住,这时在使用时往往会忽略掉。与福尔摩斯说过的话有异曲同工之处:“你只是用眼睛看,并不是在观察”,现在是:“你只是眼睛看到了,却没有在思考。”

我们可通过调制将信息加载到载波上,这样信息就会随着波的传播而发射出去了;波发出去后会受到外界环境光的干扰,这就可能会导致信息的丢失或篡改;理论上来讲:传播距离越远,信息丢失的概率越大。

38K频率

上面提到载波上的信息可能会丢失,那有没有什么预防措施呢?

这就要说到用 38K 载波的原因了:主要是为了提高抗干扰能力,尽量避免因环境光干扰导致的信息丢失或篡改;

另外的原因(来自百度):

这一频率的选择与常用的 455kHz 晶振密切相关。‌在发射端,‌通过对晶振进行整数分频,‌通常取分频系数为12,‌从而得到 38kHz 的载波频率。‌这种分频方式不仅技术上可行,‌而且经济实用,‌因为它利用了现有的成熟技术和组件,‌避免了开发高精度晶振的成本和复杂性。‌

此外,‌38kHz 的载波频率还具有其特定的优势。‌在红外通信中,‌使用 38kHz 的载波可以实现较高的通信质量和较远的通信距离,‌同时保持较低的功耗和成本。‌这种频率的选择也符合红外通信的基本需求,‌即在保证通信效果的同时,‌尽可能地降低系统成本和功耗。‌

值得注意的是:

38K 载波意味着每秒有38000个周期,单个周期的时间为1/38000S。‌这个时间长度代表了一个完整脉冲的时间,‌包括高电平和低电平的总时间。‌

但是我们红外通信需要的是高低电平均为1/38000S,因此我们定时器应配置为 76K ,这样每次进中断的时间就是1/38000S,那么产生的高、低电平就是1/38000S了。

OK,了解基本原理后就有大概的框架了:

  1. 首先要有个波形发生器,用来产生 38K 载波
  2. 制定自己的通信协议(也可以使用现有的协议,如: NEC协议)
  3. 代码实现