关于 DreamCat

主题名称:DreamCat | 版本:3.0.240224

主题开发:HanFengA7 | CornWorld

Designed by HanFengA7 Power by Typecho

Copyright © 2015-2025 by LychApe All rights reserved!

menu
refresh

改装欧瑞博CT30W添加射频遥控功能

作者: ciaoℒy

时间:

之前就发过一个改装这款红外遥控器的文章了. 文末有提到这个红外控制器还有几个悬空的GPIO引脚. 可以通过飞线的方式把这几个引脚接到射频模块上, 打造成一个集红外和射频为一身的"全能遥控器". 实际操作下来, 确实是可行的.

首先看一看大佬抄板给出的原理图:

SCH_Schematic1_1-P1_2024-11-15-1

可以看到GPIO 2和GPIO 13都是空置的, 其中GPIO 2还有一个上拉电阻. 另外3.3V和5V也是在板上有相应的引脚的. 用这些引脚驱动一个射频模块是足够的了.

这里补一张背面的图

如下图把杜邦线焊接上去, 把模块插上就行. 因为是触点而不是过孔的焊盘, 所以比较难焊.

这里的GPIO 2和GPIO 13怎么选呢? 说实话我也不太清楚. 以前上学的时候倒是有说过一些管脚需要做上拉下拉的操作, 奈何本来就学的不明白, 现在更是忘干净了. 总之这里我接的是 GPIO 13/5V/GND三个引脚就是了

这里补一张焊接好的图

焊好之后, 用ESPHome的remote_transmitter组件即可驱动433射频模块

# 其它代码

remote_transmitter:
  - id: rc_transmitter
    pin: 13
    carrier_duty_percent: 100%

# 其它代码

button:
  - platform: template
    name: Send RC1
    id: send_rc1
    # friendly_name : 射频开关1
    # Optional variables:
    icon: "mdi:radio-tower"
    web_server:
      sorting_weight: 2
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '000111011100110110100100'
          repeat:
            times: 10
            wait_time: 0ms
          protocol: 
            #The pulse length of the protocol - how many microseconds one pulse should last for.
            pulse_length: 320

  - platform: template
    name: Send RC2
    id: send_rc2
    # friendly_name : 射频开关2
    # Optional variables:
    icon: "mdi:radio-tower"
    web_server:
      sorting_weight: 2
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '011111000101101001100100'
          repeat:
            times: 10
            wait_time: 0ms
          protocol: 
            #The pulse length of the protocol - how many microseconds one pulse should last for.
            pulse_length: 100

remote_transmitter组件除了能驱动433射频模块之外, 还能驱动红外发射管. 所以可以基于这个组件进一步改装红外遥控的源码, 减少对外部库的依赖, 可以让代码更简洁.

但是remote_transmitter也不是能完全取代IRremoteESP8266的. 我看了又看, 似乎这个组件没法实现原来代码里dump出红外信号的能力. 它要嘛dump出raw信号, 要嘛就只能给每一个协议做一个事件钩子. 没法实现下面所示的一行代码既输出value又输出协议类型的功能:

if (results.overflow) ESP_LOGW("ir_dump", "Buffer is full");
ESP_LOGI("ir_dump", "-> value = %s addr = %d command = %d decode_type = %d", 
         uint64ToString(results.value, HEX), 
         results.address, 
         results.command, 
         results.decode_type
        );

#本文链接:https://blog.chaol.top/archives/99-1.html
#本文采用 CC BY-NC-SA 4.0 协议进行许可
#如无特别声明,该文章均为 ciaoℒy 原创,转载请遵循 署名-非商业性使用 4.0 国际(CC BY-NC 4.0)协议,即转载请注明文章来源。
#最后编辑时间为: 2025 年 02 月 20 日
none

create 添加新评论


account_circle
email
language
textsms



加我的QQ
加我的微博
加我的支付宝
加我的微信