嘉立创产业服务站群
发作品签到
专业版

视神Mini-ESP32S3迷你播放器

工程标签

4.3k
0
0
12

简介

一个小小的视频播放器 :) 主打小和简 项目基于半年来一直在做的基于ESP32S3的音视频播放器项目优化而来

简介:一个小小的视频播放器 :) 主打小和简 项目基于半年来一直在做的基于ESP32S3的音视频播放器项目优化而来
复刻成本:80

开源协议

GPL 3.0

创建时间:2025-01-23 11:57:31更新时间:2025-03-03 05:49:28

描述

先看几张实物图( 开心 :) )

全开源!!

项目使用的工程,请打开附件VD_ESP_MINI_Player.zip

详细工程讲解,移步:视神Mini - 基于ESP32的迷你播放器项目: 基于ESP32S3的迷你播放器,本仓库包含项目设计中的所有源码工程,供大家参考

项目使用的所有文件,请打开附件VD_SD_ROOT_FILE.zip(SD卡根目录文件)

视频讲解,移步:

 

一、项目背景

简单的说两句,项目的由来

在过去的半年中,我专注于ESP32音视频播放器方案的设计工作。目前,我已经完成了多个版本的设计,例如:

视频播放器验证机:这个可以说是简易版视频播放器(或者说验证版)

视频播放器验证机

这一版验证ESP32S3最小系统,SPILCD驱动,SD卡,NS4168音频芯片,音视频播放器移植....

 

大屏版:搭载480x272 4.3寸SPI屏的视频播放器,但是视频播放效果不太理想(太卡了)

视神大屏

 

视神1:这一带使用ES8388作为音频芯片,替换掉前两代的NS4168

视神1

 

PlayerMicro:这一代其实是视神1的缩小版,打算打造一个1.5寸屏的版本(但是体积没能压缩下来,整机就一个小方盒)

 

简读电子书(即将开源):这一代将彩屏换成了墨水屏,其实音频底子还是一样的....

 

这些方案的核心均基于ESP32S3芯片,对于我而言,这套方案已经很成熟,本工程将会开源一个小而简的视频播放器。

 

二、项目定义

本项目旨在于基于现成的ESP32S3视频播放器项目,设计一个小而简的视频播放器

 

三、项目规格

项目规格书根据项目定义详细化而得,如下:

3.1预计规格

在项目开发规划阶段,基于初步设计、概念或我们定制以下项目规格。通过这个大致的框架,指导产品的初步开发方向和初步评估产品的可行性。

内容 设备/类型 详细规格
整机尺寸 屏幕尺寸

屏幕建议使用<=2.4寸的LCD屏

以下尺寸供参考(尺寸为 宽x高)

2.4寸液晶屏:42.72 x 60.26     分辨率320x240

2.0寸液晶屏   34.6x47.8    分辨率320x240

1.8寸液晶屏   34.00x47.83  分辨率160x128

1.69寸液晶屏  30.07x37.43 分辨率280x240

1.54寸液晶屏  31.52x33.72  分辨率240x240

 

综合考虑,初步选择2.0寸和1.69寸的显示屏

PCB尺寸

PCB尺寸原则上不应大于屏幕尺寸(若大于,屏幕会存在黑边,影响观感)

要求,PCB原则上不得大于屏幕最大黑边+屏幕宽度,即不能大于屏幕四边等宽的情况(否则影响观感)

元器件封装

以0603封装的元器件为主,部分原件使用0805封装

处理器/MCU MCU性能要求

原则上选择处理器应能实现最基本的音视频解码能力

1.音频解码能力

具备基本的PCM音频解码能力(软件解码)

具备IIS音频接口(必须是硬件IIS,不能是SPI模拟IIS)

2.视频解码能力

具备基本的MJPEG解码能力,要求快速(至少100ms/张 分辨率<320x240的图片)

MCU外围器件要求

为了做体积控制,要求MCU外围器件尽量简单,数量尽量少

电源 锂电池

电池类型:使用聚合物锂电池

电池外形要求:使用方形锂电池(若预留大空间做音响箱体,可使用圆柱形电池,注意控制体积和长度)

标称电压:3.7V

充电电压:4.2V

充电电流:不应该超过锂电池充电芯片所能提供的最大电流

带保护板:是

电池尺寸:不得超过PCB最大尺寸,注意预留空间放置扬声器

锂电池充电

要求外部器件数量少(电路简单)的充电芯片

LDO

RT9013

输入电压范围:4.3 - 3.7

输入电压方式:锂电池供电/充电芯片直接输入

输出电压:3.3V

电源开关 拨动开关(物理开关)
显示屏 LCD

屏幕连接方式:FPC软排线连接,直接与PCB连接

屏幕类型:IPS

控制芯片:ST7789

颜色数量:65535色(十六位色)

分辨率:建议320x240(至少大于240x240)

驱动方式:4Wire-SPI(四线SPI 普通SPI)

IO:SPICLK,SPIMOSI,SPICS,LCDWR,LCDCS,LCDRST

背光方式:LED背光,支持调亮度(本项目中未应用)

 

屏幕尺寸要求:

参考体积控制罗列的要求

存储设备 大容量存储设备

TF卡(microSD)

容量范围 <32G

支持的卡类型:SDSC SDHC

SD卡电压:3.3V

SD卡读取方式:文件系统,FATFS

SD卡文件系统:支持FAT FAT32

音频方案 IIS音频方案

音频芯片通讯协议:IIS

支持的音频采样位数:8、16(必须支持)、24

 

可选方案:

0.单片机直接输出

通过单片机的DAC或者PWM引脚输出音频信号

要求单片机至少需要具备高速DAC或高速PWM

(播放44100的音频时,其时钟速度必须大于44.1KHz)

 

1.使用IIS蓝牙芯片输出音频到蓝牙耳机

单片机需要具备蓝牙,支持蓝牙音频协议

外扩IIS蓝牙模块(如BT401)

 

2.使用IIS数字功放输出音频到扬声器

可选方案NS4168

 

3.使用IIS音频芯片输出音频到耳机

可选方案ES8388

音频输出方案

扬声器:

选用8欧姆扬声器

控制扬声器体积

 

耳机插座:

选用3.5MM耳机插座

操作方案 实体按键方案

选用两种实体按键:拨轮按键和轻触按键

 

 

3.2详细规格

详细规格是指在产品开发完成后,经过详细设计、测试和验证后,最终确定的产品规格。

内容 设备/类型 详细规格
整机尺寸 屏幕尺寸

屏幕使用2.0寸屏幕,参数如下:

屏幕整体尺寸(含边框尺寸):34.6 x 47.8 mm

屏幕显示范围尺寸:30.6x40.8 mm

屏幕最大黑边尺寸:4.2mm(底部屏幕驱动芯片位置)

PCB尺寸

PCB尺寸原则上不应大于屏幕尺寸(若大于,屏幕会存在黑边,影响观感)

PCB理想尺寸:34.6x47.8 mm (与屏幕同款)

PCB最大尺寸限制34.6+4.2 x47.8+4.2mm,即38.8x52.0 

说明:达到PCB最大尺寸限制为PCB四边+屏幕最大黑边尺寸,此设计可实现四边等宽.

处理器/MCU ESP32S3

1.具备音频解码功能

支持WAV音频解码,最大可以到24bit 192K

支持软件解码MP3,FLAC等格式

自带硬件IIS接口,可接输出输入设备

 

2.具备视频解码能力

 

 

3.外围器件简单

使用ESP32-WROOM板卡开发,只需要两个外围电容即可

电源 锂电池

聚合物锂电池,方形

型号:402030

尺寸:40x20x30mm

标称电压:3.7V

充电电压:4.2V

电池容量:180mah

充电电流:0.05A(50mA)

带保护板:是

  锂电池充电

TP4055充电芯片

充电电压

  LDO

RT9013

输入电压范围:4.3 - 3.7

输入电压方式:锂电池供电/TP4055充电芯片输入

输出电压:3.3V

  电源开关 拨动开关(物理开关)
显示屏 LCD

本项目使用的屏幕规格:

屏幕连接方式:FPC软排线连接,直接与PCB连接

屏幕类型:IPS

控制芯片:ST7789

颜色数量:65535色(十六位色)

分辨率:320x240

驱动方式:4Wire-SPI(四线SPI 普通SPI)

IO:SPICLK,SPIMOSI,SPICS,LCDWR,LCDCS,LCDRST

背光方式:LED背光,支持调亮度(本项目中未应用)

 

屏幕尺寸要求:

屏幕使用2.0寸屏幕,参数如下:

屏幕整体尺寸(含边框尺寸):34.6 x 47.8 mm

屏幕显示范围尺寸:30.6x40.8 mm

屏幕最大黑边尺寸:4.2mm(底部屏幕驱动芯片位置)

存储设备 大容量存储设备

TF卡(microSD)

容量范围 <32G

支持的卡类型:SDSC SDHC

SD卡电压:3.3V

SD卡读取方式:文件系统,FATFS

SD卡文件系统:支持FAT FAT32

音频方案 IIS音频方案

选用NS4168音频方案

1.外围器件简单

外围只需要三个电容+一个下拉电阻(控制扬声器关闭)

  音频输出方案

扬声器

选用8欧姆扬声器

操作方案 实体按键方案

选用两种实体按键:拨轮按键和轻触按键

四、方案介绍

4.1主控制器

首先来看主控制器:

主控制器选择ESP32S3,使用的是ESP32-WROOM-S3。

选用ESP32S3的三个理由:

        1.使用成熟方案开发(此套方案我已验证+应用半年)

        2.外围元器件少(只需要配两颗电容,其余元器件已被封装置板卡内)

        3.邮票孔封装,便于焊接

在这里选用的是1U的板卡,相较于非1U板卡,WIFI天线非板载,可有效节省体积

复位电路和Boot按键电路

程序下载:本工程中直接使用ESP32板卡直接与USB连接,无需任何烧录器,也无需板载串口,直接使用USB烧录即可

USB下载电路

USB下载流程:

确认焊接无问题后,在安装ESP-IDF的电脑上打开下载器,我这里用的是VSCode

选择设备:

编译后直接点下载:

烧录完成:

 

4.2供电方案

供电能量流如下:

能量流说明:

焊接锂电池后,接通5V,关闭主电源开关,TP4055给锂电池供电,充电时充电LED点亮,充电完成后LED熄灭

焊接锂电池,接通5V,打开主电源开关,此时TP4055同时给RT9013供电和锂电池充电

未焊接锂电池,接通5V,打开主电源开关,此时TP4055给RT9013供电

焊接锂电池,不接通5V,打开主电源开关,此时锂电池给RT9013供电

 

注意,必须要连接USB,且打开主电源开关的情况下,主芯片才能进行下载(此时USB和供电同时进行)

 

4.2.1锂电池充电方案

先说充电方案,充电方案选用TP4055方案,产品特性可见下图(官方文档截图)

除了上述特性之外,对于我们这套项目而言,这套方案外围器件少,有效节约体积

使用一个独立开关控制锂电池到3.3V LDO的电源,使用一颗LED直接显示充电状态

调试说明

这里说明一下焊接过程中的调试,在焊接完成TP4055电路且用万用表测试均无短路断路后,接通电源不焊接电池不打开开关,此时观察到LED轻微发光,测量电池接口两端(这里是两个测试点),电压应在4.2 - 4.3V之间

 

焊接完成LDO电路后,用万用表测试均无短路断路后,打开开关,LED常量,表示正在充电(放电),测量LDO两端电压,应在3.2 - 3.4V之间

 

4.2.2LDO

这里选择的是RT9013,单颗RT9013完成整套项目的3.3V电源供电

注意:NS4168数字功放需要大电流供电,电源直接与锂电池连接。

 

4.2.3稳压二极管

项目中使用两颗稳压二极管保证电压稳定:

 

 

4.3显示屏

这里不使用显示屏模块(占用体积太大),转而使用裸屏,通过FPC排插与PCB连接

显示屏使用的是中景园的2.0寸SPI屏,主控芯片为ST7789

此屏显示效果佳(两寸 320x240 DPI还可以)

 

屏幕链接:2寸液晶屏2.0寸tft lcd显示屏2寸显示屏st7789串口屏240x320液晶-淘宝网

屏幕资料链接(转载):https://pan.baidu.com/s/13l7iQwqjKUjUb2d99sL2RA  提取码8888

 

4.4SD卡

使用MicroSD卡,板载卡座直插SD卡

 

4.5音频方案

音频方案使用的是Nisway的NS4168数字功放

该方案简单,只需要一个IO控制扬声器开关和声道,三根音频线传输音频即可自动播放IIS音频.

注意:本方案中的音频芯片使用独立开关控制(直接控制芯片电源),可以直接通过开关芯片的电源开关实现硬件级别的静音

 

4.6按键

这里主要介绍拨轮开关,如下

拨动开关:

这里补充一个说明:虽然单片机内自带上拉电阻,但为了保证按键稳定,建议在硬件上加一个10K的上拉电阻

有些朋友可能不会看这个拨轮开关的连接方式,以下是我的学习心得:

中间带箭头为活动按键,从箭头可看出,支持左右拨动和下按

 

8,7,6,5引脚并联,可知为拨轮开关的外壳,直接接低电平,通过观察PCB焊盘也可得知

1,2引脚,由图可以看出为拨轮开关的左右拨动按钮,需要接上拉电阻保证未按下时为高电平

判断方式:中间为活动端,箭头知识左拨接触1,右拨接触2,可知两个开关为左右拨动开关

4为拨轮开关的下按按键,需要接上拉电阻保证未按下时为高电平

判断方式:下按拨动开关,3.4连接,可知是按下开关

3为公共端,直接接下拉

注意,3与中间的活动拨杆连接,可判断3为公共端

 

 

五、配套开源工程文件

配套完整项目工程:VD_ESP_Mini_Player.zip

部分源码和工程学习自正点原子,再次向原子团队表示感谢!!!!!!!!

项目配套工程文件请参考附件,解压后得到以下文件夹,为ESP-IDF工程文件

所使用的工程版本为ESP-IDF5.1.2

关于开源工程的详细介绍,请前往Gitee:视神Mini - 基于ESP32的迷你播放器项目: 基于ESP32S3的迷你播放器,本仓库包含项目设计中的所有源码工程,供大家参考

工程名称

工程说明

00_lcd_basic LCD测试程序,提供完整的LCD驱动程序和API使用说明
01_key_scan

为拨轮按键,轻触按键开发的按键扫描程序,宏定义中包含按键按下的标识定义,后面的工程中会用到

提供按键按下检测,等待按键按下循环函数

02_fatfs_test

测试SD卡和Ftafs文件系统

请准备test.txt文件放置在根目录下,拷贝该文件到SD卡的目录:/System/下

03_chinese_font 字库测试
04_wav_player 简单的WAV播放器
05_mjpeg_videoplayer 简单的MJPEG(AVI)播放器(本项目的主工程文件)
06_lvgl_basic LVGL的简单适配

源工程全部上传,直接打开查看,无需任何激活码或任何验证方式才可打开!!!!!!

 

 

六、主要工程介绍

关于开源工程的详细介绍,请前往Gitee:视神Mini - 基于ESP32的迷你播放器项目: 基于ESP32S3的迷你播放器,本仓库包含项目设计中的所有源码工程,供大家参考

6.1 wav_player

本工程提供一个简单的WAV音频播放器,通过软件解码WAV音频文件,由I2S音频设备进行播放

程序的执行流程如下:

根据ESP32S3的IIS,我们不需要定时传入数据,只需要创建一个任务,在任务中循环调用IIS写数据函数,直接将PCM数据传入即可

本程序参考自正点原子music_play工程,在此基础上优化了按键操作,设计播放器基本UI

音乐播放器操作:

编译并烧录程序,并且将SD卡根目录文件拷贝到SD卡内(直接拷贝到根目录),插入SD卡,开机。

第一次执行的时候程序会自动下载字库,字库位于SD:/SYSTEM/FONT内,字库更新成功后,程序开始执行。

程序播放时,会循环播放SD:/MUSIC文件夹内的音乐文件,操作按键可以控制音乐播放器。

 

播放音乐的时候,按键操作如下:

拨轮操作:左右拨动:上/下一曲   拨轮按下:播放/暂停

按键操作:无

 

备注:如需修改按键键位,可以直接前往key.h修改按键指令宏定义。读取到某些字符时,UNI转GBK函数可能会卡死(出现的状态是机器自动重启)

 

6.2 video_play

本工程提供一个简单的视频播放器,通过软件解码AVI(Mjpeg格式)视频播放,支持分辨率240x180的视频播放

视频格式:

视频格式

AVI

视频编码 MJPEG(必须是MJPEG)
视频画面大小 < 320X180 推荐240x180
视频码率 < 1000
视频每秒帧数 < 12
音频格式

WAV

音频编码格式

PCM

音频位数 16
音频采样率 11025(<22050)
音频声道数 2

使用格式工厂转码:

使用狸窝视频转换器转码:

本程序参考自正点原子music_play工程,在此基础上适配显示屏,优化了按键操作,设计播放器基本UI

本程序执行流程:

简单的讲解视频解码流程:

视频以"流"的形式存储在数据区域,每一个流后面紧跟着数据,流头标注着流信息(音频流还是视频流)

解码视频时依靠定时器提供的时钟节拍,解析一帧的数据,程序会判断流类型,并且送入音频/视频解码

视频播放器操作

编译并烧录程序,并且将SD卡根目录文件拷贝到SD卡内(直接拷贝到根目录),插入SD卡,开机。

第一次执行的时候程序会自动下载字库,字库位于SD:/SYSTEM/FONT内,字库更新成功后,程序开始执行。

程序播放时,会循环播放SD:/VIDEO文件夹内的视频文件,操作按键可以控制音乐播放器。

 

播放音乐的时候,按键操作如下:

拨轮操作:左右拨动:快进/快退 按下:无操作

按键操作:BOOT按键——下一个视频

 

备注:

如需修改按键键位,可以直接前往key.h修改按键指令宏定义。

读取到某些字符时,UNI转GBK函数可能会卡死(出现的状态是机器自动重启)

请确保视频格式正确,若视频格式不正确,屏幕不会有显示,标识视频格式出错,请检查视频格式!!

视频格式出错可能是:1.视频编码格式错误   2.视频分辨率错误(表现为显示位置不正确,或者显示溢出)  3.视频音频编码格式错误 

 

七、更新日志

若有更新日志,我会在这里记录日志。

 

八、演示视频

演示视频如下

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
VD_ESP_MINI_Player.zip
140
2
音频播放器演示视频.mp4
22
3
视频播放器演示视频.mp4
32
4
测试音频红豆.wav
18
5
测试音频东风破.wav
20
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航