第3-7讲:声音探测传感器
-
- 学习目的
- 了解声音探测传感器模块的作用。
- 掌握单片机编程读取声音探测传感器模块引脚输出状态,从而判断周围环境声音强度有没有达到设置的阈值。
- 声音探测传感器简介
声音探测传感器模块对环境声音强度敏感,常用来检测周围环境的声音强度,当环境声音强度达不到设定阈值时,OUT引脚输出高电平,当外界环境声音强度超过设定阈值时,模块OUT引脚输出低电平。声音探测传感器在生活中比较常见的应用是楼道的声控照明。声音探测传感器如下图所示。
图1:声音探测传感器
- 声音探测传感器模块特性
- 可以检测周围环境的声音强度,需要注意的是:该传感器只能识别声音的有无(根据震动原理)不能识别声音的大小或者特定频率的声音。
- 灵敏度可调(图中蓝色数字电位器调节)。
- 工作电压范围:直流电压(3.3~5)V。
- 输出形式:数字开关量输出(0和1高低电平)。
- 设有固定螺栓孔,方便安装。
- 小板PCB尺寸:3.2cm * 1.7cm。
- 引脚说明
声音探测传感器模块的引脚如下图所示。
表1:声音探测传感器引脚描述
序号 | 针脚名称 | 功能描述 |
1 | VCC | 模块3.3V/5V供电正。 |
2 | GND | 模块供电负。 |
3 | OUT | 数字开关量输出(高低电平)。 |
-
- 软件设计
- 声音探测实验
- 软件设计
- 注:本节的实验是在“实验2-6-1:串口1数据收发实验”的基础上修改,本节对应的实验源码是:“实验3-7-1:声音探测传感器实验”。
-
-
- 实验内容
-
-
单片机实时读取声音探测传感器模块输出引脚的状态,以此判断环境声音强度有没有达到设定阈值。
- 高电平:环境声音强度达不到设定阈值,指示灯D1熄灭。
- 低电平:环境声音强度达到设定阈值,指示灯D1点亮,串口输出提示信息。
-
-
- 代码编写
-
-
本节的代码比较简单,我们直接在“main.c”文件中编写相关的代码。
- 定义引脚
首先,定义连接声音探测传感器模块输出的引脚,本例中,我们用P5.1连接模块的输出引脚,定义如下。
代码清单:引用头文件
- sbit sensor_in = P5^1; //用于读取声音探测传感器模块输出引脚的状态
- 读取引脚状态
程序初始化时将P5.1引脚配置为准双向,主循环中不断读取该引脚状态,如为高电平,则认为有人经过,代码清单如下。
代码清单:主函数
- /**************************************************************************
- 功能描述:主函数
- 参 数:无
- 返 回 值:int类型
- **************************************************************************/
- int main(void)
- {
- P2M1 &= 0xBF; P2M0 &= 0xBF; //设置P2.6为准双向口(LED1)
- P3M1 &= 0xFE; P3M0 &= 0xFE; //设置P3.0为准双向口(串口1的RxD)
- P3M1 &= 0xFD; P3M0 |= 0x02; //设置P3.1为推挽输出(串口1的TxD)
- P5M1 &= 0xFD; P5M0 &= 0xFD; //设置P5.1为准双向口 (声音探测传感器模块输出)
- uart1_init(); //串口1初始化
- while(1)
- {
- if(sensor_in == 0) //声音超过设置的阈值,传感器模块OUT引脚输出低电平
- {
- led_on(LED_1); //点亮用户指示灯D1
- printf("sound detected!\r\n"); //串口输出提示信息
- delay_ms(100); //延时100ms,方便在串口调试助手中观察实验数据
- }
- else
- {
- led_off(LED_1); //熄灭用户指示灯D1
- }
- }
- }
-
-
- 硬件连接
-
-
如下图所示,将声音探测传感器安装到开发板的J22端子上。
图2:硬件连接
-
-
-
- 实验步骤
-
-
- 解压“…\第3部分:配套例程源码”目录下的压缩文件“实验3-7-1:声音探测传感器实验”,将解压后得到的文件夹拷贝到合适的目录,如“D\STC8”(这样做的目的是为了防止中文路径或者工程存放的路径过深导致打开工程出现问题)。
- 双击“…\sound_detection\project”目录下的工程文件“sound_detection.uvproj”。
- 点击编译按钮编译工程,编译成功后生成的HEX文件“sound_detection.hex”位于工程的“…\sound_detection\Project\Object”目录下。
- 打开STC-ISP软件下载程序,下载使用内部IRC时钟,IRC频率选择:24MHz。
- 电脑上打开串口调试助手,选择开发板对应的串口号,将波特率设置为9600bps。
- 程序运行后,在没有较强声音信号的情况下,可观察到开发板用户指示灯D1熄灭,串口无输出。对着声音传感器咳嗽、拍巴掌或大声说话时可以观察到指示灯D1点亮,并通过串口输出提示信息。
图3:串口调试助手中观察结果