Skip to content

Latest commit

 

History

History
151 lines (119 loc) · 5.76 KB

README-Chinese.md

File metadata and controls

151 lines (119 loc) · 5.76 KB

English

音乐灯带

音乐灯带实时跟随当前环境声音,在led灯带上展现不同的虚拟效果。 程序基于ESP32模块,在Arduino或者ESPHome平台上运行(ESPHome平台可方便接入HomeAssistant)。

Real-time LED strip music visualization running on ESP32 based on Arduino or ESPHome platform(ESPHome can connect to HomeAssistant easily).

效果展现

更多灯带视频参见https://lw.hachina.io/

硬件与连接

需要的硬件

注:

  1. HAChina的麦克风扩展板能与Nodemcu 32s直接进行物理对接。产品地址
  2. 如果不使用HAChina的麦克风扩展板,需要自己连接麦克风(PDM型,如果采用I2S麦克风,需要修改程序)。
  3. 灯带控制使用FastLED库,它支持的可控灯带类型: https://github.com/FastLED/FastLED#supported-led-chipsets

麦克风扩展板与连接

可以直接购买使用HAChina的麦克风扩展板,其中包含:一个PDM数字麦克风,一个触摸按钮,方便连接灯带的接线柱。

它能与nodemcu-32s方便对接。

物理连接图

实际物理连接图如下

ESPHome平台

拷贝music_leds_esphome.hinclude目录到ESPHome的配置目录中

git clone https://github.com/zhujisheng/audio-reactive-led-strip

cp -r audio-reactive-led-strip/includes/ ~/esphome_config/

cp audio-reactive-led-strip/music_leds_esphome.h ~/esphome_config/

注:以上命令供参考。你只要将includes目录(目录中4个文件)和music_leds_esphome.h文件放置在ESPhome的配置目录即可。

ESPHome Yaml配置

【配置灯带】

  1. 在ESPHome中应用向导生成基础yaml配置文件
  2. 在yaml配置文件的esphome域中增加包含music_leds_esphome.h文件(如下面样例)
  3. 按照常规fastled灯带配置(支持3线与4线的各种灯带)
  4. 在正常配置基础上,增加随音乐而动的addressable_lambda效果(如下面样例)
  5. 编译固件,上传。启动后,在HomeAssistant配置中接入。

注:

  • 上传固件到ESP32开发板时,需要按住板上IO0按钮(或者boot按钮)。
  • 在供电不足时,上传后ESP32无法正常工作,增加电力供应即可。
  • 如果灯带上led的数量不是60个,请同时修改配置文件中的num_leds,与music_leds_esphome.h文件中的N_PIXELS
esphome:
  name: ......
  platform: ESP32
  board: ......
  includes:
    - music_leds_esphome.h
    - includes/FFT.h
    - includes/ExpFilter.h
    - includes/VisualEffect.h
    - includes/gaussian_filter1d.h

.......

light:
  - platform: fastled_clockless
#  - platform: fastled_spi
    id: LedsStrip
    chipset: NEOPIXEL
    #chipset: APA102
    pin: GPIO21
    #data_pin: GPIO21
    #clock_pin: GPIO17
    num_leds: 60
    #rgb_order: BGR
    name: "MUSIC LEDS"
    effects:
      - addressable_rainbow:
      - addressable_lambda:
          name: Scroll with Music
          update_interval: 0s
          lambda: |-
            music_leds.ShowFrame(MODE_SCROLL, &it);
      - addressable_lambda:
          name: Energy with Music
          update_interval: 0s
          lambda: |-
            music_leds.ShowFrame(MODE_ENERGY, &it);
      - addressable_lambda:
          name: Spectrum with Music
          update_interval: 0s
          lambda: |-
            music_leds.ShowFrame(MODE_SPECTRUM, &it);

【配置触摸按钮】

以下配置实现Touch Pad开关灯的效果。 进一步的Touch Pad配置,参考:https://esphome.io/components/binary_sensor/esp32_touch.html

esp32_touch:
#  setup_mode: True
binary_sensor:
  - platform: esp32_touch
    name: "Touch Pad on ESP32"
    pin: GPIO32
    threshold: 1000
    on_press:
      then:
        - light.toggle: LedsStrip

Arduino平台

在arduino IDE中安装ESP32开发库

启动arduino IDE ,在首选项中添加ESP32开发板网址:https://dl.espressif.com/dl/package_esp32_index.json

添加完成之后,打开开发板管理器,搜索ESP32,安装即可,由于网络原因,可能需要多安装几次才能成功。

在arduino IDE中安装fastled库

在菜单项目 加载库 管理库……中查找并安装最新版本的fastled

克隆项目

git clone https://github.com/zhujisheng/audio-reactive-led-strip

编译上传
  1. 在Arduino中打开audio-reactive-led-strip.ino
  2. 电脑USB口连接ESP32模块
  3. 在菜单工具中选择正确的开发板与端口(串口)
  4. 编译上传即可
  5. 如果连接非三线60led的灯带,可以修改audio-reactive-led-strip.ino文件中的一些定义:N_PIXELS以及FastLED.addLeds调用

致谢

本项目的实现参考项目https://github.com/scottlawsonbc/audio-reactive-led-strip。但完全使用C++实现,运行硬件架构也更简洁(不需要带声音输入设备的PC或树莓派),并且能与HomeAssistant快速集成。

本项目中应用的PCB板的设计与生产,由Zack-Xu同学完成。