zoukankan      html  css  js  c++  java
  • 红外遥控器通信原理_红外遥控器协议

    红外通讯,顾名思义,就是通过红外线传输数据。在电脑技术发展早期,数据都是通过线缆传输的,线缆传输连线麻烦,需要特制接口,颇为不便。于是后来就有了红外、蓝牙、802.11等无线数据传输技术。在红外通讯技术发展早期,存在好几个红外通讯标准,不同标准之间的红外设备不能进行红外通讯。为了使各种红外设备能够互联互通,1993年,由二十多个大厂商发起成立了红外数据协会(IrDA),统一了红外通讯的标准,这就是目前被广泛使用的IrDA红外数据通讯协议及规范。

    在某些场合,需要数据交换但又不是很大,且实时性要求又不是很高的情况下,可以使用红外通讯方式,这样既可以得到无绳化通信带来的便利,又可以避开采用无线电高频电路可能引发的一些问题。譬如用于家用电器的遥控器,计算机的遥控键盘和遥控鼠标以及便携式数据收集装置(煤水电表的登录器、报税机)与主机的数据交换等。

      目前,利用红外线进行无线数据通信,无论从小型化、轻量化,还是从安全性等方面考虑,其可行性都比较高,并且已经在无线多信道室内话音系统,无绳电话以及键盘和终端间的短距离无线连接中得到了应用。所有这些应用中的工作带宽远低于WLAN需要的带宽。

    红外接收头的型号有很多HS0038 VS838等 功能大致相同,只是引脚封装不同。

    红外接收有几种统一的编码方式,采样哪种编码方式取决于遥控器使用的芯片,接收头收到的都是一样的。

    电视遥控器使用的是专用集成发射芯片来实现遥控码的发射,如东芝TC9012,飞利浦AA3010T等,通常彩电遥控信号的发射,就是将某个按键所对应的控制指令和系统码(由0和1组成的序列),调制在38KHz的载波上,然后经放大、驱动红外发射管将信号发射出去。不同公司的遥控芯片,采样的遥控码格式也不一样,较普遍的有两种,一种NEC标准,一种是PHILIPS标准。

    NEC标准:遥控载波的频率为38KHz(占空比1:3)当某个键按下时,系统首先发射一个完整的全码,如果按键超过108ms仍未松开,接下来发射的代码(连发代码)将由起始码(9ms)和结束码(2.5ms)组成。

    一个完整的全码 = 引导码 +用户码 +用户码 + 数据码 + 数据码 + 数据反码。

    其中,引导码高电平9ms,低电平4.5ms;系统码8位,数据码8位,共32位;其中前16位为用户识别码,能区别不同的红外遥控设备,以防止不同的机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码,用于核对数据是否接收准确。收端根据数据码做出应该执行上面动作的判断。

    连发代码是在持续按键时发送的码。它告知接收端。某键是在被连续的按着。

    NEC标准下的发射码表示

    发射数据0时用”0.56ms高电平 + 0.565ms低电平 = 1.125ms”表示;

    数据1用”高电平0.56ms + 1.69ms = 2.25ms”表示。

    遥控器发射信号:

    需要注意的是:当一体化接收头收到38kHz红外信号时,输出端输出低电平,否则为高电平。所以一体化接收头输出的波形和发射波形是反向的

     遥控红外通信原理

      在实际的通信领域,发出来的信号一般有较宽的频谱,而且都是在比较低的频率段分布大量的能量,所以称之为基带信号,这种信号是不适合直接在信道中传输的。为便于传输、提高抗干扰能力和有效的利用带宽,通常需要将信号调制到适合信道和噪声特性的频率范围内进行传输,这就叫做信号调制。在通信系统的接收端要对接收到的信号进行解调,恢复出原来的基带信号。这部分通信原理的内容,大家了解一下即可。

      我们平时用到的红外遥控器里的红外通信,通常是使用38K左右的载波进行调制的,下面我把原理大概给大家介绍一下,了解一下,先看发送部分原理。

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

      红外遥控器通信原理_红外遥控器协议_红外通信对比无线通信的优势

      图1 红外信号调制

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

      那在原理上,我们如何从电路的角度去实现这个功能呢?如图2所示。

      红外遥控器通信原理_红外遥控器协议_红外通信对比无线通信的优势

      图2 红外发射原理图

      38K载波,我们可以用455K晶振,经过12分频得到37.91K,也可以由时基电路NE555来产生,或者使用单片机的PWM来产生。当信号输出引脚输出高电平时,Q2截止,不管38K载波信号如何控制Q1,右侧的竖向支路都不会导通,红外管L1不会发送任何信息。当信号输出是低电平的时候,那么38K载波就会通过Q1释放出来,在L1上产生38K的载波信号。这里要说明的是,大多数家电遥控器的38K的占空比是1/3,也有1/2的,但是相对少一些。

      正常的通信来讲,接收端要首先对信号通过监测、放大、滤波、解调等等一系列电路处理,然后输出基带信号。但是红外通信的一体化接收头HS0038B,已经把这些电路全部集成到一起了,我们只需要把这个电路接上去,就可以直接输出我们所要的基带信号了,如图3所示。

      红外遥控器通信原理_红外遥控器协议_红外通信对比无线通信的优势

      图3 红外接收原理图

      由于红外接收头内部放大器的增益很大,很容易引起干扰,因此在接收头供电引脚上必须加上滤波电容,官方手册给的值是4.7uF,我们这里直接用的10uF,手册里还要求在供电引脚和电源之间串联100欧的电阻,进一步降低干扰。

      图3所示的电路,用来接收图16-5电路发送出来的波形,当HS0038监测到有38K的红外信号时,就会在OUT引脚输出低电平,当没有38K的时候,OUT引脚就会输出高电平。那我们把OUT引脚接到单片机的IO口上,通过编程,就可以获取红外通信发过来的数据了。

      大家想想,OUT引脚输出的数据是不是又恢复成为基带信号数据了呢?那我们单片机在接收这个基带信号数据的时候,如何判断接收到的是什么数据,应该遵循什么协议呢?像我们前边学到的UART、I2C、SPI等通信协议都是基带通信的通信协议,而红外的38K仅仅是对基带信号进行调制解调,让信号更适合在信号中传输。

      由于我们的红外调制信号是半双工的,而且同时空间只能允许一个信号源,所以我们红外的基带信号不适合在I2C或者SPI通信协议中进行的,我们前边提到过UART虽然是2条线,但是通信的时候,实际上一条线即可,所以红外可以在UART中进行通信。当然,这个通信也不是没有限制的,比如在HS0038B的数据手册中标明,要想让HS0038B识别到38K的红外信号,那么这个38K的载波必须要大于10个周期,这就限定了我们红外通信的基带信号的比特率必须不能高于3800,那如果把串口输出的信号直接用38K调制的话,波特率也就不能高于3800。

      常用红外遥控器协议

      一、 NEC 协议

      特征:

      8 位地址和 8 位命令长度为提高可靠性每次传输两遍地址(用户码)和命令(按键值)通过脉冲串之间的时间间隔来实现信号的调制 38Khz 载波每位的周期为 1.12ms 或者 2.25ms

      调制方式:

      红外遥控器通信原理_红外遥控器协议_红外通信对比无线通信的优势

      Note:对于测试红外接收头的信号来说,有脉冲信号的地方就是高电平。即逻辑“1” 为 0.56ms 高电平+1.69ms 低电平,逻辑“0”为 0.56ms 高电平+0.56ms 低电平。

      协议:

      红外遥控器通信原理_红外遥控器协议_红外通信对比无线通信的优势

      上图为典型的 NEC 协议传输格式,起始位(引导码)为 9ms 高+4.5ms 低组成,有效数据为地址+地址反码+命令+命令反码。反码的作用是用来校准前面的地址和命令,如果对可靠性不感兴趣,也可以去掉取反的数据,或者将地址和命令扩展到 16 位

      上图传输的地址数据为 10011010,需要注意的是先发低位地址再发高位地址,因此该波形的地址为 01011001=0X59,同理,命令为 00010110=0X16。

      长按键时,如下图所示,每隔 110ms 重复发送一次,但是命令只发送一次,重复发送的是 9ms 高电平+2.25ms 低电平+0.56ms 高电平+低电平

      红外遥控器通信原理_红外遥控器协议_红外通信对比无线通信的优势

      扩展协议:

      红外遥控器通信原理_红外遥控器协议_红外通信对比无线通信的优势

      扩展协议只是将地址改为 16 位,其他不变。

      实测波形:

      下面的波形是从红外接收头上得到的波形:(调制脉冲信号转变成高低电平了)

      红外遥控器通信原理_红外遥控器协议_红外通信对比无线通信的优势

      由于红外接收头在接收信号时(或者是发送的时候)将波形反向了,因此在读数据时可以将示波器的反向功能打开,就能读到有效数据了。

      下面实例是已知 NEC 类型遥控器所截获的波形:

      遥控器的识别码是 Address=0xDD20;其中一个键值是 Command=0x0E

      红外遥控器通信原理_红外遥控器协议_红外通信对比无线通信的优势

      最后一位是一个逻辑“1”。

      二、 Philips RC5 协议

      特征:

      5 位地址和 6 位命令长度(扩展协议用 7 位)

      双向编码或者叫曼彻斯特编码(即电平的变化来表示逻辑 0 和 1)

      36Khz 载波

      每位的周期为 1.778ms(64 cycles of 36 kHz)

      调制方式:

      红外遥控器通信原理_红外遥控器协议_红外通信对比无线通信的优势

      红外遥控器通信原理_红外遥控器协议_红外通信对比无线通信的优势

      协议:

      红外遥控器通信原理_红外遥控器协议_红外通信对比无线通信的优势

      一段数据包含 14 位,周期长度为 25ms。

      前两位是起始位 S 通常都是逻辑 1。

      在 RC5 扩展模式下第二位 S2 将 6 位命令代码扩充到 7 位代码(作为高位 MSB),这样可以从 64 个键值扩充到 128 个键值。

      第三位是控制位 C 它在每按下了一个键后翻转,这样就可以区分一个键到底是一直按着没松手还是松手后重复按。

      长按键时,数据每隔 114ms 重复发送一次,第三位不发生翻转,即重复发送的信号是完全一致的。

      实测波形:

      连续按同一个键两次时,只有第三位发生翻转,其他位不变

      红外遥控器通信原理_红外遥控器协议_红外通信对比无线通信的优势

      从上面波形可以读出该段数据的值为 101 01010 010111,由于该协议为 RC5 扩展协议,即第二位作为命令的第七位,因此地址为 01010=0X0A,命令为 0010111=0X17。(实际遥控器厂商给出的命令为 57,可能是将第二位反相后作为命令的第七位)。

    此外还有很多其他通信协议。再此不一一叙述。

  • 相关阅读:
    《Java算法》Java贪心算法
    《Java知识应用》Java下Linux系统下word转PDF
    《MySQL数据库》MySQL常用语法(二)
    《MySQL数据库》MySQL常用语法(一)
    《Java算法》Java判重算法-整数判重
    《Java算法》Java排序算法-快速排序
    POJ 1113:Wall
    POJ 1584:A Round Peg in a Ground Hole
    51nod 1035:最长的循环节
    51nod 1022 石子归并 环形+四边形优化
  • 原文地址:https://www.cnblogs.com/zhugeanran/p/9334289.html
Copyright © 2011-2022 走看看