Skip to content

ZUENS2020/Cardio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cardio 🎵

运行在 M5Stack Cardputer ADV 上的音乐播放器固件,集成实时均衡器,并正在加入跨平台 BLE 通知推送。 A music-player firmware for the M5Stack Cardputer ADV (ESP32-S3), with a real-time equalizer and BLE notification push in progress.

platform framework audio launcher license


简介

Cardio 把一台 Cardputer ADV 变成一个能装进口袋的本地音乐播放器:从 SD 卡播放 MP3/FLAC/WAV, 带一个可实时调的 5 段均衡器、文件浏览器和完整的串口调试控制台。下一步会加入手机通知/来电直推到设备 (BLE)。

  • 硬件:ESP32-S3FN8(双核 240MHz,8MB Flash,无 PSRAM,512KB SRAM)
  • 框架:C++ / Arduino(用 PlatformIO 构建)
  • 兼容 bmorcelli Launcher,可与其他固件共存于一张卡

ℹ️ 音频是单声道:Cardputer ADV 的 ES8311 是单 DAC 单声道 codec,喇叭与 3.5mm 耳机共用这一路, 硬件无法分离左右声道。想要真立体声需外接 I2S codec —— 见 外接 WM8960 方案


✨ 功能特性

✅ 已实现

功能 说明
🎵 音乐播放 MP3 / FLAC / WAV,精确时长解析(Xing/CBR、fmt/data、STREAMINFO)
🎚️ 实时均衡器 5 段 peaking IIR(100/300/1k/3k/8k Hz,±12dB),e 键进界面实时调,全平时零开销旁路
🔊 音量曲线 sqrt 预补偿抵消 M5.Speaker 内部平方,听感线性、位深顶高;gain 上限可调
📂 文件浏览器 播放列表 / 曲目导航,长按连发,页码指示
🔀 播放顺序 顺序 / 随机 / 单曲循环 / 列表循环(r 键切换)
🈶 中日文字 逐字字体回退(efontCN→efontJA),简日混排不出豆腐块
🎬 开屏动画 纯代码绘制(无需 SD 资源)
🔇 静音模式 开机静音配置(教室调试用,不丢音量值)
🛠️ 调试控制台 USB 串口,20+ 命令(播放/音量/EQ/配置/日志…)
📝 分级日志 Serial + SD 卡文件,超 512KB 自动轮转
🚀 Launcher 兼容 可被 bmorcelli Launcher 安装,` 键 / launcher 命令返回

🚧 规划中(详见 开发计划

  • 📲 BLE 通知直推:手机通知 / 来电 → 设备显示(NotifyOverlay / CallScreen)
  • ⚙️ UI 收尾:SettingsScreen、PairingScreen、NoticeScreen、补全图标
  • 📡 WiFi + RSS 拉取
  • 📱 Android 客户端(通知监听 + BLE 推送)
  • 🎧 外接 PCM5102A 立体声 DAC:固件已支持(audio_output=pcm5102 或控制台 out pcm5102 切换,真立体声、飞线直连、无 I2C;见 接线文档),待实机接线验证。WM8960 为备选
  • ☁️ 服务端(MQTT + FastAPI)—— 后续迭代

🔧 硬件

部件 规格
主控 ESP32-S3FN8,双核 240MHz,8MB Flash,无 PSRAM,512KB SRAM
音频 ES8311 单声道 codec → NS4150B 单声道功放 → 1W 喇叭 / 3.5mm 耳机(共用一路)
显示 1.14" LCD,240×135
输入 56 键键盘(TCA8418 I2C)
存储 microSD 卡槽
无线 WiFi 802.11 b/g/n + BLE 5.0( Classic 蓝牙,不支持 A2DP 耳机)

🚀 快速开始

1. 安装工具链

# macOS(用 pipx,不要用 pip)
brew install pipx && pipx install platformio

2. 编译 & 烧录

cd Cardio/firmware

pio run                            # 编译主固件(huge_app 3MB,直接 USB 烧录用)
pio run --target upload            # 编译并烧录到设备
pio device monitor --baud 115200   # 打开调试控制台

# 可选:编译可被 bmorcelli Launcher 安装的版本(app 上限 1.31MB)
pio run -e cardputer-adv-launcher
#   产物:.pio/build/cardputer-adv-launcher/firmware.bin

3. 准备 SD 卡

把模板复制到卡根目录,再放入音乐:

SD 根目录/
└── Cardio/
    ├── music/
    │   └── 我的歌单/          ← 每个子文件夹 = 一个播放列表
    │       ├── *.mp3 / *.flac / *.wav
    ├── config.txt             ← 主配置
    ├── rss_feeds.txt
    └── notify_filter.txt

详见 SD 卡设置指南


🎮 操作

播放器

功能 功能
空格 播放 / 暂停 m 静音
, / 上一首 / 下一首 r 切换播放顺序
; . 音量 +/−(长按连调) e 均衡器
Enter 进文件浏览器 ` 退出到 Launcher

文件浏览器;/, 上移 · .// 下移 · Enter 打开/播放 · Del 返回

均衡器,// 选频段 · ;/. 增益 +/− · 0 当前段归零 · Del 存盘返回


🛠️ 调试控制台

USB 串口(115200)连接后可用,分组如下:

类别 命令
播放 play <路径> · pause · resume · stop · next · prev · status
音频 vol <0-21> · gain <16-160> · eq <段 增益>|flat|show · mute [on|off] · out [internal|pcm5102] · tone
列表 list · playlist <n> · tracks · order <模式>
系统 config get/set/save · log level <级别> · heap · jdet · launcher · reboot · help

示例:eq 0 6(100Hz +6dB)· gain 64(降低音量上限防破音)· mute on(教室静音)


📁 项目结构

Cardputer ADV/
├── README.md                 # 本文件
├── CLAUDE.md                 # 开发工作区说明(构建/约束/调试)
├── Cardio/
│   ├── ARCHITECTURE.md       # 系统架构、数据流、状态机
│   ├── PLAN.md               # 开发计划、里程碑、风险
│   ├── PLAN_UI_BLE.md        # UI 收尾 + BLE 通知 详细计划
│   ├── PLAN_WM8960.md        # 外接立体声 codec 计划(可选)
│   ├── CLIENT_PLAN.md        # 三端客户端设计
│   ├── firmware/             # Arduino C++ 固件
│   │   ├── Cardio.ino        # 入口:setup/loop,三屏路由,按键
│   │   ├── audio/            # AudioEngine / Equalizer / 输出桥接 / JackMonitor
│   │   ├── player/           # PlaybackController(内存库索引 + 播放顺序)
│   │   ├── ui/               # Player / Browser / EQ / Splash 屏 + Theme/字体
│   │   ├── config/ debug/    # Config(config.txt)/ Logger / DebugConsole
│   │   ├── platformio.ini    # 两个构建环境(主 / launcher)
│   │   └── partitions_launcher.csv
│   └── sdcard/Cardio/        # SD 卡模板(config.txt 等)

📋 开发状态 & 路线图

播放器内核 + 均衡器 + Launcher 兼容已完成并实机验证;通知系统与外接立体声为下一步。


📚 文档导航

文档 内容
CLAUDE.md 构建命令、关键约束(无 PSRAM/单声道/内存预算)、调试、Git 流程
ARCHITECTURE.md 系统总览、固件内部架构、音频管线、状态机、SD 结构、依赖库
PLAN.md 代码量、里程碑甘特图、任务清单、风险登记
PLAN_UI_BLE.md UI 收尾 + BLE 通知直推 详细实施计划
PLAN_WM8960.md 外接 WM8960 立体声 codec 实施计划
CLIENT_PLAN.md Android / macOS / Windows 客户端设计
sdcard/README.md SD 卡准备与 config.txt 字段说明
docs/references/REFERENCES.md 数据手册 / 原理图 / 库 离线资料库 + 索引

🙏 致谢


📄 许可证

MIT © ZUENS2020

About

Music player + notification relay firmware for M5Stack Cardputer ADV

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors