Mp3播放模块
大约 5 分钟约 1461 字
Mp3播放模块
传感器介绍
Mp3播放模块主要用于控制SD卡中存储的MP3文件的播放(需连接外置有源喇叭)。该模块通过串口通信进行控制,允许用户灵活地选择和播放存储在SD卡上的音频文件。这种设计使得Mp3播放模块非常适合应用于各种需要背景音乐、语音提示或自动播报的场景,如公共广播系统、智能设备以及自动化控制系统等。通过简单的串口指令,用户可以轻松实现对音频播放的精确控制。
![]() |
| 工作电压 | 5V |
|---|---|
| 类型 | 执行器 |
| 音响接口类型 | 3.5mm音频 |
| 喇叭接口类型 | XH2.54-2P音频 |
| USB接口类型 | Micro-USB |
| 输入接口类型 | 4Pin引脚 |
| 串口通讯 | 波特率9600 |
| 外观尺寸 | 40*40*10mm |
| 适配类型 | 主板/扩展板 |
主板连接方式
语音播放模块连接主板时需要一转一水晶头

扩展板(V1.0)连接方式
语音播放模块可以连接的扩展板的串口接口P13/P5,P6/P9,P3/P12,下图为P13/P5端口连接图

接线类型

① USB Type-C数据线
.png)
②PH2.0-4P转RJ12线

③4Pin杜邦头转RJ12线

④XH2.54-2P外接喇叭
程序代码(主板)
# -*- 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)
程序代码(扩展板)
# -*- 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[13], tx=PINS[5], 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),或者连接扩展板通过串口(P13/P5),实现对MP3文件的播放控制(需要外接有源喇叭)。
运行效果
若接上外置(有源)喇叭,可以听到MP3文件播放的声音。

