『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 1426|回复: 43

[技术探讨] ESPHOME接入4PIN风扇给机柜散热

  [复制链接]

3

主题

35

帖子

766

积分

论坛DIY达人

积分
766
金钱
721
HASS币
40
发表于 2024-9-23 01:06:07 | 显示全部楼层 |阅读模式
本帖最后由 gmzjy1989 于 2024-9-24 01:24 编辑

装修时,把UPS、NAS、灯带变压器、HA盒子都塞进了定制柜里,如果不散热的话,柜内温度持续升高;因此柜边留了两个90孔,自己装个电脑散热扇进行柜内的通风;
微信图片_20240923011955.jpg



考虑到静音,也不太需要全速通风,所以直接用的静音风扇,顺带用ESP32把调速也做了
效果:
下载 (1).png 下载.png
ESPHOME自带的网页控制:
微信截图_20240923010245.png


备注:
4F给出了带温度检测的配置方式(多加一个温度传感器就好了);
因为我在机柜里外都放置了绿米的温湿度传感器,并通过计算机两个传感器的温度差值来调速,所以板子就没加温度检测。(因为我觉得柜内外的温度差值更能反馈通风效果)
有需要的可以移步4F参考大大的帖子。


物料(买的合适的话不需要焊接,都用的DC5.5*2.1mm接口或者USB口,及两根杜邦线):
1、12V/1A电源适配器1个:给风扇供电
2、12V转5V降压模块:给ESP32供电
下载 (2).png
3、ESP32开发板:
下载 (3).png
4、散热扇1个 Thermalright(利民) TL-C12015 12cm薄款机箱散热风扇 15mm风扇 4PIN PWM 1500 转速
微信截图_20240923010517.png

顺带科普下风扇的四个线的线序:参考防呆设计的凸起,分别是地线、12V供电线、转速监测线、转速调节线
微信截图_20240923011421.png

接线:
游客,如果您要查看本帖隐藏内容请回复
   

ESP的板子配置:
下载 (4).png

游客,如果您要查看本帖隐藏内容请回复
   



游客,如果您要查看本帖隐藏内容请回复
  
游客,如果您要查看本帖隐藏内容请回复

0924更新:GPIO12换成了其他接口(这个接口会影响板子断电启动)













评分

参与人数 2金钱 +28 HASS币 +20 收起 理由
x5333 + 8 厉害了word楼主!
+ 20 + 20 高手,这是高手!

查看全部评分

回复

使用道具 举报

0

主题

19

帖子

700

积分

高级会员

Rank: 4

积分
700
金钱
681
HASS币
0
发表于 2024-9-23 07:58:25 | 显示全部楼层
支持一下,不错。
回复

使用道具 举报

5

主题

94

帖子

1859

积分

论坛DIY达人

积分
1859
金钱
1765
HASS币
0
发表于 2024-9-23 08:26:36 | 显示全部楼层
那是不是esp32可以再加一个温度传感器用来自动调速呢?
回复

使用道具 举报

20

主题

262

帖子

1814

积分

金牌会员

Rank: 6Rank: 6

积分
1814
金钱
1552
HASS币
0
发表于 2024-9-23 08:31:38 | 显示全部楼层
kittyme 发表于 2024-9-23 08:26
那是不是esp32可以再加一个温度传感器用来自动调速呢?
fan:
  - platform: speed
    id: "${friendly_name}_fan"
    output: pwm_output
    speed_count: 100
    name: "${device_name} 开关"
 
output:
  - platform: esp8266_pwm
    pin: GPIO0
    frequency: 15000 Hz
    id: pwm_output
 
number:
  - platform: template
    icon: "mdi:fan"
    id: ${friendly_name}_speed_input
    name: "${device_name} 风速"
    lambda: |-
      return id(${friendly_name}_fan).speed;
    step: 1
    min_value: 1
    max_value: 100
    unit_of_measurement: "%"
    update_interval: 1s
    set_action:
      then:
        - fan.turn_on:
            id: ${friendly_name}_fan
            speed: !lambda "return x;"
        - component.update: ${friendly_name}_fanmode
        - component.update: ${friendly_name}_sensor_fanspeed
 
select:
  - platform: template
    icon: "mdi:fan"
    name: "${device_name} 模式"
    id: ${friendly_name}_fanmode
    update_interval: 1s
    lambda: |-
      if(id(${friendly_name}_fan).speed <= ${speed_low})
        return std::string("Low");
      else if(id(${friendly_name}_fan).speed == ${speed_med})
        return std::string("Medium");
      else if(id(${friendly_name}_fan).speed >= ${speed_full})
        return std::string("Full");
      else
        return std::string("Custom");
    set_action:
      then:
        - lambda: |-
            auto call = id(${friendly_name}_fan).turn_on();
 
            if(x == "Low")
              call.set_speed(${speed_low});
            else if(x == "Medium")
              call.set_speed(${speed_med});
            else if(x == "Full")
              call.set_speed(${speed_full});
            else
              call.set_speed(id(${friendly_name}_speed_input).state);
              
            call.perform();
        - component.update: ${friendly_name}_speed_input
        - component.update: ${friendly_name}_sensor_fanspeed
    options:
      - Low
      - Medium
      - Full
      - Custom
 
button:
  - platform: template
    icon: "mdi:fan-speed-1"
    name: "${device_name} Low"
    on_press:
      - fan.turn_on:
          id: ${friendly_name}_fan
          speed: "${speed_low}"
  - platform: template
    icon: "mdi:fan-speed-2"
    name: "${device_name} Med"
    on_press:
      - fan.turn_on:
          id: ${friendly_name}_fan
          speed: "${speed_med}"
  - platform: template
    icon: "mdi:fan-speed-3"
    name: "${device_name} Full"
    on_press:
      - fan.turn_on:
          id: ${friendly_name}_fan
          speed: "${speed_full}"
  - platform: restart
    name: "${device_name} 初始化"
 
sensor:
  - platform: template
    id: ${friendly_name}_sensor_fanspeed
    icon: "mdi:fan"
    name: "风扇速度"
    lambda: |-
      return id(${friendly_name}_fan).speed;
    update_interval: 1s
    accuracy_decimals: 0
    unit_of_measurement: "%"
  - platform: dht
    model: DHT11
    pin: GPIO2
    temperature:
      on_value_range:
      - below: 25.0
        then:
          - fan.turn_off: ${friendly_name}_fan
      - above: 25.0
        below: 30.0
        then:
          - fan.turn_on:
              id: ${friendly_name}_fan
              speed: "${speed_low}"
      - above: 30.0
        below: 35.0
        then:
          - fan.turn_on:
              id: ${friendly_name}_fan
              speed: "${speed_med}"
      - above: 35.0
        then:
          - fan.turn_on:
              id: ${friendly_name}_fan
              speed: "${speed_full}"
      name: "${friendly_name}_temp"
    humidity:
      name: "${friendly_name}_Humidity"
    update_interval: 10s
回复

使用道具 举报

23

主题

254

帖子

1736

积分

金牌会员

Rank: 6Rank: 6

积分
1736
金钱
1482
HASS币
0
发表于 2024-9-23 08:38:20 | 显示全部楼层
kittyme 发表于 2024-9-23 08:26
那是不是esp32可以再加一个温度传感器用来自动调速呢?

github上有这个项目,PID控制调速的esphome-fan-controller
回复

使用道具 举报

42

主题

307

帖子

2575

积分

论坛DIY达人

积分
2575
金钱
2263
HASS币
50
发表于 2024-9-23 09:23:57 | 显示全部楼层
个人建议你用Thermostat Controller来实现自动温度控制,可手动设置温度上限,特好用
回复

使用道具 举报

3

主题

68

帖子

545

积分

高级会员

Rank: 4

积分
545
金钱
477
HASS币
0
发表于 2024-9-23 09:32:34 | 显示全部楼层
esp32的GPIO 12 启动时必须是低电平。 你换个GPIO口就好了。
回复

使用道具 举报

19

主题

130

帖子

690

积分

高级会员

Rank: 4

积分
690
金钱
560
HASS币
0
发表于 2024-9-23 09:54:48 | 显示全部楼层
收藏一下啊
回复

使用道具 举报

42

主题

307

帖子

2575

积分

论坛DIY达人

积分
2575
金钱
2263
HASS币
50
发表于 2024-9-23 09:56:09 | 显示全部楼层
本帖最后由 shadowba 于 2024-9-23 09:57 编辑

转速检测信号需要上拉到3.3v,转速控制需要mos驱动控制,另外避开一些不建议使用的引脚
回复

使用道具 举报

3

主题

35

帖子

766

积分

论坛DIY达人

积分
766
金钱
721
HASS币
40
 楼主| 发表于 2024-9-23 10:23:12 | 显示全部楼层
kittyme 发表于 2024-9-23 08:26
那是不是esp32可以再加一个温度传感器用来自动调速呢?

哈哈,主要是我本来已经在柜子里贴了一个温湿度传感器,会计算和机柜外的温度差值,所以ESP32用的时候就没考虑加温度检测了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-10-6 06:31 , Processed in 0.115662 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表