声音传感器检测声量


项目介绍

在这个套件中,有一个Keyes 声音传感器。实验中,我们利用这个传感器测试当前环境中的声音对应的ADC值、DAC值和输出的电压值。声音越大,ADC值、DAC值和电压值越大;并在“Shell”窗口上显示测试结果。

模块参数

工作电压DC 3.3 ~ 5V
工作电流100 mA
最大功率0.5 W
工作温度-10°C ~ +50°C
输出信号模拟信号
尺寸32 x 23.8 x 10.3 mm
定位孔大小直径为 4.8 mm
接口间距为2.54 mm 3pin防反接口

模块原理图

声音传感器模块原理图

Keyes 声音传感器主要由一个高感度麦克风元件和LM386音频功率放大器芯片组成。高感度麦克风元件用于检测外界的声音。利用LM386音频功率放大器芯片设计对高感度麦克风检测到的声音进行放大的电路,最大倍数为200倍。使用时我们可以通过旋转传感器上电位器,调节声音的放大倍数。顺时针调节电位器到尽头,放大倍数最大。

实验组件

ESP32 Plus主板
ESP32 Plus主板 x1
Keyes 声音传感器
Keyes 声音传感器 x1
XH2.54-3P 转杜邦线母单线
XH2.54-3P 转杜邦线母单线 x1
USB线
USB线 x1

模块接线图

声音传感器模块接线图

代码

from machine import ADC,Pin,DAC
import time

# 开启并配置ADC,量程为0-3.3V
adc=ADC(Pin(34))
adc.atten(ADC.ATTN_11DB)
adc.width(ADC.WIDTH_12BIT)

# 每0.1秒读取一次ADC值,将ADC值转换为DAC值输出,并将这些数据打印到“Shell”
try:
    while True:
        adcVal=adc.read()
        dacVal=adcVal//16
        voltage = adcVal / 4095.0 * 3.3
        print("ADC Val:",adcVal,"DACVal:",dacVal,"Voltage:",voltage,"V")
        time.sleep(0.1)
except:
    pass

实验结果

按照接线图正确接好模块,用USB线连接到计算机上电,单击 运行按钮 来执行程序代码。
代码开始执行,“Shell”窗口打印出声音传感器接收到的声音对应的ADC值、DAC值和电压值。对准MIC头大声说话,可以看到接收到的声音对应的ADC值、DAC值和电压值变大。

单击 停止按钮 或 Ctrl+C 退出程序

实验结果示意图

代码说明

代码说明
adc=ADC(Pin(34))定义ADC对象,采集34号引脚的模拟信号
adc.atten(ADC.ATTN_11DB)设置ADC衰减,量程为0-3.3V
adc.width(ADC.WIDTH_12BIT)设置ADC分辨率为12位
adc.read()读取当前ADC值(0~4095)
dacVal=adcVal//16将ADC值缩放为DAC输出值
voltage = adcVal / 4095.0 * 3.3将ADC值换算为实际电压
print(...)在Shell窗口打印ADC、DAC和电压值
注意事项:
1. 声音传感器模块请勿靠近强电噪声源,否则可能影响采集效果。
2. 若Shell窗口无输出,请检查接线和端口设置。
3. 代码与第十三课类似,详细原理和用法可参考第十三课内容。