前面我们学了显示屏、按键、摇杆------这些都是"输入"设备,用来把信息交给ESP32。今天反过来,我们来学一个 "输出" 设备:蜂鸣器。
蜂鸣器的作用很简单------发出声音。防盗报警器的刺耳鸣叫、微波炉完成加热的"叮"一声、电子琴的优美旋律......这些声音都来自蜂鸣器。
今天这节课,我们先认识有源蜂鸣器 (能响就行),再学习无源蜂鸣器(能播放旋律),让ESP32从"会说话"升级到"会唱歌"!
第一步:找到课程,看看成品效果
打开逗脑IDE,点击顶部 "文档" ,在 "课程" → "ESP32 + MicroPython" 分类下,找到蜂鸣器。

打开课件,你会看到本节课的最终效果:
- 有源蜂鸣器:发出单一频率的"嘀嘀"声
- 无源蜂鸣器:连续播放《超级马里奥》和《铃儿响叮当》两首旋律!


第二步:有源 VS 无源,有什么区别?
蜂鸣器分为两种,区别非常简单:
| 有源蜂鸣器 | 无源蜂鸣器 | |
|---|---|---|
| 内部结构 | 自带振荡电路 | 没有振荡电路 |
| 控制方式 | 通电就响,断电就停 | 需要PWM信号驱动 |
| 声音效果 | 只有一种音调(固定频率) | 可以播放不同音调(旋律、歌曲) |
| 代码难度 | 简单(高低电平控制) | 稍复杂(PWM调频) |
| 价格 | 便宜 | 稍贵一点 |
第三步:动手接线
两种蜂鸣器的接线方式相同,都是2根线:
| 蜂鸣器引脚 | 连接ESP32 | 说明 |
|---|---|---|
| VCC(正极) | 3.3V | 电源正极 |
| GND(负极) | GND | 电源地 |
| IO(信号脚) | GPIO15 | 控制信号(有源用高低电平,无源用PWM) |
💡 小提示: 有些模块把VCC和信号脚标成了"正极"和"负极",按照模块上的标注连接即可。
第四步:有源蜂鸣器------响和不响,就这么简单
先学最简单的有源蜂鸣器。控制它只需要高低电平:
python
from machine import Pin
import time
p15 = Pin(15, Pin.OUT)
for i in range(10):
p15.value(1) # 高电平 → 不响
time.sleep(0.2)
p15.value(0) # 低电平 → 响
time.sleep(0.2)
p15.value(1) # 最后关闭
代码逻辑:
| 操作 | 效果 |
|---|---|
p15.value(1) |
蜂鸣器关闭(不响) |
p15.value(0) |
蜂鸣器打开(响) |
就是这么简单!运行后蜂鸣器会"嘀-嘀-嘀-嘀......"响10次,然后停止。
第五步:无源蜂鸣器------播放歌曲!
无源蜂鸣器需要PWM(脉冲宽度调制) 信号来驱动。通过改变PWM的频率,就能发出不同的音调。
核心思路:
- 定义好每个音符对应的频率(C4=262Hz,D4=294Hz......)
- 把歌曲写成"音符列表"
- 依次播放列表中的每个音符
python
from machine import Pin, PWM
from time import sleep_ms
class BUZZER:
def __init__(self, sig_pin):
self.pwm = PWM(Pin(sig_pin, Pin.OUT))
def play(self, melodies, wait, duty):
for note in melodies:
if note: # 有音符
self.pwm.freq(note) # 设置频率
self.pwm.duty(duty) # 发声
sleep_ms(wait) # 持续指定时长
self.pwm.duty(0) # 停止
# 音符频率表(只列出一部分,完整版在课件里)
C4 = 262 # 中央C
D4 = 294
E4 = 330
F4 = 349
G4 = 392
A4 = 440
B4 = 494
C5 = 523
# ... 更多音符在课件中
# 超级马里奥旋律
mario = [
E7, E7, 0, E7, 0, C7, E7, 0,
G7, 0, 0, 0, G6, 0, 0, 0,
# ...
]
# 初始化蜂鸣器
buzzer = BUZZER(15)
print("播放 超级马里奥")
buzzer.play(mario, 150, 512)
代码逻辑:
| 步骤 | 说明 |
|---|---|
| 1 | 定义音符频率(C4=262Hz,D4=294Hz......) |
| 2 | 把歌曲写成音符列表 |
| 3 | 播放器依次读取音符,设置对应的PWM频率 |
| 4 | 0表示休止符(静音) |
第六步:保存运行,听效果!
按 Ctrl + S 保存,选择ESP32开发板设备 ,给文件命名(比如buzzer.py),点击保存。

点击运行按钮!
首先,有源蜂鸣器部分会响起"嘀-嘀-嘀-嘀......"的声音。
然后,无源蜂鸣器部分开始播放------
- 🎵 先来一首 《超级马里奥》 主题曲
- 🎵 再来一首 《铃儿响叮当》 圣诞歌
蜂鸣器能做什么?
| 应用场景 | 使用哪种 | 用途 |
|---|---|---|
| 防盗报警器 | 有源 | 发出刺耳警报声 |
| 门铃 | 有源 | 按下门铃"叮咚"一声 |
| 倒车雷达 | 有源 | "嘀-嘀-嘀-"越来越快 |
| 电子琴 | 无源 | 弹奏不同音调 |
| 音乐播放器 | 无源 | 播放旋律、歌曲 |
| 智能家电提示音 | 有源/无源 | 操作成功/失败的反馈音 |
全程回顾
| 步骤 | 操作 | 效果 |
|---|---|---|
| 找到课程 | 文档→课程→ESP32+MicroPython→蜂鸣器 | 了解两种蜂鸣器 |
| 认识区别 | 有源=一种音调,无源=多种音调 | 知道该买哪种 |
| 动手接线 | VCC→3.3V, GND→GND, IO→GPIO15 | 硬件就位 |
| 测试有源 | 运行有源代码 | 蜂鸣器"嘀嘀"响 |
| 测试无源 | 运行无源代码 | 播放《超级马里奥》! |
如果你对本节课感兴趣,去官网(www.dounao.cn)下载逗脑IDE,准备好相关配件,跟着课件走一遍。
有任何问题或建议,欢迎在评论区留言告诉我们。