这是一款功能实用的声音传感器,可精准感知周围环境声音信号,并将其转换为电信号输出,以便后续处理与分析 。常用于各类需要对声音进行检测、监测的项目场景,如智能家居设备、环境噪音监测系统、智能玩具等。主体为红色电路板,布局紧凑合理。一侧搭载有灵敏的咪头(声音采集部件),用于捕捉声音信号,实时监测环境噪音水平,电路板上还设有多个标识清晰的元件,包括用于调节的蓝色电位器(标有 “W104” ),可对传感器灵敏度等参数进行微调 ;以及指示灯(LED1、LED2 ),能直观呈现传感器工作状态。
工作原理:传感器内部集成音频放大芯片 LM386,该芯片具有自身功耗低、增益可调整(放大 200 倍 )、电源电压范围大、外接元件少和总谐波失真小等优点。当声音信号被咪头捕捉后,会先转换为微弱电信号,经 LM386 芯片放大处理。模拟量输出(AO )可输出连续变化、与声音强度成比例的电压信号,适合用于对声音强度进行精确测量与分析的场景;数字量输出(DO )则会在声音强度超过设定阈值时,输出低电平信号,可用于简单的声音有无判断或触发控制场景。
| 产品信息 | 详细参数 |
| 供电电压 | 3.3V~5V DC(兼容主流开发板电源输出) |
| 工作电流 | 约 20mA(5V 供电时) |
| 模拟量信号(AO) | 0-3.3V(与声音强度成比例) |
| 数字量输出(DO) | TTL 电平(高电平≈VCC,低电平≈0V) |
| 频率响应范围 | 20Hz-20kHz(人耳可听范围) |
| 灵敏度调节范围 | 通过电位器可调,阈值范围约 50-800mV |
| 音频放大芯片 | LM386N-1 |
| 输出阻抗 | 模拟输出:≤10kΩ,数字输出:≤100Ω |
| 工作温度 | -20℃ ~ +60℃ |
| 存储温度 | -30℃ ~ +80℃ |
| 信噪比(SNR) | ≥45dB |
| 动态范围 | 约 40dB |
| 响应时间 | ≤10ms |
| 分辨率 | 模拟量:≈0.05mV(12 位 ADC 采样),数字量:二进制(0/1) |
| 触发阈值 | 数字输出:约 0.5-3V(可调),hysteresis:≈0.2V(抗干扰回差) |
| 静态功耗 | ≤100mW(3-5V 供电) |
| 动态功耗 | ≤200mW(最大声压时) |
| 产品尺寸 | 3.2cm × 2.2cm × 1.5cm(不含引脚) |
| 树莓派pico | 声音传感器 |
| 3.3 | +正极 |
| GND | -负极 |
| GP26 | AO模拟量 |

import machine
import utime
import math
# 配置ADC引脚(GP26对应ADC0)
adc = machine.ADC(0)
# 参考电压(单位:伏特)
REFERENCE_VOLTAGE = 3.3
# ADC分辨率(16位ADC的最大值为65535)
ADC_RESOLUTION = 65535
# 参考声压级(单位:伏特),需要根据传感器校准
REFERENCE_SOUND_PRESSURE = 0.02 # 示例值,可能需要根据实际传感器校准
def adc_to_voltage(adc_value):
"""将ADC值转换为电压值"""
return adc_value * (REFERENCE_VOLTAGE / ADC_RESOLUTION)
def voltage_to_decibel(voltage):
"""将电压值转换为分贝值"""
if voltage <= 0:
return 0 # 避免对数计算错误
# 使用公式 dB = 20 * log10(测量电压/参考电压)
return 20 * math.log10(voltage / REFERENCE_SOUND_PRESSURE)
def calibrate_reference_sound_pressure(samples=100):
"""校准参考声压值(在安静环境下运行)"""
total = 0
for _ in range(samples):
total += adc.read_u16()
utime.sleep_ms(10)
avg_adc = total / samples
avg_voltage = adc_to_voltage(avg_adc)
return avg_voltage * 2 # 设置参考值为平均噪声的2倍
try:
print("正在校准参考声压值,请保持安静环境...")
REFERENCE_SOUND_PRESSURE = calibrate_reference_sound_pressure()
print(f"参考声压值已校准为: {REFERENCE_SOUND_PRESSURE:.4f}V")
print("开始检测声音...")
while True:
# 读取ADC值
adc_value = adc.read_u16()
# 转换为电压
voltage = adc_to_voltage(adc_value)
# 转换为分贝
decibel = voltage_to_decibel(voltage)
# 打印结果
print(f"ADC: {adc_value:5d} | 电压: {voltage:.4f}V | 分贝: {decibel:5.1f}dB", end='\r')
# 延时
utime.sleep(0.1)
except KeyboardInterrupt:
print("\n程序已停止") 运行结果:
说明:分贝计算是相对于参考声压的相对值,实际测量的绝对值需要专业校准,不同的输入电压的灵敏度是不同的,可能需要调整参考值以获得更准确读数,如果环境噪声较大,校准结果也可能不准确,可以尝试手动设置参考值。根据模拟量输出的电压进行调整。
联系人:张工
电话:0755-32914578
QQ:2251000002
微信:扫下方二维码添加,请备注来意
提供:人工智能,IOT物联网,工控数显,嵌入式软硬件开发,科创教育,产品定制,生产,方案解决...