STM32物联网套件基础版02-驱动蜂鸣器

前言

上一节,我们完成了驱动LED实验,本节我们学习使用蜂鸣器,首先我们介绍下蜂鸣器,然后完成实验:每隔一秒钟驱动蜂鸣器报警一次。

一、基础知识

1. STM32物联网套件简介

STM32物联网套件目前有两个版本:基础版和高级版,后续会增加应用版本和语音版,核心板均采用STM32F103C8T6核心板,基础版主要元器件如下所示:
在这里插入图片描述
高级版版主要元器件如下所示:
在这里插入图片描述
STM32物联网套件致力于带领大家入门物联网,不仅学习STM32,也了解转微信小程序开发、物联网服务器后台开发,真正做到了解一个物联网项目的方方面面,基于此,我们定制了一套通用的WIFI通讯协议(可以理解为类似AT指令,不过集成度更高,几条指令就可以直连接云平台),如三条指令连接腾讯云实例。

后续我们会继续增加涂鸦智能、电信云、移动Onenet、阿里云等主流云平台的支持,力争做到,一套STM32代码,通过定制的WIFI模块可以连接到不同的云平台,也欢迎有产品开发需求的朋友私聊我们咨询、定制物联网方案!

本套物联网套件可以支持大学生参加物联网相关比赛、申请学校大创项目、完成毕业设计等,我们的定位是做一家开源智能硬件服务商,和大家一起探索物联网,我们的使命是推动更多物联网产品的落地和普及,让技术不再是阻碍!

2. 蜂鸣器简介

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。

蜂鸣器按照原理来分可以分为有源蜂鸣器和无源蜂鸣器,有源蜂鸣器和无源蜂鸣器并不是说蜂鸣器内部是否含有电源,这里的有源和无源是指内部是否含有RC震荡电路。想要无源蜂鸣器发声,需提供一定频率的脉冲信号; 想要有源蜂鸣器发声, 只需提供电源即可。蜂鸣器频率一般在1.5-5KHz 之间,有源蜂鸣器的实物如下图所示:
在这里插入图片描述

3. 硬件设计

蜂鸣器硬件驱动电路如下所示:
在这里插入图片描述
注意:BUZ连接STM32 PB12,不可以用单片机I/O口直接驱动蜂鸣器发声,因为I/O口驱动负载能力有限,通常蜂鸣器正常工作,需要通过30mA左右电流,因此我们使用三极管放大电路解决这个问题,采用放大电路后,单片机的 IO 口只需要提供不到 1mA 的电流就可控制蜂鸣器。

实物图如下所示:
在这里插入图片描述

二、实例

1. 新建工程

使用STM32CubeMX创建一个新的工程,参考环境搭建章节配置方式,设置RCC和PB12引脚输出
在这里插入图片描述
进入Clock configuration页面,选择HSE时钟源,倍频后主时钟为72MHz
在这里插入图片描述
切换到Project Manager栏目,设置工程名字、工程保存目录、工具链等信息,具参数如下图所示
在这里插入图片描述
点击左边栏目Code Generator,然后勾选Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral,勾选此选项,外设将单独保存在一个文件中,而不是全部都在main.c中。
在这里插入图片描述

然后打开2.Buzz.uvprojx工程
在这里插入图片描述

2.修改程序

/** * @brief  The application entry point. * @retval int */ 
int main(void) 
{ /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET); HAL_Delay(1000); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET); HAL_Delay(1000); /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ 
} 

注意void HAL_Delay(uint32_t Delay)为毫秒级函数,根据系统Systick延时。

/** * @brief This function provides minimum delay (in milliseconds) based *        on variable incremented. * @note In the default implementation , SysTick timer is the source of time base. *       It is used to generate interrupts at regular time intervals where uwTick *       is incremented. * @note This function is declared as __weak to be overwritten in case of other *       implementations in user file. * @param Delay specifies the delay time length, in milliseconds. * @retval None */ 
__weak void HAL_Delay(uint32_t Delay) 
{ uint32_t tickstart = HAL_GetTick(); uint32_t wait = Delay; /* Add a freq to guarantee minimum wait */ if (wait < HAL_MAX_DELAY) { wait += (uint32_t)(uwTickFreq); } while ((HAL_GetTick() - tickstart) < wait) { } 
}

三、下载运行

按照环境搭建章节方式给核心板下载程序,可以听到蜂鸣器每隔1秒报警一次。

四、小结

如您在使用过程中有任何问题,请加QQ群进一步交流。

QQ交流群:906015840 (备注:物联网项目交流)

源码获取:关注公众号,回复xiaoyi_stm32kits获取资料

硬件获取:某宝搜索小驿物联

小驿物联出品:宁愿做过了后悔,也不要后悔没去做!
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部