声控灯


项目介绍

如今智能家居发展迅速,你使用过智能家居当中的智能声控灯吗?当我们跺跺脚或者拍拍手时,智能声控灯自动亮起;当没有声音时,智能声控灯处于熄灭状态。智能声控灯上安装有声音探测传感器,这些传感器将外界声音的大小,转换成对应数值。智能声控灯设置一个临界点,当声音转换后对应的数值超过该临界点时,灯光亮起一段时间。

在这一实验课程中,我们将声音传感器和紫色LED模块组合实验,学习制作一个最简单的智能声控灯。

实验组件

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

模块接线图

声控灯接线图

在线运行代码

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
from machine import ADC, Pin
import time
 
# 开启并配置ADC,量程为0-3.3V
adc=ADC(Pin(34))
adc.atten(ADC.ATTN_11DB)
adc.width(ADC.WIDTH_12BIT)

led = Pin(5,Pin.OUT)

while True: 
    adcVal=adc.read()
    if adcVal > 400:
        led.value(1)
        print(adcVal, "led on")
        time.sleep(3)
    else:
        led.value(0)
        print(adcVal, "led off")
        time.sleep(0.1)

实验结果

按照接线图正确接好模块,用USB线连接到计算机上电,单击 运行按钮 来执行程序代码。代码开始执行,"Shell"窗口打印出声音传感器接收到的声音对应的ADC值,接收到的声音增大时ADC值也增大,当ADC值大于400时,LED模块上LED亮起3秒,然后熄灭。

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

代码说明

代码说明
adc=ADC(Pin(34))创建ADC对象,设置引脚34为模拟输入。
adc.atten(ADC.ATTN_11DB)设置ADC衰减为11dB,量程为0-3.3V。
adc.width(ADC.WIDTH_12BIT)设置ADC分辨率为12位,数值范围0-4095。
adcVal=adc.read()读取ADC值,获取声音传感器的模拟信号。
if adcVal > 400:判断声音强度是否超过阈值400。
time.sleep(3)LED亮起后延时3秒,模拟声控灯的延时效果。