语音播放模块
大约 3 分钟约 858 字
语音播放模块
![]() | ![]() |
工作电压 | 5V |
类型 | 执行模块 |
接口类型 | RJ12 |
外观尺寸 | 20*25*33mm |
语音播放模块主要用于控制SD卡中存储的MP3文件的播放(需连接外 置有源喇叭)。该模块通过串口通信进行控制,允许用户灵活地选择和播放 存储在SD卡上的音频文件。这种设计使得语音播放模块非常适合应用于各 种需要背景音乐、语音提示或自动播报的场景,如公共广播系统、智能设备 以及自动化控制系统等。通过简单的串口指令,用户可以轻松实现对音频播 放的精确控制。


程序代码
# -*- coding: utf_8 -*-
from npython import * # 导入npython模块
import struct
#语音播放接串口P0/P1
'''
语音模块说明(暂不支持中文名称):
内置默认4首歌曲:
mlh.mp3:茉莉花
qcxlsc.mp3:青春修炼手册
qjzx.mp3:奇迹再现
slzxlm.mp3:失恋阵线联盟
'''
#初始化串口,波特率应为9600
uart1=UART(1, baudrate=9600, rx=PINS[0], tx=PINS[1],
timeout=10)
#停止播放
def Mp3_Stop(uartx):
uartx.write(b'\xaa\x04\x00\xae')
time.sleep_ms(200)
#播放指定名称的歌曲(中文少于等于4个字,英文及数字少于
等于8个字节 大小写不区分)
def Mp3_Run(uartx,str=""):
path="/"+str+'*mp3' #文件路径
#路径全部字母应为大写
path=path.upper()
#print(path)
oled.print(1,1,path,1)
pathlen=len(path)#文件路径长度
checksum=0xAA+0x08+pathlen+1+0x01
for i in range(pathlen):
checksum=checksum+int(ord(path[i]))
checksum=checksum%256
#发送指令码格式为AA 08 长度 盘符 路径 SM
uart_bytes=struct.pack('bbbb',
0xAA,0x08,pathlen+1,0x01)+path+struct.pack('b', checksum)
uartx.write(uart_bytes)
print(uart_bytes)
def set_vol(uartx, num): # 音量设置函数 # 确保 num 在 0-255 范围内(低8位)
num = num & 0xFF
# 计算校验和
checksum = (0xAA + 0x13 + 0x01 + num) % 256
# 构建字节对象
result = bytes([0xAA, 0x13, 0x01, num, checksum])
# 手动格式化输出(仅用于打印)
formatted_result = "b'" + ''.join('\\x{:02X}'.format(byte) for byte
in result) + "'"
print(formatted_result)
# 发送实际的字节对象
uartx.write(result)
time.sleep(0.5)
set_vol(uart1,20) #修改播放音量20
#选定播放音乐播放
Mp3_Run(uart1,"qjzx");#播放指定歌曲,只输文件名即可
time.sleep(5)
Mp3_Run(uart1,"slzxlm");#播放指定歌曲,只输文件名即可
time.sleep(5)
Mp3_Stop(uart1)
程序说明
语音播放模块接实验板通用接口。通过串口(P0/P1)控制,实现 对MP3文件的播放控制(需要外接有源喇叭)。 呈现效果 若接上外置(有源)喇叭,可以听到MP3文件播放的声音。
语音播放的注意事项
(1)需有SD卡且内置相应的扩展名为MP3的歌曲; (2)串口波特率只支持9600,而非常规的115200; (3)控制子程序定义需放到程序应用前或将程序写于文件中进行加载,不能直接调用函数(此函数定义未在固件中)