项目简介
本项目基于esphome框架开发,将声音分析代码与esphome进行整合,能够依据声音频率识别声音源,可检测如门铃等特定声音。并且能将检测结果推送到Home Assistant,用户可基于此实现多样化操作,比如向手机发送通知。
项目的主要特性和功能
- 声音源检测:依据频率识别特定声音源。
- 与Home Assistant集成:把检测结果推送到Home Assistant,便于用户进行自动化设置。
- 灵活配置:支持在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】