【花雕动手做】CanMV K230 AI视觉模块之使用板载蜂鸣器
什么是 CanMV K230?
CanMV K230是一款高性价比的RISC-V边缘AI平台,凭借低功耗、强视觉处理能力和开放的开发生态,成为嵌入式AI开发的理想选择,尤其适合需要快速部署视觉与AI功能的创客、中小企业及教育场景。CanMV 是一套 AI 视觉开发平台,K230 是其核心芯片。该模块结合了图像采集、AI推理、边缘计算等能力,适合嵌入式视觉应用开发。
CanMV:类似 OpenMV 的图像处理框架,支持 Python 编程,简化视觉识别开发流程。
K230 芯片:嘉楠科技推出的 AIoT SoC,采用 RISC-V 架构,内置第三代 KPU(AI加速单元),算力高达 6 TOPS,性能是 K210 的 13.7 倍。
【花雕动手做】CanMV K230 AI视觉模块之使用板载蜂鸣器
蜂鸣器的分类从驱动方式来说,我们可以把蜂鸣器分为有源和无源两种
1、有源蜂鸣器(Active Buzzer) 是内部集成有振荡电路的蜂鸣器。它不需要外部驱动电路,只需要输入一个直流电源就能直接发出声音。有源蜂鸣器结构相对简单,适合小型化设计,常见于电子玩具、报警器等对体积和功耗有要求的场合。
2、无源蜂鸣器(Passive Buzzer)是不包含振荡电路的蜂鸣器,需要外部驱动电路提供交流信号才能工作。适合大功率、大声音应用,如汽车喇叭、工业警报器等。外部驱动电路可以是单片机、专用驱动芯片等,根据应用需求设计。
使用无源蜂鸣器的优点是可以通过调整外部信号的频率和占空比来实现更丰富的音调和音量控制。
蜂鸣器是一种可以发出蜂鸣声音的电子元器件。
它通过电磁或压电原理产生声音, 常应用于各种电子设备中,常见于警报器、电子玩具、电子信号装置等。
CanMV K230 AI视觉识别模块之使用板载蜂鸣器
快速开始
打开 CanMV IDE,将 K230 连接至电脑。
按 Ctrl + N 键新建一份代码,并删除所有自动生成的代码内容
复制下面的代码并粘贴到IDE中 [源码汇总 / 02.Basic / 03.1_buzzer.py]
点击运行按钮,可以听到K230的蜂鸣器中发出了不同的声音。
#【花雕动手做】CanMV K230 AI视觉识别模块之使用板载蜂鸣器
# 导入蜂鸣器库 (Import buzzer library)
from ybUtils.YbBuzzer import YbBuzzer
# 导入时间库 (Import time library)
import time
# 创建蜂鸣器实例 (Create buzzer instance)
buzzer = YbBuzzer()
# 示例1:短鸣一声 (Example 1: Short beep)
buzzer.beep()# 使用默认参数发出蜂鸣声 (Make a beep with default parameters)
# 等待3秒 (Wait for 3 seconds)
time.sleep(3)
# 示例2:自定义频率和持续时间 (Example 2: Custom frequency and duration)
buzzer.on(2000, 50, 0.5)# 2000Hz,音量50%,持续0.5秒 (2000Hz, volume 50%, duration 0.5 seconds)
# 等待3秒 (Wait for 3 seconds)
time.sleep(3)
# 示例3:警报声效果 (Example 3: Alarm sound effect)
for i in range(3):# 循环3次 (Loop 3 times)
buzzer.on(1000, 50, 0.1)# 1000Hz,音量50%,持续0.1秒 (1000Hz, volume 50%, duration 0.1 seconds)
time.sleep(0.1)# 短暂停顿0.1秒 (Brief pause for 0.1 seconds)
【花雕动手做】CanMV K230 AI视觉模块之使用板载蜂鸣器
这段代码是一个演示程序,用于在 CanMV K230 AI视觉识别模块上控制板载蜂鸣器发声。它展示了如何使用 Micropython 控制蜂鸣器发出不同频率、音量和时长的声音,包括短鸣、自定义音调和警报效果。解读如下:程序目标
通过调用蜂鸣器控制库,实现三种声音效果:
默认短鸣
自定义频率与持续时间
警报声(快速重复)
python
#【花雕动手做】CanMV K230 AI视觉识别模块之使用板载蜂鸣器
程序标题注释,说明这是“花雕动手做”系列教程的一部分,主题是使用 K230 模块上的蜂鸣器。
python
#导入蜂鸣器库 (Import buzzer library)
from ybUtils.YbBuzzer import YbBuzzer
导入 YbBuzzer 类,这是控制蜂鸣器的封装库,提供简单的接口来发声。
python
# 导入时间库 (Import time library)
import time
引入时间模块,用于设置延时,控制发声节奏。
python
# 创建蜂鸣器实例 (Create buzzer instance)
buzzer = YbBuzzer()
创建一个蜂鸣器对象,后续通过它来控制发声。
示例 1:默认短鸣
python
# 示例1:短鸣一声 (Example 1: Short beep)
buzzer.beep()# 使用默认参数发出蜂鸣声 (Make a beep with default parameters)
调用 beep() 方法发出一个默认的短促蜂鸣声,通常用于提示或确认操作。
python
# 等待3秒 (Wait for 3 seconds)
time.sleep(3)
程序暂停 3 秒,确保声音播放完成并留出间隔。
示例 2:自定义频率和持续时间
python
# 示例2:自定义频率和持续时间 (Example 2: Custom frequency and duration)
buzzer.on(2000, 50, 0.5)# 2000Hz,音量50%,持续0.5秒 (2000Hz, volume 50%, duration 0.5 seconds)
使用 on() 方法发出一个自定义音调的蜂鸣声:
频率:2000Hz(较高音调)
音量:50%
持续时间:0.5 秒
python
# 等待3秒 (Wait for 3 seconds)
time.sleep(3)
再次延时 3 秒,准备进入下一个示例。
示例 3:警报声效果
python
# 示例3:警报声效果 (Example 3: Alarm sound effect)
for i in range(3):# 循环3次 (Loop 3 times)
启动一个循环,连续播放 3 次短促蜂鸣声,模拟警报效果。
python
buzzer.on(1000, 50, 0.1)# 1000Hz,音量50%,持续0.1秒 (1000Hz, volume 50%, duration 0.1 seconds)
每次发出 1000Hz 的声音,持续 0.1 秒,音量 50%。
python
time.sleep(0.1)# 短暂停顿0.1秒 (Brief pause for 0.1 seconds)
每次发声之间暂停 0.1 秒,形成断续的警报节奏。
程序流程图
[初始化蜂鸣器对象] → [短鸣一声] → [延时] → [自定义发声] → [延时] → [循环警报声]
实验串口返回情况
【花雕动手做】CanMV K230 AI视觉模块之使用板载蜂鸣器
2、播放旋律K230模块上的蜂鸣器是无源蜂鸣器,连接在 K230的一个PWM输出通道上。
这里可以通过修改 PWM 输出值,来让蜂鸣器发出不同频率的声音
#【花雕动手做】CanMV K230 AI视觉识别模块之使用板载蜂鸣器
# 导入蜂鸣器库 (Import buzzer library)
from ybUtils.YbBuzzer import YbBuzzer
# 导入时间库 (Import time library)
import time
# 创建蜂鸣器实例 (Create buzzer instance)
buzzer = YbBuzzer()
# 定义音符频率(Hz)(Define note frequencies in Hz)
C5 = 523# 1 - 中央C (Middle C)
D5 = 587# 2 - 中央D (Middle D)
E5 = 659# 3 - 中央E (Middle E)
F5 = 698# 4 - 中央F (Middle F)
G5 = 784# 5 - 中央G (Middle G)
A5 = 880# 6 - 中央A (Middle A)
B5 = 988# 7 - 中央B (Middle B)
# 定义音符持续时间 (Define note duration)
BEAT = 0.3# 一拍的时间(单位:秒)(Duration of one beat in seconds)
# 演奏旋律 (Play melody)
def play_twinkle():
"""
演奏《一闪一闪亮晶晶》(小星星)的旋律
(Play the melody of "Twinkle Twinkle Little Star")
"""
# 一闪一闪亮晶晶的音符序列 (Note sequence for "Twinkle Twinkle Little Star")
notes = [
(C5, BEAT), (C5, BEAT), (G5, BEAT), (G5, BEAT),# 1 1 5 5 (音乐简谱:小星星)
(A5, BEAT), (A5, BEAT), (G5, BEAT*2), # 6 6 5- (亮晶晶)
(F5, BEAT), (F5, BEAT), (E5, BEAT), (E5, BEAT),# 4 4 3 3 (满天都是)
(D5, BEAT), (D5, BEAT), (C5, BEAT*2), # 2 2 1- (小星星)
]
# 遍历音符列表并演奏 (Iterate through the notes list and play)
for freq, duration in notes:
# 播放当前音符 (Play current note)
# 参数:频率、音量50%、持续时间 (Parameters: frequency, volume 50%, duration)
buzzer.on(freq, 50, duration)
# 音符之间的短暂停顿,增加清晰度 (Brief pause between notes for clarity)
time.sleep(0.1)
# 结束后关闭蜂鸣器 (Turn off the buzzer after playing)
buzzer.off()
# 程序入口点 (Program entry point)
if __name__ == "__main__":
# 调用函数演奏旋律 (Call function to play the melody)
play_twinkle()
这段代码是一个完整的示例程序,用于在 CanMV K230 AI视觉识别模块 上通过板载蜂鸣器演奏《一闪一闪亮晶晶》的旋律。它结合了音符频率、节奏控制和蜂鸣器发声接口,展示了如何用 Micropython 实现简单的音乐播放功能。解读如下:
程序目标
使用蜂鸣器播放《Twinkle Twinkle Little Star》的旋律,通过频率和节奏控制实现音符演奏。
python
#【花雕动手做】CanMV K230 AI视觉识别模块之使用板载蜂鸣器
程序标题注释,说明这是“花雕动手做”系列教程的一部分,主题是使用 K230 模块上的蜂鸣器播放音乐。
python
#导入蜂鸣器库 (Import buzzer library)
from ybUtils.YbBuzzer import YbBuzzer
引入 YbBuzzer 类,这是控制蜂鸣器的封装库,提供 on() 和 off() 等方法。
python
# 导入时间库 (Import time library)
import time
引入时间模块,用于控制音符之间的间隔。
python
# 创建蜂鸣器实例 (Create buzzer instance)
buzzer = YbBuzzer()
创建一个蜂鸣器对象,后续通过它来控制发声。
定义音符频率(单位:Hz)
python
C5 = 523# 中央 C
D5 = 587# 中央 D
E5 = 659# 中央 E
F5 = 698# 中央 F
G5 = 784# 中央 G
A5 = 880# 中央 A
B5 = 988# 中央 B
每个变量代表一个音符的频率,用于控制蜂鸣器发出对应音高的声音。
定义节奏单位
python
BEAT = 0.3# 一拍的时间(秒)
设置每个音符的基础持续时间为 0.3 秒。
演奏旋律函数
python
def play_twinkle():
定义一个函数,用于演奏《一闪一闪亮晶晶》的旋律。
python
notes = [
(C5, BEAT), (C5, BEAT), (G5, BEAT), (G5, BEAT),
(A5, BEAT), (A5, BEAT), (G5, BEAT*2),
(F5, BEAT), (F5, BEAT), (E5, BEAT), (E5, BEAT),
(D5, BEAT), (D5, BEAT), (C5, BEAT*2),
]
定义音符序列,每个元组包含频率和持续时间。旋律结构对应简谱: 1 1 5 5 6 6 5 - 4 4 3 3 2 2 1 -
演奏音符
python
for freq, duration in notes:
buzzer.on(freq, 50, duration)
time.sleep(0.1)
遍历音符列表,依次播放每个音符:
on(freq, volume, duration):发声
time.sleep(0.1):音符之间短暂停顿,避免连音模糊
关闭蜂鸣器
python
buzzer.off()
演奏结束后关闭蜂鸣器,防止持续发声。
程序入口
python
if __name__ == "__main__":
play_twinkle()
程序入口点,调用 play_twinkle() 函数开始演奏。
程序流程图
[初始化蜂鸣器] → [定义音符频率与节奏] → [构建旋律序列] → [依次播放音符] → [关闭蜂鸣器]
页:
[1]