零基础学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,准备好相关配件,跟着课件走一遍。

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

相关推荐
TomEval16 分钟前
【Web UI 自动化】08 - 企业选型·报告·CI/CD
python·功能测试
维克兜率天20 分钟前
4.1.3 策略类型全景图:六大策略,你适合哪个
笔记·python·算法·量化
IT毕设实战小研34 分钟前
基于安卓的考研资讯系统设计与实现
android·大数据·vue.js·爬虫·python·考研·课程设计
卷无止境3 小时前
Python能做嵌入式开发吗?一份写给动手派的生态与硬件全景图
后端·python
月光船幽幽6 小时前
检测用户意图复杂性的关键方法
人工智能·python
威联通网络存储9 小时前
TS-h3087XU-RP 汽车零部件质检追溯部署
python·汽车
你驴我10 小时前
WhatsApp 多账号场景下的会话归档与历史消息检索优化实践
后端·python
IT毕设实战小研10 小时前
基于安卓的空气质量查询系统
android·大数据·vue.js·爬虫·python·django·课程设计
harmful_sheep10 小时前
java group by常见用法
java·开发语言·python