用ESPHome实现对红外遥控电器的远程自动控制
家里有台旧的352 X80空气净化器,但只有红外遥控功能,为了让他可以通过APP遥控,并实现与空气质量监测仪()联动,实现个性的自动化运行策略定制,决定通过ESPHome定制一个ESP8266红外遥控器,并集成到Home Assistant里。同理,也可以实现其他具有红外遥控器的电器接入Home Assistant。
家里有台旧的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
二、器件连接
CH340 | ESP8266 烧写模式 | ESP8266 工作模式 | 红外发射管 | 红外接收器 | 逻辑分析仪 |
3.3V | 3.3V | 3.3V | 正极 | Vcc | |
RX | TX(GPIO1) | ||||
TX | RX(GPIO3) | GPIO3 | DATA | ||
GND | GPIO0 | ||||
GND | GND | GND | GND | GND | |
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
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)