信用卡大小 Arduboy 克隆机:Arduino Nano + I²C OLED 复古游戏机自制
核心硬件清单
- Arduino Nano R3 ×1
- 128×64 I²C OLED(SSD1306) ×1 — 比原版 SPI 屏更易购、更便宜
- 无源蜂鸣器 ×1
- 轻触开关 6×6mm ×6(上下左右 + A/B 键)
- RGB LED 共阴 ×1(状态灯)
- 电阻 220 Ω ×3(RGB 限流)、10 kΩ ×1(按键上拉)、4.75 kΩ ×3(I²C 上拉,可选)
- 18650 锂电池 3.7V + TP4056 充电板 — 便携供电
- 3D 打印外壳(STL 见项目附件)
工具需求
- 3D 打印机、电烙铁、焊锡、热熔胶枪
项目背景
Arduboy 是一款信用卡大小的开源 8-bit 游戏机,基于 ATmega32U4 + 128×64 OLED,拥有丰富的开源游戏库。本项目将主控替换为更常见的 Arduino Nano(ATmega328P),屏幕改用 I²C OLED,硬件成本更低、采购更易,同时保持与 Arduboy2 库兼容,可直接运行数十款经典游戏。
电路原理
- OLED 通过 I²C(A4/SDA、A5/SCL)通信,需 4.7 kΩ 上拉电阻(模块通常已焊好)。
- 6 个按键接 D2~D7,内部上拉或外接 10 kΩ 上拉。
- 蜂鸣器接 D8,RGB LED 接 D9/D10/D11(PWM)。
- 电池经 TP4056 充电板供电,Nano VIN 引脚直连电池正极(3.7~4.2V 在 Nano 工作范围内)。
固件移植要点
- 安装 Arduboy2 库:GitHub(已适配 I²C OLED 与 Nano)。
- 在 Arduino IDE 中选择 Arduino Nano (Old Bootloader) 或 ATmega328P。
- 直接编译上传 Arduboy2 例程中的游戏(如 ArduBreakout、Pinball、Snake 等),无需修改代码。
测试通过游戏列表
- ArduBreakout(打砖块)
- Pinball(弹珠台)
- Shadow-Runner(跑酷)
- Snake(贪吃蛇)
- VIRUS-LQP-79(射击)
- Nineteen43(纵版射击)
- 以及 Arduboy 社区 200+ 款开源游戏大多可直接运行。
3D 打印外壳
项目附件提供 .stl 文件(3d_parts_ThLGvJvWga.rar),包含上下盖、按键帽、电池仓,打印材料建议 PLA,填充 20%,层高 0.2 mm。组装时注意 OLED 与按键对齐,螺丝柱设计为 M2 自攻螺丝。
原理图与 PCB 布局
原理图见附件(schematics),已在 4×6 cm 万用板上验证布局;如需批量可参考设计绘制双层 PCB。
常见问题 FAQ
- 屏幕不亮? 检查 I²C 地址(0x3C/0x3D)、上拉电阻、供电是否共地。
- 游戏跑不全? Nano Flash 32 KB,部分大型游戏需精简或移植至 ATmega32U4 版本。
- 蜂鸣器无声? 确认
BeepPin1引脚定义与硬件一致(默认 D8)。
制造工艺
- Arduino 与树莓派 2 I2C 通信集成:打造物联网传感器项目的最佳搭档
- 自制 Arduboy 克隆掌机:从面包板到专业 PCB
- 用 Arduino UNO 和 OLED 显示屏制作经典 Pong 游戏:分步教程
- Arduino Due 驱动 3.2″ TFT 实现温度监测与实时时钟
- 自制简易红外避障传感器:IR LED + 光电二极管 + Arduino
- 基于 Arduino Mega 与 Nextion 显示屏的交互式气象站
- Arduino Nano + 摇杆控制双步进电机:Visuino 图形化教程
- Arduino DIY 电压表:Nokia 5110 屏幕显示,手把手教学
- Arduino Nano 驱动 128x64 OLED 实时运行康威生命游戏 (元胞自动机)
- Arduino Nano 手持盖革计数器:DIY 核辐射检测仪
- Arduino GPS与TFT触摸屏扩展板:实时定位显示项目
- 为Arduino构建隔离模拟输入电路