零基础学ESP32:蜂鸣器——让ESP32会“唱歌”!

前面我们学了显示屏、按键、摇杆------这些都是"输入"设备,用来把信息交给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的频率,就能发出不同的音调。

核心思路:

  1. 定义好每个音符对应的频率(C4=262Hz,D4=294Hz......)
  2. 把歌曲写成"音符列表"
  3. 依次播放列表中的每个音符
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,准备好相关配件,跟着课件走一遍。

有任何问题或建议,欢迎在评论区留言告诉我们。

相关推荐
王立志_LEO15 分钟前
HTTPX 完整用法总结
python
ggb喔17 分钟前
52pojie 的图片工具:为什么无损转换后体积涨了 6 倍、照片方向还是歪的
图像处理·python·算法·计算机视觉·图形渲染·媒体
hnxaoli18 分钟前
win10小程序(二十三)新建带时间文件夹
python
企业数字化笔记24 分钟前
AI工具参数很多怎么办?预设、表单校验、危险参数与配置审计
java·spring boot·python·音视频
做萤石二次开发的哈哈38 分钟前
海康甲烷监测终端二次开发:四级能力门控、规则联动与两类异常事件的全链路拆解
物联网·二次开发·工业安全·蓝海aiot一站式工作台·aiot开发·危险气体监测·甲烷检测
阿乔外贸日记1 小时前
全球电子产业高度集中:中、韩、日和中国台湾地区占全球数字硬件产能八成
大数据·服务器·人工智能·物联网·云计算
2601_962885721 小时前
如何用 Python 计算 BBI 多空指标?
开发语言·python
必须得开心呀1 小时前
为什么 python-docx 打不开加密的 .docx,Word COM 却能打开
python·word
VidDown1 小时前
上传 2GB 文件别让 Django 接:分片上传、对象存储直传与秒传
python·django·音视频·状态模式·实时音视频·视频编解码·视频
打工仔折腾 AI2 小时前
FaceFusion本地换脸实战:Windows整合包、模型选择与遮罩调参记录
人工智能·windows·后端·python·深度学习·性能优化·ai agent 实战