《一名二本大学生的暑假逆袭:手搓多功能硬件调试工具,开源!》
MdLink是一款基于ESP32-S3的多功能嵌入式开发平台,采用ESP-IDF 5.2.5开发环境。项目结构包含工具、媒体、娱乐和设置四大功能模块,支持逻辑分析仪、无线调试、USB WiFi SD卡、PWM输出等开发工具,以及视频播放、音乐播放、小游戏等娱乐功能。系统使用CherryUSB库和LVGL图形界面,支持Shell交互和OTA更新(当前受限)。硬件参考Felini电子实验室设计,集成D
MdLink 简要介绍
📁 项目结构
MdLink/ ├── components/ # 第三方组件库和自定义库 ├── main/ # 主应用程序入口 ├── DAP/ # DAP调试器实现 ├── driver/ # 硬件驱动层 ├── esp_usb_jtag/ # ESP USB JTAG功能 ├── game/ # 游戏功能模块 ├── hal/ # 硬件抽象层 ├── logic_analyzer/ # 逻辑分析仪功能 ├── MDLink_Config/ # 项目配置文件 ├── players/ # 媒体播放器功能 ├── Settings/ # 系统设置功能 ├── shell/ # 命令行交互界面 ├── spiffs/ # SPIFFS文件系统 ├── test/ # 测试代码 ├── ui/ # 用户界面组件 ├── usb2uart/ # USB转串口功能 ├── usb_extend_screen/ # USB扩展屏幕功能 ├── usb_msc_wireless_disk/ # USB无线磁盘功能 ├── usb_public/ # USB公共功能模块 ├── wifi/ # WiFi功能模块 ├── wireless/ # 无线通信功能 ├── CMakeLists.txt # 项目构建配置 ├── partitions.csv # 分区表配置 ├── sdkconfig # SDK配置文件 └── README.md # 项目说明文档
概述
MdLink 是一款基于 ESP32-S3-WROOM-1-N16R8 模组(搭载 Xtensa® 32 位 LX7 双核处理器,8MB PSRAM,16MB 外置 FLASH)的多功能嵌入式开发工具平台。系统采用 CherryUSB 作为 USB 库,LVGL 作为图形界面库,开发环境为 ESP-IDF 5.2.5。
设备开机时会显示图标并播放开机音乐,随后进入主界面。主界面分为四大板块:工具、媒体、娱乐和设置。用户可通过点击对应标签或左右滑动(支持无限循环滑动)切换界面。状态栏在联网成功后更新,电池功能暂未实现实时更新。
⚠️ 注意事项:
语音控制默认关闭,可通过唤醒词“嗨,乐鑫”启用;
截图功能默认开启,可在设置中配置,并通过按键触发;
支持通过 Shell 查看设备信息及控制设备。
功能模块介绍
🔧 工具
-
逻辑分析仪 支持通过 PulseView 扫描设备并配置参数。
-
无线调试 可通过 ElaphureLink 连接 MdLink.local,使用 Keil 进行调试。
-
有线调试
-
DAP-Link:支持 ARM M3/M4 芯片调试,提供 IO 模拟、专用 IO 模拟、SPI 模拟及虚拟串口(CDC-ACM)功能;
-
ESP-UF2-JTAG:支持 ESP32 芯片调试,提供专用 IO 模拟和 UF2 拖拽下载。
-
-
USB WIFI SD 卡
-
插入 SD 卡后可显示容量和目录结构,支持文件浏览、视频/音乐播放、图片查看和文本阅读;
-
连接电脑后,Windows 将识别为一个盘符(类似 U 盘);
-
联网状态下,可通过浏览器访问
MdLink.local,支持文件查看和增删(文件大小需小于 20MB)。
-
-
PWM 输出 (功能待完善)
-
DAC 波形 (功能待完善)
-
电流表 (功能待完善)
-
示波器 (功能待完善)
-
PD 输出 (功能待完善)
-
秒表 (功能待完善)
-
计算器 支持基本加减乘除运算。
-
IP 定位 / 天气 使用中国气象局接口(公共 KEY),支持 IP 查询和天气预报。
🔔 注意:公共 KEY 有访问频率限制,请勿频繁调用。
-
离线下载 (功能待完善)
-
空调遥控 / RMT 控制 使用 RMT 字节编码器(非 PWM),支持开关和调节运行状态。目前兼容海尔、美的部分空调型号。
-
USB 副屏 安装
win10_idd_xfz1986_usb_graphic_driver驱动后可用。
📻 媒体
-
视频播放 支持播放 SD 卡
video目录下的视频文件。推荐使用以下 FFmpeg 命令转换视频格式:bash
ffmpeg -i "input.mp4" -vf "scale=320:240:force_original_aspect_ratio=decrease,pad=320:240:(ow-iw)/2:(oh-ih)/2" -r 10 -c:v mjpeg -q:v 8 -c:a pcm_s16le -ar 16000 -ac 1 "output.avi"
-
音乐播放 支持播放 SD 卡中的音乐文件(需插入 SD 卡)。推荐使用 牛五音乐网 下载资源,并可利用以下命令调整音频参数:
bash
ffmpeg -i input.mp3 -ar 32000 output.mp3 # 调整采样率 ffmpeg -i input.mp3 -b:a 32k output.mp3 # 调整比特率 ffprobe input.mp3 # 查看文件信息
-
中文文件名支持:需在 FATFS 中配置代码页为 CP936,并启用长文件名支持。
-
-
录音机 支持录音及回放功能。
-
图片查看 自动读取 SD 卡
image目录下的 JPG 图片,支持浏览、缩放(0.5–3 倍)、上一张/下一张切换。 -
BLE 音箱 (功能待完善)
🎮 娱乐
-
小游戏 内置多款游戏:跳一跳、2048、消消乐、植物大战僵尸(简易模式)、象棋、切西瓜、骰子、Flappy Bird。
🚧 后续计划:移植 NES 模拟器并支持蓝牙手柄。
-
文本阅读器 自动读取 SD 卡
text目录下的 .txt 文件并显示。 -
AI 对话 (功能待完善,需重新烧录代码)
⚙️ 设置
-
系统设置 配置信息存储于
custom_nvs(掉电不丢失),可设置:-
语言、屏幕亮度、颜色主题;
-
语音控制开关;
-
截图功能开关;
-
恢复出厂设置;
-
作者信息。
-
-
WIFI 设置
-
WIFI 扫描:搜索并连接网络;
-
SmartConfig:通过 EspTouch 配网;
-
蓝牙配网。
-
-
OTA 更新 使用 ESP MMAP ASSETS 分离图片和音频资源。
⚠️ 因内存限制,暂不支持 OTA 功能。
硬件参考
软件与技术参考
-
逻辑分析仪:obitvn/felini-firmware
-
Keil 驱动:windowsair/elaphureLink
-
USB 协议栈:CherryUSB
-
DAPLink 模板:CherryDAP
-
USB-JTAG:参考乐鑫官方 ESP32-S3-USB-Bridge
-
空调控制:IRremoteESP8266
-
AI 机器人:esp_sparkbot
-
USB 副屏驱动:win10_idd_xfz1986_usb_graphic_driver
-
聊天机器人:xiaozhi-esp32
技术文章推荐
🤝 参与贡献
欢迎提交 Issue 和 Pull Request!如有功能建议或问题反馈,请至 GitHub Issues。
我们特别欢迎以下方面的贡献:
-
功能完善和bug修复
-
文档改进和翻译
-
测试用例和性能优化
-
新的功能模块开发
📧 联系信息
🎥 演示视频
欢迎前往B站观看演示视频:点击查看
⭐ 如果这个项目对你有帮助,欢迎 Star 支持!
转载请注明出处,谢谢合作。
🙏 致谢
感谢所有开源项目与社区的支持,特别是:
-
乐鑫 (Espressif)
-
CherryUSB
-
LVGL 社区
-
以及其他所有为本项目提供灵感和技术支持的开源项目
更多推荐



所有评论(0)