用ESPHome实现对红外遥控电器的远程自动控制

家里有台旧的352 X80空气净化器,但只有红外遥控功能,为了让他可以通过APP遥控,并实现与空气质量监测仪(低成本DIY空气质量检测仪(D1 Mini ESP8266<Tasmota固件> 、PMS5003)_esp8266 d1 mini-CSDN博客)联动,实现个性的自动化运行策略定制,决定通过ESPHome定制一个ESP8266红外遥控器,并集成到Home Assistant里。同理,也可以实现其他具有红外遥控器的电器接入Home Assistant。

一、设计思路

        首先用ESP8266模块搭建一个红外接收电路,使用逻辑分析仪获取352空气净化器遥控器各个按键发射的红外编码,然后用ESP8266模块构建发射电路,并将他集成到Home Assistant,定制相关遥控面板,最后进行相关自动化设置,实现352空气净化器与空气质量检测仪联动。

二、器件准备

1.  ESP8266模块(ESP-01S)

 

  2、esp8266烧写器

 

 也可以用USB转TTL-CH340模块进行烧写,这里方便起见直接用了esp8266烧写器。

3. 逻辑分析仪

4. 红外发射接收器

TSOP38238红外接收器38KHz

LD274红外发射管950nm

二、器件连接

CH340ESP8266
烧写模式
ESP8266
工作模式
红外发射管红外接收器逻辑分析仪
3.3V3.3V3.3V正极Vcc
RXTX(GPIO1)
TXRX(GPIO3)GPIO3DATA
GNDGPIO0
GNDGNDGNDGNDGND
GPIO2

负极(串联一个1K限流电阻)

CH0

在Home Assistant安装ESPHome、向ESPHome添加Esp设备、给ESP设备刷新固件等过程参见《以DHT11、ESP8266为例介绍ESPHome在Home Assistant中的应用》一文,本文就不再赘述。

三、获取红外遥控器各按键操作发射的编码

首先给esp8266添加以下代码段(其它部分代码参见《以DHT11、ESP8266为例介绍ESPHome在Home Assistant中的应用》一文),并进行烧写。

##红外接收设置
remote_receiver:
  pin:
    number: 3
    inverted: True
    mode:
      input: True
      pullup: True
  dump: raw

然后按上面的器件连接表把ESP8266(工作模式)、红外接收器、逻辑分析仪连接起来,下载并安装逻辑分析仪软件(Logic analyzer software from Saleae),目前版本是Logic 2.4.9,进入软件会自动匹配连接逻辑分析仪。

设置好采样速度(一般2M就够用),点击右上角绿色按钮即可开始采样(为确保准确建议每次只对1个按钮进行采样),按下红外遥控器按钮,再停止采样,这样通道0上就会出现采样波形。用鼠标滚轮可以放大和缩小波形,同时可以左右移动波形,找到遥控器按下的一段波形进行分析。

将鼠标移动到对应波形处就会显示该断波形高低电平持续时间,经分析发现,一个窄的高/低电平为590us低电平+537us高电平,一个宽的高/低电平为590us低电平+1611us高电平,宽和窄基本呈倍数关系。控制码一般以一个较长的高电平开始,已一个较长的低电平结束,我们把一个窄的高电平接一个宽的低电平定义为0,把一个宽的高电平接一个窄的低电平定义为1,就可以将遥控器波形转化为二进制代码。

 经分析,我的遥控器编码如下:

四、用ESP8266发射编码模拟红外遥控器操作

给esp8266添加以下代码段,并进行烧写,然后按上面的器件连接表把ESP8266(工作模式)、红外发射管连接起来进行测试。

 

从上图可以看到,发射输出的高电平实际是连续的高电平脉冲构成的。

另外需要注意,由于ESP01S启动时Io2脚必须为高电平,否则无法正常启动,因此在红外发射管是正极连接3.3V,负极经过1K限流电阻后接入Io2输出脚,这样Io2输出低电平时,红外发射管导通工作,Io2输出高电平时,红外发射管截止,所以这里高低电平是发生了翻转,为保证输出正常,下面代码设置里的高低电平也进行了翻转。

##红外发射设置
remote_transmitter:
  pin:
    number: 2
  carrier_duty_percent: 50%

switch:
  - platform: template
    name: Power on         #电源开关
    turn_on_action:
      - remote_transmitter.transmit_raw:
          code: [9050, -4405, 590, -1611, 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -1611,
                 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -537, 590, -537,
                 590, -537, 590, -537, 590, -537, 590, -537, 590, -537, 590, -1611, 590, -537, 590, -1611,
                 590, -1611, 590, -1611, 590, -1611, 590, -1611, 590, -1611, 590, -537, 590, -1611, 590, -537, 590, -537]
          carrier_frequency: 38kHz
  - platform: template
    name: Light on         #灯光开关
    turn_on_action:
      - remote_transmitter.transmit_raw:
          code: [9050, -4405, 590, -1611, 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -1611,
                 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -537, 590, -537,
                 590, -1611, 590, -537, 590, -537, 590, -537, 590, -537, 590, -1611, 590, -537, 590, -1611,
                 590, -537, 590, -1611, 590, -1611, 590, -1611, 590, -1611, 590, -537, 590, -1611, 590, -537, 590, -537]
          carrier_frequency: 38kHz
  - platform: template
    name: Sleep         #睡眠模式
    turn_on_action:
      - remote_transmitter.transmit_raw:
          code: [9050, -4405, 590, -1611, 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -1611,
                 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -537, 590, -537,
                 590, -1611, 590, -537, 590, -1611, 590, -537, 590, -537, 590, -1611, 590, -537, 590, -1611,
                 590, -537, 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -1611, 590, -537, 590, -537]
          carrier_frequency: 38kHz
  - platform: template
    name: Auto           #自动模式
    turn_on_action:
      - remote_transmitter.transmit_raw:
          code: [9050, -4405, 590, -1611, 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -1611,
                 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -537, 590, -537,
                 590, -537, 590, -537, 590, -537, 590, -1611, 590, -537, 590, -1611, 590, -537, 590, -1611,
                 590, -1611, 590, -1611, 590, -1611, 590, -537, 590, -1611, 590, -537, 590, -1611, 590, -537, 590, -537]
          carrier_frequency: 38kHz
  - platform: template
    name: Fast           #急速模式
    turn_on_action:
      - remote_transmitter.transmit_raw:
          code: [9050, -4405, 590, -1611, 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -1611,
                 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -537, 590, -537,
                 590, -1611, 590, -1611, 590, -537, 590, -1611, 590, -537, 590, -1611, 590, -537, 590, -1611,
                 590, -537, 590, -537, 590, -1611, 590, -537, 590, -1611, 590, -537, 590, -1611, 590, -537, 590, -537]
          carrier_frequency: 38kHz
  - platform: template
    name: Speed inc       #增加风速
    turn_on_action:
      - remote_transmitter.transmit_raw:
          code: [9050, -4405, 590, -1611, 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -1611,
                 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -537, 590, -537,
                 590, -1611, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -1611, 590, -537, 590, -1611,
                 590, -537, 590, -537, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -1611, 590, -537, 590, -537]
          carrier_frequency: 38kHz
  - platform: template
    name: Speed dec       #减小风速
    turn_on_action:
      - remote_transmitter.transmit_raw:
          code: [9050, -4405, 590, -1611, 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -1611,
                 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -537, 590, -537, 590, -537,
                 590, -1611, 590, -537, 590, -1611, 590, -1611, 590, -537, 590, -1611, 590, -537, 590, -1611,
                 590, -537, 590, -1611, 590, -537, 590, -537, 590, -1611, 590, -537, 590, -1611, 590, -537, 590, -537]
          carrier_frequency: 38kHz

五、将ESP设备集成到Home Assistant(略)

参见《以DHT11、ESP8266为例介绍ESPHome在Home Assistant中的应用》一文

在仪表盘创建空气净化器控制面板,并按自己习惯进行配置。

六、进行自动化设置

进入HomeAssistant的“配置”——>“自动化与场景”——>“创建自动化”,分别设置“触发条件”、“其他条件”、“执行动作”等,最后命名并保存。

    

七、安装及其他

由于本人经常使用ESP01S,为方便电路搭建和安装,自己设计了一块ESP01S的转接板,可以直接插USB(Type C) 接口使用,并配套定制了一个3D打印的盒子,感兴趣的可以自己下载。

转接电路板下载地址:

链接:https://pan.baidu.com/s/1d_NQzmZHkZyMyucHKSYDjA?pwd=s51c 
提取码:s51c 

3D打印外壳下载地址:

链接:https://pan.baidu.com/s/18Wm2WqlgHF8xpdHlVgrhdw?pwd=q5bq 
提取码:q5bq 

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值