复刻马里奥经典问号砖,摇一摇出金币,这波回忆杀满分!
本项目是一款复刻经典马里奥问号砖块的互动解压玩具,灵感来源于"Useless Box(无聊盒子)"。当你按下按钮时,盒子会以各种出其不意的方式自己关闭开关——快速、慢速、犹豫、抖动、偷看……每次互动都充满惊喜。项目基于 ESP32-WROOM 主控,采用 FreeRTOS 实时操作系统,集成 OLED 表情显示、MP3 音效播放和双舵机动作控制,支持 PlatformIO 开发环境。全部硬件设计、
复刻马里奥经典问号砖,摇一摇出金币,这波回忆杀满分!
一款基于 ESP32 主控的"马里奥无聊方块",专为 DIY 爱好者设计
项目简介
本项目是一款复刻经典马里奥问号砖块的互动解压玩具,灵感来源于"Useless Box(无聊盒子)"。当你按下按钮时,盒子会以各种出其不意的方式自己关闭开关——快速、慢速、犹豫、抖动、偷看……每次互动都充满惊喜。
项目基于 ESP32-WROOM 主控,采用 FreeRTOS 实时操作系统,集成 OLED 表情显示、MP3 音效播放和双舵机动作控制,支持 PlatformIO 开发环境。全部硬件设计、3D 模型和固件源码均已开源,适合 DIY 爱好者学习和复刻。
开源地址
| 平台 | 链接 |
|---|---|
| 个人博客 | https://zhcmqtt.top |
| CSDN博客 | https://blog.csdn.net |
| 立创硬件开源 | https://x.jlc.com |
| GitHub项目开源 | https://github.com |
视频演示
📺 视频作者:B站 @鸿尘客
🔗 视频链接:马里奥无聊方块
应用场景
- ESP32 嵌入式项目学习
- 自主编程开发
- 解压玩具
功能特性
| 功能 | 描述 |
|---|---|
| 双舵机控制 | 翻盖舵机 (GPIO14) + 推杆舵机 (GPIO12),支持快开、慢开、抖动、摇摆等动作 |
| OLED 表情 | 0.96 寸 SSD1306 屏幕,开机 GIF 动画,随机切换多种表情 |
| MP3 音效 | 串口控制 MP3 模块,支持多音效集随机播放,可自定义上传音频 |
| 随机行为 | 基于 ESP32 硬件随机数,每次触发动作、表情、音效均随机组合 |
| 惊喜彩蛋 | 随机 10-15 次触发后播放特殊惊喜音效 |
| 电源管理 | 4.2V 锂电池供电,集成充电管理芯片,充电红灯/满电绿灯指示 |
| 便捷烧录 | Micro USB 接口 + 自动下载电路,无需手动配置 IO0/RST |
| 可扩展 | 预留 WiFi/MQTT 网络功能接口,可二次开发实现远程控制 |
核心组件
| 组件 | 型号/规格 | 说明 |
|---|---|---|
| 主控芯片 | ESP32-WROOM-32 | 双核 240MHz,支持 WiFi/蓝牙 |
| OLED 显示屏 | 0.96 寸 SSD1306 | I2C 接口,128x64 分辨率 |
| MP3 模块 | 串口 MP3 播放模块 | 支持 TF 卡,串口指令控制 |
| 舵机 | SG90 x 2 | 翻盖舵机 + 推杆舵机 |
| 电池 | 4.2V 聚合物锂电池 | 配合板载充电管理电路 |
| 触发开关 | 纽子开关 | 用户交互输入 |
| USB 接口 | Micro USB | 充电 + 固件烧录 |
软件架构
- 开发框架:Arduino + PlatformIO
- 操作系统:FreeRTOS 多任务调度
- 核心库依赖:
ESP32Servo- 舵机 PWM 控制U8g2- OLED 图形驱动ArduinoJson- JSON 数据解析PubSubClient- MQTT 通信(可选)
预览图
PCBA 预览
| PCBA 正面 | PCBA 反面 |
|---|---|
![]() |
![]() |
接线图
图:配件接线示意图
3D 渲染图
| 渲染图 1 | 渲染图 2 | 渲染图 3 |
|---|---|---|
![]() |
![]() |
![]() |
实物图
| 实物展示 1 | 实物展示 2 |
|---|---|
![]() |
![]() |
项目目录
03_boring_box/
├── 01_UI设计/ # UI 素材资源
│ ├── GIF/ # GIF 动画素材
│ ├── 舔狗表情/ # OLED 显示表情图片
│ ├── 音效集/ # MP3 音频文件
│ └── 马里奥无聊方块-封面.png
├── 02_三维模型/ # 3D 打印模型文件
│ ├── 3D打印/ # 可直接打印的 STL 文件
│ ├── 外购/ # 外购配件模型参考
│ ├── 马里奥盒子主体.SLDPRT # 主体外壳
│ ├── 马里奥盒子底座.SLDPRT # 底座
│ ├── 马里奥盖子.SLDPRT # 顶部翻盖
│ ├── 马里奥问号.SLDPRT # 问号装饰
│ ├── 马里奥键帽.SLDPRT # 按键帽
│ ├── 开盖杆.SLDPRT # 翻盖连杆
│ ├── 无聊杆.SLDPRT # 无聊舵机连杆
│ └── ... # 其他零件
├── 03_采购清单/ # 物料清单
│ ├── BOM.xls # 元器件清单
│ └── 采购清单.xlsx # 采购明细表
├── 04_firmware/ # 固件源码
│ ├── Boring_box/ # Arduino 工程源码
│ └── 模块数据手册/ # 芯片及模块数据手册
├── 05_固件烧录/ # 烧录工具及说明
│ ├── firmware_bin/ # 编译好的固件文件
│ ├── flash_download_tool_3.9.6_0.zip # ESP32 烧录工具
│ └── 烧录必看.docx # 烧录操作指南
└── readme.md # 项目说明文档
使用说明
- 硬件准备:本模块包含硬件与软件设计,焊接完成后需要烧录程序才能使用
- 供电方式:模块使用 4.2V 聚合物电池供电,并通过 5V 的 Micro USB 接口充电
- 3D 打印:提供 3D 模型文件,需要使用 3D 打印技术打印零件并组装
- 开源资料:PCB、3D 模型、源码全部开源,配件信息请查阅附件
固件烧录
烧录步骤
图:Flash 烧录工具参数配置
- 下载并安装 CH340 驱动,配置 COM 口
- 确保参数设置正确(可检索 ESP32 芯片 Flash 烧录查看具体步骤)
- 重要:下载前需要同时连接电池和 USB,MCU 才会正常供电
- 板载自动下载电路,无需配置 IO0 和 RET 即可实现自动烧录
- 若出现烧录失败,可尝试降低波特率
⚠️ 注意:单 Micro USB 接口供电时不会经过稳压芯片,因此下载固件前需要同时连接电池和 USB
音频烧录
操作方法
- 可直连 MP3 模块,通过复制粘贴直接进行音频烧录
- 个人常用音频上传至 音效集 03
- 惊喜音效上传至 音效集 02 并改名替换源文件(惊喜音效会随机在 10-15 次内触发)
自定义随机播放数量
若需实现随机播报,需修改源代码中 random_count 总数量并重新烧录代码。
图:random_count 参数修改示例
程序源码提供 MP3 驱动代码,可结合数据手册自行修改
注意事项
| 项目 | 说明 |
|---|---|
| 接口核对 | 由于板载接口较多,请务必仔细核对各配件对应的接口 |
| OLED 驱动 | 采用 SSD1306 芯片,使用其他芯片时需要自行移植代码 |
| 3D 打印精度 | 部分设计采用内置螺纹,需要确保打印机精度满足要求 |
| OLED 固定 | 内部使用热熔胶固定,如需开孔固定可自行修改模型 |
装配顺序
为保持外部造型美观,模块主要采用内部固定方式。装配时请按以下顺序操作:
固定电池 → 固定纽子开关 → 固定无聊舵机 → 固定翻盖舵机 → PCB接线 → 底座固定MP3 → 底座固定PCB → 固定底座 → 连接翻盖
开源协议
本项目采用 MIT 协议开源,欢迎 Star 和 Fork!
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐












所有评论(0)