嵌入式之红外通信
红外通信原理
发送过程
数据 -> 编码 -> 调制 -> 发送电路
数据:假设发送的数据为 0XA5,二进制为:10100101
编码:用脉冲宽度编码(Pulse Width Encoding)来表示二进制数据。每个数据位由一系列的脉冲组成,逻辑0和逻辑1分别由不同的脉冲宽度表示。现假设如下:
逻辑0为:0.5ms高 + 0.5ms低; 逻辑1为:1ms高 + 0.5ms低;
- 调制:就是把编码数据放到一定频率的载波上面,即使用数据调制载波,形成一串脉冲信号
- 发送电路:即:红外灯珠对脉冲信号的发送 + 脉冲信号的放大
接收过程
接收电路 -> 解调 -> 解码 -> 数据
- 接收电路:接收发过来的红外信号
- 解调:当红外接收管接收到调制信号时,输出高电平,否则输出为低电平
- 解码:解调后将得到的一系列脉冲变为二进制
- 数据:解码后即可得到发来的数据,即 0XA5 (二进制为:10100101)
优缺点
红外通信的优点:抗电磁干扰、成本低
红外通信的缺点:传输效率低,易受到环境光干扰导致传输误码
载波
红外通信一般为 38K
载波,“载波” 简单来讲就是一段周期性的、不断震荡的波;
注:特别注意的是,对于一些非信号专业的新手来讲,虽然眼睛看到了该条件,但并没有进行思考,只当作“公理”给记住,这时在使用时往往会忽略掉。与福尔摩斯说过的话有异曲同工之处:“你只是用眼睛看,并不是在观察”,现在是:“你只是眼睛看到了,却没有在思考。”
我们可通过调制将信息加载到载波上,这样信息就会随着波的传播而发射出去了;波发出去后会受到外界环境光的干扰,这就可能会导致信息的丢失或篡改;理论上来讲:传播距离越远,信息丢失的概率越大。
38K频率
上面提到载波上的信息可能会丢失,那有没有什么预防措施呢?
这就要说到用 38K
载波的原因了:主要是为了提高抗干扰能力,尽量避免因环境光干扰导致的信息丢失或篡改;
另外的原因(来自百度):
这一频率的选择与常用的 455kHz
晶振密切相关。在发射端,通过对晶振进行整数分频,通常取分频系数为12,从而得到 38kHz
的载波频率。这种分频方式不仅技术上可行,而且经济实用,因为它利用了现有的成熟技术和组件,避免了开发高精度晶振的成本和复杂性。
此外,38kHz
的载波频率还具有其特定的优势。在红外通信中,使用 38kHz
的载波可以实现较高的通信质量和较远的通信距离,同时保持较低的功耗和成本。这种频率的选择也符合红外通信的基本需求,即在保证通信效果的同时,尽可能地降低系统成本和功耗。
值得注意的是:
38K
载波意味着每秒有38000个周期,单个周期的时间为1/38000S。这个时间长度代表了一个完整脉冲的时间,包括高电平和低电平的总时间。
但是我们红外通信需要的是高低电平均为1/38000S,因此我们定时器应配置为 76K
,这样每次进中断的时间就是1/38000S,那么产生的高、低电平就是1/38000S了。
OK,了解基本原理后就有大概的框架了:
- 首先要有个波形发生器,用来产生
38K
载波 - 制定自己的通信协议(也可以使用现有的协议,如: NEC协议)
- 代码实现