家里的得力牌电动投影幕布是的433M单一频率无线遥控的,为把它加入HomeAssistant与投影仪、音响等实现联动控制,计划用万能的esp8266来模拟遥控器。

一、设计思路

      用ESPHome的Remote Receiver组件获取遥控器升、降、停分别对应的编码(由于我的遥控器不是标准协议,只能通过逻辑分析仪自己解码),然后用Remote Receiver组件定义升、降、停按键对应的编码(详见:ESPHome — ESPHome),然后集成到HomeAssistant即可。

二、器件准备

1.  ESP8266模块(ESP-01S)

 

2. 433M超外差发射模块、接收模块各1只


                 接收模块                                                                发射模块

最好选择如图的超外差模块,抗干扰能力强。

 3、esp8266烧写器

 

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

4. 逻辑分析仪

 二、器件连接

CH340 ESP8266
烧写模式
ESP8266
工作模式
433M接收模块 433M发射模块 逻辑分析仪
3.3V 3.3V 3.3V 5V 5V
RX TX(GPIO1)
TX RX(GPIO3) GPIO3 DATA
GND GPIO0
GND GND GND GND GND GND
GPIO2 DATA

CH0

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

三、获取遥控器升降停操作发射的编码

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

remote_receiver:
  pin: 2
  dump: all

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

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

      定义为“0”

    定义为“1”

 经分析发现,一个窄的高/低电平为333us,一个宽的高/低电平为685us,宽和窄基本呈倍数关系。控制码一般以一个较长的高电平开始,已一个较长的低电平结束,我们把一个窄的高电平接一个宽的低电平定义为0,把一个宽的高电平接一个窄的低电平定义为1,就可以将遥控器波形转化为二进制代码。

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

 我的遥控器除停止码是发送1次“0110010001000101011001101001000101010101”外,上升是先发3个控制码“0110010001000101011001101001000100010001”,再发5个控制码校验码“0110010001000101011001101001000100011110”,注意他们的后4位,校验码的“1110”是控制码“0001”的反码,这是为了校验接收的发射码是否有误,下降也是类似的。实际模拟遥控的时候不发校验码,多发几次控制码也可以控制的。

四、用ESP8266发射编码模拟遥控器操作屏幕升降停

给esp8266添加以下代码段,并进行烧写。

remote_transmitter:
  pin: 2
  carrier_duty_percent: 100%

switch:
  - platform: template
    name: Screen up
    turn_on_action:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '0110010001000101011001101001000100010001'   # 0x64 4566 9111
          protocol:
            pulse_length: 350
            sync: [14, 4]
            zero: [1, 2]
            one: [2, 1]
          repeat:
            times: 5
            wait_time: 7500us
  - platform: template
    name: Screen Stop
    turn_on_action:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '0110010001000101011001101001000101010101'   # 0x64 4566 9155
          protocol:
            pulse_length: 350
            sync: [14, 4]
            zero: [1, 2]
            one: [2, 1]
          repeat:
            times: 5
            wait_time: 7500us
  - platform: template
    name: Screen down
    turn_on_action:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '0110010001000101011001101001000100110011'   # 0x64 4566 9133
          protocol:
            pulse_length: 350
            sync: [14, 4]
            zero: [1, 2]
            one: [2, 1]
          repeat:
            times: 5
            wait_time: 7500us

然后按上面的器件连接表把ESP8266(工作模式)、433M发射模块连接起来。

 

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

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

五、参考文档

用Esphome发射和接收任意315/433MHz射频 - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐