复刻马里奥经典问号砖,摇一摇出金币,这波回忆杀满分!

一款基于 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 反面
PCBA正面 PCBA反面

接线图

配件接线图

图:配件接线示意图

3D 渲染图

渲染图 1 渲染图 2 渲染图 3
3D渲染1 3D渲染2 3D渲染3

实物图

实物展示 1 实物展示 2
实物图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                 # 项目说明文档

使用说明

  1. 硬件准备:本模块包含硬件与软件设计,焊接完成后需要烧录程序才能使用
  2. 供电方式:模块使用 4.2V 聚合物电池供电,并通过 5V 的 Micro USB 接口充电
  3. 3D 打印:提供 3D 模型文件,需要使用 3D 打印技术打印零件并组装
  4. 开源资料:PCB、3D 模型、源码全部开源,配件信息请查阅附件

固件烧录

烧录步骤

烧录工具界面

图:Flash 烧录工具参数配置

  1. 下载并安装 CH340 驱动,配置 COM 口
  2. 确保参数设置正确(可检索 ESP32 芯片 Flash 烧录查看具体步骤)
  3. 重要:下载前需要同时连接电池和 USB,MCU 才会正常供电
  4. 板载自动下载电路,无需配置 IO0 和 RET 即可实现自动烧录
  5. 若出现烧录失败,可尝试降低波特率

⚠️ 注意:单 Micro USB 接口供电时不会经过稳压芯片,因此下载固件前需要同时连接电池和 USB

音频烧录

操作方法

  1. 可直连 MP3 模块,通过复制粘贴直接进行音频烧录
  2. 个人常用音频上传至 音效集 03
  3. 惊喜音效上传至 音效集 02 并改名替换源文件(惊喜音效会随机在 10-15 次内触发)

自定义随机播放数量

若需实现随机播报,需修改源代码中 random_count 总数量并重新烧录代码。

代码修改示例

图:random_count 参数修改示例

程序源码提供 MP3 驱动代码,可结合数据手册自行修改

注意事项

项目 说明
接口核对 由于板载接口较多,请务必仔细核对各配件对应的接口
OLED 驱动 采用 SSD1306 芯片,使用其他芯片时需要自行移植代码
3D 打印精度 部分设计采用内置螺纹,需要确保打印机精度满足要求
OLED 固定 内部使用热熔胶固定,如需开孔固定可自行修改模型

装配顺序

为保持外部造型美观,模块主要采用内部固定方式。装配时请按以下顺序操作:

固定电池 → 固定纽子开关 → 固定无聊舵机 → 固定翻盖舵机 → PCB接线 → 底座固定MP3 → 底座固定PCB → 固定底座 → 连接翻盖

开源协议

本项目采用 MIT 协议开源,欢迎 Star 和 Fork!

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐