littlebot
Published on 2025-04-16 / 0 Visits
0

【源码】基于esphome框架的声音源检测系统

项目简介

本项目基于esphome框架开发,将声音分析代码与esphome进行整合,能够依据声音频率识别声音源,可检测如门铃等特定声音。并且能将检测结果推送到Home Assistant,用户可基于此实现多样化操作,比如向手机发送通知。

项目的主要特性和功能

  1. 声音源检测:依据频率识别特定声音源。
  2. 与Home Assistant集成:把检测结果推送到Home Assistant,便于用户进行自动化设置。
  3. 灵活配置:支持在yaml文件中灵活设置,既可以不设置特定二进制传感器,由Home Assistant分析数值并创建自动化事件;也能直接在yaml文件中定义传感器。

安装使用步骤

准备工作

假设你已下载本项目的源码文件,且已按照setup-dev-env步骤设置好开发环境。项目使用的硬件为ESP32_DEVKIT_V4 + inmp441

配置yaml文件

方法一:不设置特定二进制传感器

在yaml文件中配置基本信息,如设备名称、Wi-Fi、I2S音频、麦克风等。示例如下: ```yaml esphome: name: sounddetector

esp32: board: esp32dev framework: type: arduino

api: encryption: key: "H8sN4oR4ldRe01BuqEU+uQujPqqSdVU+3lICyMZfn94a5Dd="

wifi: networks: - ssid: "?" #fill your wifi ssid password: "" #fill your wifi password ap: ssid: "Hotspot_MIC" password: "totalySecretPassword"

captive_portal:

i2s_audio: i2s_lrclk_pin: GPIO18 # depends your wiring i2s_bclk_pin: GPIO23 # depends your wiring

microphone: - platform: i2s_audio id: external_mic adc_type: external i2s_din_pin: GPIO19 # depends your wiring pdm: false bits_per_sample: 32bit sample_rate: 22627 use_apll: true

detect_audio: id: "detect_audio_id"

switch: - platform: template name: "Mic ON" turn_on_action: - microphone.capture: turn_off_action: - microphone.stop_capture: lambda: return id(external_mic).is_running();

button:

sensor:

binary_sensor: ```

方法二:直接在yaml文件中定义传感器

在上述yaml文件基础上,在detect_audio中添加sound_sources配置数组,示例如下: yaml detect_audio: id: "detect_audio_id" sound_sources: [{"name":"bel1","level": 45}, {"name":"bel2","level": 182}] # add as many as wanted

编译和烧录

使用https://web.esphome.io/将编译后的镜像烧录到开发板。

测试

你可以使用真实设备进行测试,也可以在手机上安装Frequency Generator,设置为1000HZ,正常情况下应得到峰值45。同时,还能通过连接到电脑的USB串口电缆启用调试日志进行查看。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】