STM32入门必看 简单几步用cubeMX模拟声控灯

一、为什么叫模拟声控灯?

生活中我们可以在很多场所看见声控灯,那么声控灯的原理究竟是什么呢?
了解其原理后,我们自己也可以动手做一个声控灯。本文我将用声音传感模块和单片机(STM32F103)来模拟我们常见的声控灯的工作过程。

二、操作步骤

1.声音传感模块

我使用的是高感度麦克风传感器模块,淘宝链接 点击这里

在这里插入图片描述

2.硬件连接

传感器共有四个IO口,分别为两个电源口,两个输出口
AO:模拟量输出,实时输出麦克风的电压信号
DO:当声音强度到达某个阈值时,输出高低电平信号[阈值灵敏度可以通过电位器调节]。
我们不需要太高精度的声音检测,只需要检测声音强度够大就可以实现声控灯的效果,所以我们只需要一个DO口就可以。所以DO口要连接单片机上的读入引脚,这里我使用的是PC0

传感器单片机
GGND
+VCC5
DOC0
AO什么都不用连

硬件连接图如下
在这里插入图片描述

3.在cubeMX中配置

(1)使用cubeMX新建一个工程
在这里插入图片描述
(2)根据使用的单片机选择芯片,我使用的是STM32F103mini开发板,它的芯片是STM32F103RCTx
在这里插入图片描述
(3)配置时钟
在这里插入图片描述
在这里插入图片描述
(4)我们还需要一个PC0输入引脚和一个输出引脚,输出引脚来控制LED灯模拟我们需要控制的灯,查板子原理图可以知道单片机上的LED0连接的引脚是PA8,所以要把PC0设置为读入引脚,PA8设置为输出引脚
在这里插入图片描述
在这里插入图片描述
(5)其他保持默认,保存工程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里勾选方便后面代码编写调试
在这里插入图片描述
(6)生成代码
在这里插入图片描述

4.主函数

当有声音时,传感器的DO口输出高电平,也就是代码中的1,其他时候为0,所以只需要判断PC0读入的是高还是低电平,就可以知道什么时候灯该亮
代码如下(示例):

/* USER CODE BEGIN 0 */
int a=0;//定义一个变量
/* USER CODE END 0 */
while (1)
 {
   /* USER CODE END WHILE */

   /* USER CODE BEGIN 3 */
	a = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_0);//将a赋值为对应的高低电平,也就是0或者1
	if(a==1)//如果为高电平,也就是有声音
	{
		HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);//灯亮
		HAL_Delay(2000);//延时一段时间让灯亮
	}
		HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET);//没有声音后灯灭			
 }
 /* USER CODE END 3 */

三、效果展示

没有声音时,单片机上的红灯保持熄灭,当手拍桌子时有声音,单片机上的红灯亮起

基于STM32和声音传感器的声控灯


STM32声控灯实验是一种通过声音信号控制灯光开关的实验。它基于STM32系列微控制器,通过捕捉外部声音信号,对信号进行处理并控制灯光的亮灭。 在这个实验中,首先需要准备一个STM32微控制器开发板,以及与之对应的开发环境。接着,将声音传感器与开发板相连,以便获取外部声音信号。我们可以使用模拟输入引脚来接收从声音传感器发出的模拟信号,并通过模数转换器将其转换为数字信号。 在STM32的程序中,首先需要初始化声音传感器以及模数转换器,并设置相应的参数。然后,通过中断等方式不断地获取外部声音信号,并进行处理。处理的方式可以是根据声音的幅度或频率进行判断,如果满足预设条件,就触发相应的灯光操作。比如,当声音信号的幅度超过一定阈值时,开启灯光;当声音信号的频率达到一定范围时,关闭灯光。 除了灯光控制,我们也可以加入其他功能,例如调整灯光的亮度或颜色。这可以通过PWM信号控制灯光的驱动电路来实现。 在进行实验时,可以通过不同的声音信号进行测试,观察灯光的响应。我们还可以调整声音的敏感度和触发条件,以便实现更精确的控制效果。 总之,基于STM32声控灯的实验可以让我们了解声音信号的捕获和处理原理,同时也展示了STM32微控制器的强大功能和灵活性。它的应用范围广泛,可以用于智能家居、音乐节奏灯以及声控交互等方面。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值