esp8266_sdk_ir_rx_tx红外遥控示例

前言:
红外遥控是利用红外线进行传输数据,红外线又称红外光波,在电磁波谱中,光波的波长范围为0.01um1000um。根据波长的不同可分为可见光和不可见光,波长为0.38um0.76um的光波可为可见光,依次为红、橙、黄、绿、青、蓝、紫七种颜色。光波为0.01um0.38um的光波为紫外光(线),波长为0.76um1000um的光波为红外光(线)。红外光按波长范围分为近红外、中红外、远红外、极红外4类。
红外线遥控是利用近红外光传送遥控指令的,波长为0.76um1.5um。用近红外作为遥控光源,是因为目前红外发射器件(红外发光管)与红外接收器件(光敏二极管、三极管及光电池)的发光与受光峰值波长一般为0.8um0.94um,在近红外光波段内,二者的光谱正好重合,能够很好地匹配,可以获得较高的传输效率及较高的可靠性

载波信号:
载波是指被调制以传输信号的波形,一般为正弦波。
1)载波的作用
1.减小传输中的噪声;
2.频分复用,即同一频率之间同一信道传输多路信号而不混叠;
3.可传播更远距离,有利于接收;
2)载波频率
调制载波频率一般在30KHz到60KHz之间,常用的载波有33K,36K,36.6K,38K,40K,56K等,其中38K使用最多。
常用占空比有1/3、1/2,1/3最多。

调制:
目前主流的调制方式有PPM和PWM。
1)PPM:脉冲位置调制,调制脉冲宽度不变,用脉冲间隔来区分0和1。脉冲宽度不变都是560us,脉冲间隔改变。逻辑1总时间为2.25ms,逻辑0中时间长度为1.12ms。
2)PWM:脉冲宽度调制,脉冲间隔不变,调制脉冲宽度改变。脉冲间隔 为600us,脉冲宽度不同。逻辑1高电平时间为1.2ms,逻辑0高电平时间为0.6ms。

红外传输协议:
常用的红外传输协议有ITT协议、NEC协议、Nokia NRC协议、Sharp协议、Philips RC-5、RC-6 RECS-80协议、Sony SIRC协议等,其中最常见的为NEC协议

常见的NEC协议格式为:
依次发送

  1. 发送9ms的高电平脉冲
  2. 发送4.5ms的低电平
  3. 8bit的用户码(低位在前)
  4. 8bit的用户反码,用于检验地址码是否出错
  5. 8bit的数据码(低位在前)
  6. 8bit的数据反码,用于检验命令码是否出错。
    !!重复码:
    假如一直按着按键不松,它将以110ms为周期发送重复码,重复码由9ms高电平、2.25ms低电平及560us高电平组成。


    esp8266_sdk_ir_rx_tx红外遥控示例_第1张图片
    红外协议.png

1)NEC协议分析:
38KHz的载波,脉冲时间560us,紧接着没有脉冲时间为1.69ms(低电平),则为逻辑1;
脉冲时间560us,紧接着没有脉冲时间为560us(低电平),则为逻辑0;


esp8266_sdk_ir_rx_tx红外遥控示例_第2张图片
逻辑0和1.png

esp8266_rx_tx官方推荐
ESP8266定义了1个IR红外遥控接口,IR红外遥控接口由软件实现,接口定义如下:
管脚名称 |管脚编号 |IO |功能名称
(MTMS) |(9) |(IO14) |(IR_TX)
(GPIO5) |(24) |(IO5) |(IR_RX)

1)发送:
在ESP8266上用于发送的载波可以通过以下方式实现:
1.I2S的BCK

  1. WS管脚产生
  2. 由GPIO中的sigma-delta功能在任意GPIO口产生载波。
    其中sigma-delta产生的载波占空比约为20%,推荐使用MTMS管脚(GPIO14),可产生准确的38KHz且占空比为50%的标准方波。
    2)接收:
    红外接收功能通过GPIO的边沿中断实现,读取系统时间,将其时间相减可以得到波形持续时间,然后通过软件逻辑实现红外协议处理

IR_Demo_For_ESP8266_NONOS_SDK源码:
链接:https://pan.baidu.com/s/1KohkTFd9Qxz_reeAM_9GvA 密码:zv3d
下载后添加到esp8266_sdk_nonos目录中编译即可使用:

如果使用 ESP8266_NONOS_SDK_V1.5.0 或之后版本,请在示例的 Makefile 中 'LINKFLAGS_eagle.app.v6" 区域增加 "-lcrypto" 。

你可能感兴趣的:(esp8266_sdk_ir_rx_tx红外遥控示例)