本帖最后由 花落花空 于 2024-7-17 13:48 编辑
7.17 更新一个开源广场链接焊接排风扇和桌面氛围灯控制器缝合怪 - 嘉立创EDA开源硬件平台 (oshwhub.com)
之前买了个暴力风扇做焊接排风扇,开启直接起飞,风扇是支持pwm信号调速的。然后最近想给桌子来个RGB。那么想想直接把这俩的控制缝合起来。
在当前的DIY环境下,直接画PCB是个不错的选择。嘉立创每个月都能免费打样两次。程序上对接HA当然ESPhome是最优解。
那么直接开始画原理图:
先说说思路:主控我使用了手头就有的ESP32-C3-MINI ,然后需要一个EC11旋钮编码器来进行操作,考虑到安装方式,我使用的是卧式的。
然后我觉得还需要一个显示,本来准备用ssd1306这种屏,但考虑到需要直观,且1306这种屏不是很好固定,
还是选用了4位数码管。配合ESPhome直接支持的TM1637芯片。
风扇是12V的,然后后续要接的灯带应该也是12V,那么直接DC接口供电。烧录程序使用type-c直接连接c3的usb-jtag。
考虑到都使用type-c了,那加个PD受电很合理吧,遂抄了个ch224k的电路。
tm1637需要5v供电,esp需要3.3V。那么电压转换必不可少。开源广场翻了下,选择了mt2492的dcdc芯片转5V,然后使用me6210a进行5V转3.3V。
和风扇的连接本来准备和灯带一样用kf128座子,但后来想直接在风扇上也加个编码器。这样就需要起码6根线,用端子接就不很友好。
最后看到了家里闲置的USB3.0线,想想这东西就很合适,遂使用usb3.0的母座连接排风扇。
下面直接贴上原理图:
原理图解决了。接下来就是PCB部分的排列和拉线了。。。直接贴完成的图
2D预览
3D预览
板子到手
焊接好的状态
注入灵魂
下面附上演示视频
自制ESPhome焊接排风扇及桌面氛围灯控制器_哔哩哔哩_bilibili
ESPhome的配置文件稍长,通过附件来吧
192.168.2.31 desk-rgb (1).yaml
(18.09 KB, 下载次数: 10, 售价: 1 金钱)
关于控制HA中的设备,需要通过自动化。
这个东西在HA中有上面这些实体,自动化通过编码器值的变化,结合设备选择来进行控制。
下面贴个我自己的,注意,这是HA的自动化
旋转的控制:
alias: 工作室氛围灯控制器旋钮
description: ""
trigger:
- platform: state
entity_id:
- sensor.desk_rgb_1_2
condition: []
action:
- if:
- condition: state
entity_id: select.desk_rgb_1
state: 外部灯1
then:
- service: light.turn_on
metadata: {}
data_template:
brightness_pct: "{{ states('sensor.desk_rgb_1_2') | int }}"
entity_id: light.yeelink_lamp22_e014_light
- if:
- condition: state
entity_id: select.desk_rgb_1
state: 外部风扇1
then:
- service: fan.turn_on
metadata: {}
data:
percentage: "{{ states('sensor.desk_rgb_1_2') | int }}"
target:
entity_id: fan.bigger_fan
mode: single
然后是按下的控制:
alias: 工作室氛围灯控制器按钮
description: ""
trigger:
- platform: state
entity_id:
- sensor.desk_rgb_0_2
to: single_clicked
condition: []
action:
- if:
- condition: state
entity_id: select.desk_rgb_1
state: 外部灯1
then:
- service: light.toggle
metadata: {}
data: {}
target:
entity_id: light.yeelink_lamp22_e014_light
- if:
- condition: state
entity_id: select.desk_rgb_1
state: 外部风扇1
then:
- service: fan.toggle
metadata: {}
data: {}
target:
entity_id: fan.bigger_fan
mode: single
然后esphome如果要显示状态,需要配置文件中对应设置如下地方(ESPHOME的配置文件里)
开关状态
binary_sensor: #定义二进制传感器
#以下为导入HA中设备开关状态
- platform: homeassistant
entity_id: light.yeelink_lamp22_e014_light
id: remote_light_state
on_state:
then:
- number.to_min: #归零上次操作的时间
id: number1
- platform: homeassistant
entity_id: fan.bigger_fan
id: bigger_fan_state
on_state:
then:
- number.to_min: #归零上次操作的时间
id: number1
数值状态,如亮度,风速
#以下为HA中的设备数值
- platform: homeassistant #从HA中获取要控制的设备属性值,这里是风扇的风速
entity_id: fan.bigger_fan #HA中的实体ID
id: bigger_fan_speed
attribute: percentage #要获取的属性
on_value:
then:
- number.to_min: #归零上次操作的时间
id: number1
- platform: homeassistant #从HA中获取要控制的设备属性值,这里是灯的亮度
entity_id: light.yeelink_lamp22_e014_light #HA中的实体ID
id: remote_light_brightness
attribute: brightness #要获取的属性
filters: #对数值进行转换
- lambda: !lambda "return x/255 * 100.00;"
应该就这些了。
|