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

 找回密码
 立即注册
查看: 1947|回复: 12

[硬件DIY] ESPHOME-自制鱼缸冷水机温控器

[复制链接]

18

主题

266

帖子

2160

积分

论坛DIY达人

积分
2160
金钱
1889
HASS币
20
发表于 2024-6-10 18:03:43 | 显示全部楼层 |阅读模式
本帖最后由 polisher 于 2024-6-10 18:14 编辑

一、背景
养了2缸小鱼,夏季燥热必须得冷水机伺候,为了接入HA特意对温控器进行了重新设计,没什么技术含量,算是供友友们复刻方便特发此贴。温控器可带20A的负载,代码稍作调整,即可实现冷热控制。该温控器备用了很多IO口,可增加水位检测、TDS检测等功能,如友友有兴趣,我再贴上相关电路和代码。
二、成品
4075cd522aa24fe9d2400e83efb907b.jpg
三、原理图
2.jpg

显示屏

显示屏

1. 元件的选用和电路的设计主要根据手里的现有材料,友友们可自行按实际情况调整;
2. 该电路板适用于12V输入,可装入STC-1000、STC-100、STC-200、STC-8080、STC-9100等温控器中,可自行根据尺寸选择;
3. 数码管采用了FJ5422BH,非常适合温度显示,但由于码段属于非标,不能直接用ESPHome的数码管驱动组件,特对代码做了适配,请通过外部组件方式调用,请在此处下载附件 tm1637-6c.zip (5.77 KB, 下载次数: 5)
3. 工程项目分享嘉立创,方便友友们白嫖(点击这里
4. 不妥之处,望各位友友不吝赐教。
四、主要物料
序号名称型号描述参考单价(元)
1
数码管FJ5422BH4位0.5英寸 超高红 共阳 带温度符号数
2
2
轻触开关6*6*5mm
0.25
3
数码管驱动TM1637SOP-20
1.56
4
继电器 HF152F/012-1HST12V,20A
3.5
5
螺钉式接线端子DB125-2.54-9P直插,间距2.54mm,1x9P
5
6
螺钉式接线端子KF300-5.0-2P直插,间距5mm,1x2P
0.54
7
WiFi模块ESP32-C3-MINI-1焊接有些难度
10.8
8
降压模块(LDO)12V-5V查看链接
2.1
9
降压模块(DCDC)5V-3.3V查看链接
0.47
10
温度传感器DS18B20防水型也可以用NTC热敏电阻,代码自行调整
2.46
11
温控器STC-1000这货外壳5元(阿里),整机11.5元(淘宝)
五、部分ESPHome代码(论坛的代码添加不会用。很好奇,论坛管理员大佬为什么不优化一下这个功能) ESPhome代码.txt (4.62 KB, 下载次数: 13)
captive_portal:
external_components:
  - source: mycomponents  
substitutions:
  device_name: Wkq
  RELAY_COOL: GPIO5 #制冷器继电器
  RELAY_FAN: GPIO4 #风扇继电器
  DS18B20_WATER: GPIO2 #水温温度传感器
  DS18B20_COOL: GPIO3 #制冷器散热片温度传感器
  BACKUP_IO_1: GPIO10 #备用IO口(WL)
  BACKUP_IO_2: GPIO0 #备用IO口
  BACKUP_IO_4: GPIO1 #备用IO口
  S_DA: GPIO18 #数码管控制SDA
  S_CL: GPIO19 #数码管控制SCL
globals:
   # 运行状态   
   - id: workstate 
     type: bool
     restore_value: no
     initial_value: "false"  
   # 设置状态   
   - id: setupstate 
     type: bool
     restore_value: no
     initial_value: "false"      
switch: 
  - platform: gpio   
    pin: $RELAY_COOL
    name: "${device_name} cool"
    id: relay_cool  
  - platform: gpio   
    pin: $RELAY_FAN
    name: "${device_name} fan"
    id: relay_fan

binary_sensor:
  - platform: tm1637-6c
    internal: True
    id: key0
    name: key power
    tm1637_6c_id: tm1637_display
    key: 8
    on_click:
      - if:
          condition:
            - lambda: 'return id(workstate) ;'
          then:   
            - climate.control:
                id: water_thermostat
                mode: "OFF"
          else: 
             - climate.control:
                id: water_thermostat
                mode: "COOL"                 
  - platform: tm1637-6c
    internal: True
    id: key1
    name: key setup
    tm1637_6c_id: tm1637_display
    key: 9
    on_click: 
      - if:
          condition:
            - lambda: 'return id(setupstate) ;'
          then:   
            - lambda: id(setupstate)=false;
          else: 
            - lambda: id(setupstate)=true;
        
  - platform: tm1637-6c
    internal: True  
    id: key2
    name: key up
    tm1637_6c_id: tm1637_display
    key: 10
    on_click:
      - if:
          condition:
            - lambda: 'return id(setupstate) ;'
          then:         
            - lambda: id(water_thermostat).target_temperature=id(water_thermostat).target_temperature+0.1;
  - platform: tm1637-6c
    internal: True  
    id: key3
    name: key down
    tm1637_6c_id: tm1637_display
    key: 11    
    on_click:
      - if:
          condition:
            - lambda: 'return id(setupstate) ;'
          then:         
            - lambda: id(water_thermostat).target_temperature=id(water_thermostat).target_temperature-0.1;
display:
    platform: tm1637-6c
    id: tm1637_display
    clk_pin: $S_CL
    dio_pin:  $S_DA
    length: 4
    inverted: false
    # F运行;|设置
    update_interval: 500ms
    lambda: |-
      static int i = 0;
      i++;
      if (id(setupstate)){
        //如果为设置状态,则数码管闪烁。
        if ((i % 2) == 0)
          it.printf("|%2.1f", id(water_thermostat).target_temperature);
        else
          it.print("|");   
      }else{
        char ch = '|';
        //如果制冷器继电器打开,数码管cool处显示制冷运行标识
        if (id(relay_cool).state)
          if (id(water_temperature).state<0)
            ch = '+';
          else
            ch = '#';
        //如果风扇继电器打开,数码管heat处显示风扇运行标识
        if (id(relay_fan).state) 
          if (id(water_temperature).state<0)
            ch = '/';
          else        
            ch = '$';
        //如果制冷器继电器与风扇继电器都打开,则数码管显示制冷与风扇运行标识
        if (id(relay_fan).state && id(relay_cool).state)
          if (id(water_temperature).state<0)
            ch = '<';
          else        
            ch = '&';  
        it.printf(0,"%c",ch);  //1位数码管显示信息(运行标识、正负符号、℃)
        it.printf(1,"%2.1f", abs(id(water_temperature).state)); //2、3、4位数码管显示当前温度值

      }

sensor:
  - platform: dallas
    index: 0
    id: water_temperature
    dallas_id: hub1
    name: "${device_name} Water Temperature"
 
dallas:
  - pin: $DS18B20_WATER
    update_interval: 1s
    id: hub1          
climate:
  - platform: thermostat
    name: "${device_name} Water Thermostat" 
    id: water_thermostat
    entity_category: config
    cool_deadband: 1
    cool_overrun: 0
    sensor: water_temperature
    on_boot_restore_from: memory    
    min_cooling_off_time: 0s
    min_cooling_run_time: 0s
    min_idle_time: 0s
    cool_action:
      - switch.turn_on: relay_cool
      - lambda:  id(workstate)=true;
    idle_action:
      - switch.turn_off: relay_cool   
      - lambda:  id(workstate)=false; 

评分

参与人数 5金钱 +45 收起 理由
sirakawa + 10 高手,这是高手!
pengguilian + 5 大神666!
hhh. + 10 感谢楼主分享!
kaka0992 + 10 感谢楼主分享!
flyice + 10 感谢楼主分享!

查看全部评分

回复

使用道具 举报

20

主题

265

帖子

1850

积分

金牌会员

Rank: 6Rank: 6

积分
1850
金钱
1585
HASS币
0
发表于 2024-6-10 20:34:06 | 显示全部楼层
最喜欢这种坛友了,无私奉献
回复

使用道具 举报

0

主题

45

帖子

1086

积分

金牌会员

Rank: 6Rank: 6

积分
1086
金钱
1041
HASS币
0
发表于 2024-6-11 13:46:37 | 显示全部楼层
第一次听说鱼怕热
回复

使用道具 举报

0

主题

144

帖子

1154

积分

金牌会员

Rank: 6Rank: 6

积分
1154
金钱
1010
HASS币
0
发表于 2024-6-17 01:06:00 | 显示全部楼层
成品冷水机也是这个温控器,设置好温度自动工作的,你这个接入的目的是什么呢?大佬,能看看你接HA里面的截图吗?
回复

使用道具 举报

0

主题

144

帖子

1154

积分

金牌会员

Rank: 6Rank: 6

积分
1154
金钱
1010
HASS币
0
发表于 2024-6-17 01:07:11 | 显示全部楼层
yuhuanfan 发表于 2024-6-11 13:46
第一次听说鱼怕热

有些热带鱼怕热也怕冷的,需要恒定温度的,比如活珊瑚那些海缸
回复

使用道具 举报

18

主题

266

帖子

2160

积分

论坛DIY达人

积分
2160
金钱
1889
HASS币
20
 楼主| 发表于 2024-6-17 17:35:30 | 显示全部楼层
本帖最后由 polisher 于 2024-6-17 17:40 编辑
zhuzhuzhu 发表于 2024-6-17 01:06
成品冷水机也是这个温控器,设置好温度自动工作的,你这个接入的目的是什么呢?大佬,能看看你接HA里面的截 ...

就是用原温控器改的。不外乎就是DIYER接入HA的执念而已,同时也消耗一些过剩的模块。哈哈。
改后的温控器可以远程恒温设定,且留有很多IO口,可以利用起来检测水位、水质等。

1.png
回复

使用道具 举报

0

主题

144

帖子

1154

积分

金牌会员

Rank: 6Rank: 6

积分
1154
金钱
1010
HASS币
0
发表于 2024-6-17 19:07:58 | 显示全部楼层
polisher 发表于 2024-6-17 17:35
就是用原温控器改的。不外乎就是DIYER接入HA的执念而已,同时也消耗一些过剩的模块。哈哈。
改后的温控器 ...

太牛逼了,大佬我有这个东西,需要哪些材料才能接进来呢
回复

使用道具 举报

0

主题

144

帖子

1154

积分

金牌会员

Rank: 6Rank: 6

积分
1154
金钱
1010
HASS币
0
发表于 2024-6-17 19:09:26 | 显示全部楼层
polisher 发表于 2024-6-17 17:35
就是用原温控器改的。不外乎就是DIYER接入HA的执念而已,同时也消耗一些过剩的模块。哈哈。
改后的温控器 ...

方便的话加个V
回复

使用道具 举报

18

主题

266

帖子

2160

积分

论坛DIY达人

积分
2160
金钱
1889
HASS币
20
 楼主| 发表于 2024-6-20 16:15:30 | 显示全部楼层
本帖最后由 polisher 于 2024-6-20 16:22 编辑

预留

回复

使用道具 举报

18

主题

266

帖子

2160

积分

论坛DIY达人

积分
2160
金钱
1889
HASS币
20
 楼主| 发表于 2024-6-20 16:16:34 | 显示全部楼层
本帖最后由 polisher 于 2024-6-20 16:30 编辑

积木式制作
物料
序号物料 图片 数量 参考单价
1 ESP-32开发板已焊接(CP2102+数据线 esp.png 1 点击
2 5V四路继电器模块 relay.png 1 点击
3 数字温度传感器DS18B20防水型 ds18b20.png 2 点击
4 纯铜镀金加粗28芯 母对母 2.54mm 80CM 10P 线.png 1 点击
5 烙铁、焊锡、松香,其他连接电线自备

esp.png
relay.png
ds18b20.png
线.png
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 00:33 , Processed in 0.134022 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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