1.环境准备
烧录 MicroPython 固件
-
从MicroPython 官网下载最新 ESP32-CH3 固件
-
使用 esptool.py 烧录:
esptool.py --chip esp32c3 --port /dev/ttyUSB0 erase_flash
esptool.py --chip esp32c3 --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x0 esp32c3-xxxx.bin
2.连接硬件
ESP32-CH3 | 扬声器电路 |
---|---|
GPIO15 | → 100Ω 电阻 → 10μF 电容 → 扬声器正极 ,也可以不用电阻直接连接 |
GND | → 扬声器负极 → 电容负极 |


3.测试播放生日歌的旋律
from machine import Pin, PWM
import time
# 音符频率表
tones = {
'C4': 262, 'D4': 294, 'E4': 330, 'F4': 349,
'G4': 392, 'A4': 440, 'B4': 494, 'C5': 523
}
# PWM初始化
pwm_pin = Pin(15)
pwm = PWM(pwm_pin)
# 生日快乐歌旋律
melody = ['C4', 'C4', 'D4', 'C4', 'F4', 'E4',
'C4', 'C4', 'D4', 'C4', 'G4', 'F4',
'C4', 'C4', 'C5', 'A4', 'F4', 'E4', 'D4',
'B4', 'B4', 'A4', 'F4', 'G4', 'F4']
# 音符持续时间
durations = [2, 2, 4, 4, 4, 8] * 4 # 重复4次节奏模式
# 播放旋律
try:
for i, note in enumerate(melody):
if note == 'P': # 休止符
pwm.duty_u16(0)
else:
pwm.freq(tones[note])
pwm.duty_u16(32768) # 50%占空比
# 根据持续时间播放
time.sleep(0.5 / durations[i])
# 音符间的短暂停顿
pwm.duty_u16(0)
time.sleep(0.05)
finally:
# 确保释放PWM资源
pwm.deinit()
运行代码后就发现扬声器发出来了声音了
