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

 找回密码
 立即注册
查看: 2184|回复: 14

[硬件DIY] esphome屏幕挂灯

[复制链接]

17

主题

357

帖子

2064

积分

论坛DIY达人

积分
2064
金钱
1697
HASS币
40
发表于 2023-6-27 12:26:50 | 显示全部楼层 |阅读模式
本帖最后由 hugh_jie 于 2023-12-15 22:39 编辑

帖子中编码器部分代码参考了:
https://bbs.hassbian.com/forum.p ... tid=7200&pid=327693
切换灯光部分代码参考了:
小风扇小改造
https://bbs.hassbian.com/thread-8776-1-1.html
非常感谢


配件

  • ESP32一个,ESP8266也行
  • 编码器一个
  • ws2812灯带一条,长度自定,宽度10mm,长度需要注意,每颗灯珠标称0.3w,数量需要和电源匹配,我选的60灯的,用了44cm,26颗,亮度感觉有一点点低了
  • 水管一根,长度自定,外径25mm,壁厚2mm
  • 25mm内径水管夹2个
  • v型灯带反光槽一根,长度自定
  • 磁铁若干(可选)


组装

唯一需要注意的就是灯带贴底边槽,放在它设计的槽的话灯光范围会很大


Screenshot_20230627_124111.jpg

开口和灯带

开口和灯带

正面图

正面图

挂座

挂座

背面

背面
IMG_20230627_120423.jpg IMG_20230627_120432.jpg

水管

水管

水管夹

水管夹

接线图

接线图
IMG_20230627_200729.jpg
IMG_20230627_201022.jpg

功能

实体按钮,按一下打开灯光,继续按切换自己设的静态灯光效果,我自己只弄了4种,可以随便加
旋钮用于调节亮度
长按按钮关闭灯光
对HA中的功能无影响,预设的动态灯光效果只能在HA中调用


代码

使用的esphome

globals:                        #全局变量,用于按钮调颜色
  - id: option
    type: int
    restore_value: no
    initial_value: '1'          #打开灯光后的初始值


light:
  - platform: neopixelbus
    type: GRB
    variant: WS2812
    pin: D7
    num_leds: 26
    id: light_1
    name: "PC-screenlight"
    effects:                     #预设的动态灯光效果,基本用不上,只在HA里面用
      - addressable_rainbow:
      - addressable_color_wipe:
      - addressable_scan:
      - addressable_twinkle:
      - addressable_random_twinkle:
      - addressable_fireworks:
      - addressable_flicker:
    default_transition_length: 1.5s

# 编码器旋钮
sensor:
  - platform: rotary_encoder
    pin_a: D5
    pin_b: D6
    id: ec11
    internal: true
    min_value: 1
    max_value: 100
    resolution: 4
    icon: mdi:speedometer
    on_value:
      then:
        - light.control:
            id: light_1
            state: on
            brightness: !lambda |-
              return id(ec11).state/100.0;
            transition_length: 0s


# 编码器按钮
binary_sensor:
  - platform: gpio
    id: button
    pin: 
      number: D3
      inverted: true              #上拉后反向
      mode:
        input: true
        pullup: true              #上拉,否则疯狂输出
    internal: true
    on_click:
      - min_length: 50ms          #短按,打开和切换静态灯光
        max_length: 350ms
        then:
          - lambda: |-
              if (id(option) > 2) {
                    id(option) = 0;
                  } else {
                    id(option) += 1;
                  }
          - if:
              condition:
                lambda: |-
                  return id(option) == 0;
              then:
                - switch.turn_on: pure_white
          - if:
              condition:
                lambda: |-
                  return id(option) == 1;
              then:
                - switch.turn_on: warm_white1
          - if:
              condition:
                lambda: |-
                  return id(option) == 2;
              then:
                - switch.turn_on: warm_white2
          - if:
              condition:
                lambda: |-
                  return id(option) == 3;
              then:
                 - switch.turn_on: warm_yellow
      - min_length: 500ms
        max_length: 2000ms
        then:
          - light.toggle: light_1

# 预设静态灯光
switch:
  - platform: gpio
    name: "screen_cool_fan"
    pin: D1
    id:  screen_cool
    

  - platform: template
    id: pure_white          #近纯白
    turn_on_action:
      then:
        - switch.turn_off: warm_white1
        - switch.turn_off: warm_white2
        - switch.turn_off: warm_yellow
        - light.turn_on:
            id: light_1
            brightness: 100%
            red: 100%
            green: 96.8%
            blue: 86.7%
  - platform: template
    id: warm_white1        #暖白1
    turn_on_action:
      then:
        - switch.turn_off: pure_white
        - switch.turn_off: warm_white2
        - switch.turn_off: warm_yellow
        - light.turn_on:
            id: light_1
            brightness: 100%
            red: 100%
            green: 93.7%
            blue: 74.9%
  - platform: template
    id: warm_white2        #暖白2 
    turn_on_action:
      then:
        - switch.turn_off: warm_white1
        - switch.turn_off: pure_white
        - switch.turn_off: warm_yellow
        - light.turn_on:
            id: light_1
            brightness: 100%
            red: 100%
            green: 90.98%
            blue: 63.14%
  - platform: template
    id: warm_yellow        #暖黄
    turn_on_action:
      then:
        - switch.turn_off: warm_white1
        - switch.turn_off: warm_white2
        - switch.turn_off: pure_white
        - light.turn_on:
            id: light_1
            brightness: 100%
            red: 100%
            green: 87%
            blue: 50.2%

2023.12.15更新ws2812亮度还是不爽,且显色太差了,重新买了根据说98显指的双色温灯带,24v的,壳子还是用原来的,现在这个就需要外接电源了,使用了2个mos管
长这样
mos.png

接线图
Snipaste_2023-12-15_21-42-10.png

换了esp32c3是因为8266的pwm貌似只能输出1000Hz,加个pwm模块又不太方便在esphome里面控制,所以改了这个,而且它是真的便宜
新的yaml:
output:
  - platform: ledc
    pin: GPIO6
    id: output1
    frequency: 4882Hz
    channel: 0
    min_power: 0.025575
    max_power: 0.744524556
    zero_means_zero: true
  - platform: ledc
    pin: GPIO10
    id: output2
    frequency: 4882Hz
    channel: 4
    min_power: 0.034351
    max_power: 0.69912
    zero_means_zero: true


light:
  - platform: cwww
    name: "light"
    id: light1
    icon: mdi:lightbulb-fluorescent-tube-outline
    cold_white: output1
    warm_white: output2
    cold_white_color_temperature: 6000 K
    warm_white_color_temperature: 3000 K
    constant_brightness: true
    default_transition_length: 0.2s


switch:
  - platform: gpio
    name: "cool_fan"
    pin: GPIO3

sensor:
  - platform: rotary_encoder
    internal: true
    pin_a: GPIO18
    pin_b: GPIO19
    id: ec11
    min_value: 0
    max_value: 100
    resolution: 1
    on_clockwise:
      then:
        light.dim_relative:
          id: light1
          transition_length: 0.2s
          relative_brightness: -5%

    on_anticlockwise:
      then:
        light.dim_relative:
          id: light1
          transition_length: 0.2s
          relative_brightness: 5%

          
binary_sensor:
  - platform: gpio
    id: button
    pin: 
      number: GPIO7
      inverted: true
      mode:
        input: true
        pullup: true
    internal: true
    on_click:
      then:
        - light.toggle: light1
说明:
1.min_power和max_power用于调节pwm的控制范围,可以避免HA里面的调节虚位,需要根据实际情况调节,先不加,根据自己的灯带最大和最小亮度确定亮度百分比,比如最小亮度是10%,那么min_power就是0.1^2.8,max_power同理
2.ec11的按钮可以添加一个按下旋转调节色温的功能,B站有个大佬有发,但是我觉得没必要所以没有借鉴,有需要的自己去找额
3.这个mos管我买的店没有pwm范围,找同款有说20k以下,我拿到了就直接写了20kHz,结果亮度调节范围很小,而且低亮度闪烁严重,1000Hz基本可以覆盖0~100%,但是网上说3125以上才能完全不伤眼,所以改了个esphome推荐的几个频率中最接近的4882Hz,然后就需要使用min和max_power来修改一下

评分

参与人数 5金钱 +58 HASS币 +20 收起 理由
hundajdx + 2 论坛有你更精彩!
花落花空 + 16 大神666!
+ 20 + 20 大神666!
情非殇 + 10 论坛有你更精彩!
sorrypqa + 10 大神666!

查看全部评分

回复

使用道具 举报

50

主题

1300

帖子

4911

积分

论坛DIY达人

积分
4911
金钱
3611
HASS币
20
发表于 2023-6-27 12:52:26 | 显示全部楼层
不错吗,我还没玩过rgb
回复

使用道具 举报

17

主题

357

帖子

2064

积分

论坛DIY达人

积分
2064
金钱
1697
HASS币
40
 楼主| 发表于 2023-6-27 13:15:57 | 显示全部楼层
sorrypqa 发表于 2023-6-27 12:52
不错吗,我还没玩过rgb

家里rgb确实使用场景不多,我这之前也没用rgb,屏幕挂灯确实用不上,只是那个灯带用久了感觉有点闪才换的
回复

使用道具 举报

12

主题

417

帖子

2288

积分

金牌会员

HomeAssistant

Rank: 6Rank: 6

积分
2288
金钱
1866
HASS币
20
发表于 2023-6-27 14:25:20 | 显示全部楼层
没有效果图呀
回复

使用道具 举报

2

主题

341

帖子

2324

积分

金牌会员

Rank: 6Rank: 6

积分
2324
金钱
1978
HASS币
30
发表于 2023-6-27 15:53:53 | 显示全部楼层
实际效果图?亮度可以吗?
回复

使用道具 举报

16

主题

140

帖子

1744

积分

金牌会员

Rank: 6Rank: 6

积分
1744
金钱
1604
HASS币
20
发表于 2023-6-27 19:41:06 | 显示全部楼层
秀儿!
回复

使用道具 举报

17

主题

357

帖子

2064

积分

论坛DIY达人

积分
2064
金钱
1697
HASS币
40
 楼主| 发表于 2023-6-27 20:09:31 | 显示全部楼层

之前是白天,没拍
回复

使用道具 举报

17

主题

357

帖子

2064

积分

论坛DIY达人

积分
2064
金钱
1697
HASS币
40
 楼主| 发表于 2023-6-27 20:13:38 | 显示全部楼层
fung1006 发表于 2023-6-27 15:53
实际效果图?亮度可以吗?

有了,亮度我感觉略低了点,主要是壳子是我之前的,长度受限了,重头做的话可以长点,或者有单独电源的话选灯密一点的,我这是usb供电,只有5v2A
回复

使用道具 举报

0

主题

21

帖子

528

积分

高级会员

Rank: 4

积分
528
金钱
507
HASS币
0
发表于 2023-6-28 17:07:47 | 显示全部楼层
这东西玩玩可以的,不过真的用,屏幕挂灯技术还是很高的,否者一个灯也不会一千多了
回复

使用道具 举报

11

主题

222

帖子

2205

积分

论坛DIY达人

积分
2205
金钱
1973
HASS币
40
发表于 2023-7-3 09:57:23 | 显示全部楼层
想法不错,白光最好还是用一个wwcw的等待来做,2812混出来的白光偏冷
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-2 17:10 , Processed in 0.290409 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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