KiCad文件
全屏
内容介绍
内容介绍
硬件和功能介绍
这是一款蜂鸣器模块,有独立驱动,兼容5V/3V3电平,可以驱动有源或无源蜂鸣器,体积非常小巧,方便日常做实验使用或直接集成到项目中。
模块设计思路、选型及框图介绍
这个模块主要基于三极管驱动蜂鸣器。这里选用三极管而非MOS管的主要原因是MOS管是电压控制电流器件,经过栅极电压操控源漏间导通电阻,对栅极电压有一定要求。而大多单片机使用3.3V,直接驱动MOS管容易造成开关不完全,MOS管异常发热。
而NPN三极管是电流控制电流器件,经过基极较小的电流操控较大的集电极电流。这也就意味着三极管对驱动电压并没有要求,只要接入适当的限流电阻控制电流即可。
这里我使用的三极管是SS8050
SS8050: https://www.digikey.hk/en/products/detail/shenzhen-slkormicro-semicon-co-ltd/SS8050/21853087
模块原理图、PCB简单介绍
原理图比较简单,我使用的蜂鸣器是贴片蜂鸣器,好处是体积很小,而且焊盘通用性强,可以方便焊接其他封装的蜂鸣器。
板子布局使用单面紧凑布局,元件全部布置在单面,方便直接使用铁板烧进行焊接。
引出脚为三个,分别为VCC, GND, SIGNAL,通过SIGNAL来输入高低电平信号驱动有源蜂鸣器或者PWM信号驱动无源蜂鸣器。
上面提到使用这个封装可以极大的增加板子的灵活性,这里我就做了两个模块,一个是有源蜂鸣器,另一个是无源蜂鸣器模块。
调试软件介绍、关键代码片段及说明
代码可以直接使用Arduino 自带的tone示例,注意这时候必须要使用无源蜂鸣器,只有无源蜂鸣器才可以通过PWM来控制音调。
#include <Adafruit_NeoPixel.h>
bool bt0 = false;
Adafruit_NeoPixel pixels(1, 48, NEO_GRB + NEO_KHZ800);
// the setup function runs once when you press reset or power the board
void setup() {
pixels.begin();
pinMode(0, INPUT);
}
// the loop function runs over and over again forever
void loop() {
if (!digitalRead(0))
{
bt0 = !bt0;
}
if (bt0)
{
pixels.setPixelColor(0, pixels.Color(0, 150, 0));
pixels.show();
delay(1000);
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
pixels.show();
delay(1000);
}
else
{
pixels.setPixelColor(0, pixels.Color(0, 150, 0));
pixels.show();
delay(200);
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
pixels.show();
delay(200);
}
}
模块调通的功能展示图
具体两种蜂鸣器驱动效果请参考视频。
心得体会
时隔一年再次参加电子森林的活动,活动依旧创意十足,诚意满满!
附件下载
ProDoc_Buzzer_2025-08-04.zip
toneMelody.ino
团队介绍
个人
评论
0 / 100
查看更多
猜你喜欢
基于树莓派RP2040嵌入式系统学习平台设计俄罗斯方块通过树莓派RP2040以及microPython进行俄罗斯方块的开发,通过LCD屏显示,通过按键和四向摇杆控制游戏的动作;在游戏中要通过蜂鸣器播放背景音乐。
arbelat
1878
2025 Make Blocks阶段1 - 数字蜂鸣器外设这是一款蜂鸣器模块,有独立驱动,兼容5V/3V3电平,可以驱动有源或无源蜂鸣器,体积非常小巧,方便日常做实验使用或直接集成到项目中。
StreakingJerry
33
2025 Make Blocks第二期阶段2-IIC数字外设设计该项目使用了BMP390,SHT30,BMI323,实现了IIC数字外设的设计,它的主要功能为:温度、湿度、气压、陀螺仪等数据的采集与分析。
zxfeng02
23