跳至主要內容

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数据线

②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文件播放的声音。

上次编辑于: