基于ESP32的NES游戏掌机

4周前

简介:基于ESP32的NES游戏机。

开源协议: GPL 3.0

  • 1111
  • 18
  • 46

描述

简介

一个基于ESP32制作的开源游戏掌机,可以运行标准的NES(日版为FC)游戏,支持单声道音频。让你随时回味儿时的时光。

固件基于乐鑫官方和moononournation二次开发的项目,Github地址:https://github.com/moononournation/esp32-nesemu

版本更新

【V1.1-200807】

  • 现在可以通过在开机时按方向键来选择不同的游戏。最多支持5个内置游戏。(需要重新烧写固件,游戏下载方法详见章节“下载游戏”)

特性

  • 低成本:仅一片ESP32-WROOM-32模块就实现了所有的功能,无需外部Flash、SRAM和DAC。
  • 易于制作:阻容元件使用0805封装,易于焊接。外壳的3D文件制作时已经考虑了低端3D打印机的公差问题,提高外壳制作成功率。
  • 兼容性好:经测试绝大多数的NES游戏可完美运行
  • 可方便地下载游戏:无需重新编译源码即可下载游戏,内置ESP32自动下载电路,下载时无需手动复位。
  • 内置电池:内置了锂电池充电电路和低电量指示电路。
  • 低功耗:400mAh的电池可持续运行约3小时。
  • 多功能:板子上引出了ESP32的全部可用IO,可作为ESP32的开发板使用。
  • 三个指示灯:红色:电量低;蓝色:充电中;绿色:电池电量满。
  • [2020/08/07]可以一次性下载5个游戏

注意事项

  • 下载游戏时一定要打开电源开关!
  • 游戏ROM大小不要超过1M
  • 默认的充电电流约为400mA,如果自己制作时使用了不同容量的电池,请自行根据TP4056充电管理IC的datasheet修改R19的值来重新设置充电电流。image.png

键位图

image.png

IO映射

Function IO Comments
LCD-SCLK GPIO18
LCD-MOSI GPIO23
LCD-DC GPIO17
LCD-CS GOIO5
LCD-RST GPIO4
KEY-UP GPIO14 With 4.7k ohm pullup resistor
KEY-DOWN GPIO32 With 4.7k ohm pullup resistor
KEY-RIGHT GPIO33 With 4.7k ohm pullup resistor
KEY-LEFT GPIO27 With 4.7k ohm pullup resistor
KEY-A GPIO35 With 4.7k ohm pullup resistor
KEY-B GPIO34 With 4.7k ohm pullup resistor
KEY-START GPIO16 With 4.7k ohm pullup resistor
KEY-SELECT GPIO13 With 4.7k ohm pullup resistor

示例

运行Contra游戏

IMG_4014.jpg

作为ESP32开发板运行例程(LittleVGL)

image.png

如何制作?

准备材料

以下商品需要在第三方平台购买

其他元件按照BOM表格在立创商城购买即可,其中电池链接:锂电池 700mA

准备外壳

使用第三方3D打印服务或自行打印外壳,外壳的模型文件在附件中。 image.png

打样PCB

IMG_3998.jpg

开始制作

1,焊接PCB正面元件(不要焊接屏幕) image.png

2,焊接PCB反面元件(不要焊接电池) image.png

3,通过红框位置为PCB供电,供电电压为3.3V,同时通过USB将PCB连接至电脑 image.png

4,在电脑上通过串口助手软件查看ESP32是否正常输出启动Log,如果没有,请重新检查元器件焊接是否有误(不用关心Log内容,只要正常输出log了即可) image.png

5,关闭串口助手,下载附件中的“ESP32-FLASH下载工具-已设置好.zip” image.png

6,运行工具 image.png

7,选择ESP32 Download Tool image.png

8,检查关键设置是否与如下图片中一致(下载的工具是已经设置好的,正常情况下不需要做任何变动) image.png

9,选择正确的COM口,点击Start开始下载

image.png

10,正常情况下下载应该会自动开始,进度条会开始走动,如图:

image.png

11,如果下载长时间未自动开始,按住“下载”键不丢后按一下“复位”,然后再次点击下载工具上的“START” image.png

12,如果按照第11步操作后,依然报错,则可能是元件损坏或焊接不良,请重新检查焊接。

13,等待程序正常下载完毕后,断开USB连接和供电,下图为下载正常结束 image.png

14,焊接屏幕,但是先不要固定屏幕。 image.png

15,确保电源开关处于关闭状态(拨动杆在上方为关闭),然后焊接电池 image.pngimage.png

16,打开电源开关,如果无异常,应该会出现“TANK”的游戏画面。如果白屏或者屏幕不亮。请在断开电池后从第一步开始重新检查焊接、下载是否有误。 image.png

17,使用直径2.5mm钻头扩展螺丝孔,如果没有相关工具,也可以使用自攻螺丝 image.png

18,撕去液晶屏保护膜(按照自己的习惯来,不想撕可以不撕)。使用液晶屏自带的双面胶或者自行打胶固定屏幕(千万不要固定歪了!),将PCB放入底壳,放置好按键,盖上顶壳,拧好螺丝。 image.png

19,大功告成,开始玩耍~

下载新游戏

1.准备好游戏的ROM文件(*.nes)

image.png

2.运行附件中的“ESP32-Flash下载工具-下载多个游戏”

image.png

3.点击红框中按钮,在弹出的文件选择对话框中选择文件类型为“所有文件”,然后选择你要下载的游戏ROM文件

image.png

4.打开游戏机电源(重要!!!),将游戏机通过USB连接至电脑,然后选择正确的COM口,点击START开始下载

image.png

5.下载完成后,按一下游戏机的“复位”键,默认运行第一个游戏。

image.png

6.按住方向键不丢,然后打开电源(开机状态下为按复位键),会自动根据按下的方向键启动不同的游戏。对照如下

游戏序号 方向键
1 默认(不按任何按键)
2 方向键-上
3 方向键-下
4 方向键-左
5 方向键-右

图赏

IMG_4002.jpg

IMG_4011.jpg

文档

基于ESP32的NES游戏掌机_Sch

在编辑器中打开

基于ESP32的NES游戏掌机_PCB

在编辑器中打开

BOM

ID Name Designator Footprint Quantity
1 SK12D07VG4 PWR-SW SW-TH_SK12D07VG4 1
2 TS-1145A-B-A UP,DOWN,LEFT,RIGHT,SELECT,START,KEY-A,KEY-B SW-SMD_4P-L4.2-W3.2-P2.15-LS4.6 8
3 LED-0805_R LB LED0805_RED 1
4 HDR-F-2.54_1x2 LI-ON HDR-F-2.54_1X2 1
5 S8050 Q1,Q2,Q3 SOT-23-3_L2.9-W1.3-P1.90-LS2.4-TR 3
6 TC-1102N-C-DL-B KEY-RST,KEY-BOOT SW-TH_TC-1102N-C-DL-B 2
7 JUMPER JP1 JUMPER-0603 1
8 SPEAKER-FS-2308-P9.2 SP1 SPEAKER-FS-2308-P9.2-PCB 1
9 CH340C U5 SOP-16_L10.0-W3.9-P1.27-LS6.0-BL 1
10 XC6206P332MR U3,U6 SOT-23(SOT-23-3) 2
11 10u C10,C9,C11 C1206 3
12 HDR-M-2.54_1x1 PWR+,PWR- HDR-M-2.54_1X1 2
13 10K R22 RES-TH_RK10J12E002L 1
14 10k R1,R2,R25,R26,R27 R0805 5
15 220 R3,R4,R5,R6,R31 R0805 5
16 4.7k R7,R8,R9,R10,R11,R12,R23,R24 R0805 8
17 20k R13 R0805 1
18 47k R14 R0805 1
19 470 R15,R16 R0805 2
20 100 R17,R18 R0805 2
21 ESP32-WROOM-32DC U1 WIFIM-SMD_38P-L25.5-W18.0-P1.27 1
22 17-21/BHC-XL2M2TY/3T CHG LED0805_RED 1
23 17-21/BHC-XL2M2TY/3T FUL LED0805_GREEN 1
24 10u C5,C4,C13 C0805 3
25 0.1u C6,C14,C1,C2,C7,C8,C12,C16,C17 C0805 9
26 FM8002A U2 SOP-8_L4.9-W3.9-P1.27-LS6.0-BL 1
27 1u C3,C15 C0805 2
28 TFT_2.4_18P_SPI_ILI9341_240X320_65K_S LCD TFT_2.4_18P_SPI_ILI9341_240X320_65K_S 1
29 AZ431AN-ATRE1 U7 SOT-23-3_L2.9-W1.6-P1.90-LS2.8-BR 1
30 HDR-M-2.54_1x20 J1 HDR-M-2.54_1X20 1
31 B2B-XH-A (LF)(SN) BAT CONN-TH_B2B-XH-A (LF)(SN) 1
32 TP4056 U4 SOP-8_EP_150MIL 1
33 U-F-M5DW-Y-4 USB MICRO-USB-A12 1
34 3.3k R19 R0805 1
35 1k R20,R21 R0805 2
36 2k R28 R0805 1
37 33k R29 R0805 1
38 100k R30 R0805 1

展开

登录注册之后才可以进行评论操作
工程所有者当前已关闭评论
征集令发布者当前已关闭评论
全部评论 18

YanChao

评论成功,等待后台内容审核!

2020-08-09 16:31:52
回复

smallcolon

评论成功,等待后台内容审核!

2020-08-08 16:24:37
回复

micespring

@BOOW  现在支持一次性下载5个游戏了,比集合到一个ROM里面感觉要更方便一点,快下载试试吧

2020-08-07 11:10:07
回复

micespring

@naonaozhb  这边直播演示的时候用的就是这个呀,你看看你是不是不小心按住暂停键了。或者有时候外壳太紧,直接把有的按键压下去了也是有可能的。

2020-08-06 23:44:27
回复

micespring

@naonaozhb  👏👏👏

2020-08-06 23:41:17
回复

naonaozhb

大佬这是不是有缺陷呀 为啥我下载了你给的超级玛丽却不能操控 我用其他游戏试了一下板子没有问题

2020-08-06 18:31:25
回复

naonaozhb

楼主我解决了 下载的时候3.3要独立供电 不可以用另一个usb转ttl供电 应该用充电宝

2020-08-06 11:12:13
回复

naonaozhb

楼主 我按照你的设计打了一份 但是下载程序的时候老显示波特率同步失败是什么问题Annotation 2020-08-06 105501.png

2020-08-06 10:55:23
回复

micespring

@zongher  原来是这么打算的,可是感觉做起来太费劲了,要各种妥协,所以就还是从头设计。

2020-08-05 22:12:03
回复

micespring

@明流月  用的柔性TPU打印材料,配合轻触开关我感觉手感还可以的。

2020-08-05 22:10:57
回复

micespring

@BOOW  有这个打算

2020-08-05 22:08:53
回复

明流月

按钮部分可以换成导电胶,这样会更好,用这种按钮总感觉不太舒服。

2020-08-04 16:10:35
回复

zongher

建议买市场上30元的游戏机,然后按那个主板尺寸。
这样按钮,电池,屏幕都有了。。




2020-08-03 20:30:21
回复

Kearney

期待大佬下一次的创作,双人练级还是??

2020-08-03 16:13:31
回复

sxdddzppx

卧槽,大佬太强了!!!这是上次立创eda直播说的那个掌机吗?那天晚上有事没去看直播

2020-08-02 23:33:20
回复

BOOW

大佬🐮🍺!如果能把游戏集成到一个ROM里就好了!

2020-08-02 00:32:58
回复

LYMQ

膜拜大佬!!!膜拜大佬!!!膜拜大佬!!!膜拜大佬!!!

2020-07-31 20:53:09
回复

LonelyQmery

点赞!I了I了






2020-07-31 20:30:47
回复

服务时间

周一至周五 9:00~18:00
  • 0755 - 2382 4495
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 立创EDA微信号

    easyeda

  • QQ交流群

    664186054

  • 立创EDA公众号

    lceda-cn