ESP32搞的NES游戏掌机

本文转自立创开源硬件平台

作者:micespring

原文链接:https://oshwhub.com/micespring/esp32-nesemu

▌简介

一个基于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的值来重新设置充电电流。

▌键位图

▌IO映射

FunctionIOComments

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游戏

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

▌如何制作?

准备材料

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

  • 屏幕:以下两个均可,注意,选择9341版本的

    • (已验证)2.4寸tft液晶屏显示屏ILI9341SPI串口屏

    • (未验证,需要检查PCB封装,可能需要修改PCB)中景园2.4寸液晶屏320x240 TFT LCD SPI串口TFT彩色液晶屏9341

  • M3*12螺丝x4

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

准备外壳

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


打样PCB


开始制作

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

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

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

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

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

 

6,运行工具 

7,选择ESP32 Download Tool 

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

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

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

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

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

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

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

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


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

 

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

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

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

▌下载新游戏

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

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

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

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

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

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

游戏序号方向键

1

默认(不按任何按键)

2

方向键-上

3

方向键-下

4

方向键-左

5

方向键-右

▌图赏

完整资料已经上传到公众号后台,回复关键词:掌机,即可获得下载链接。

完整资料已经上传到公众号后台,回复关键词:掌机,即可获得下载链接。

完整资料已经上传到公众号后台,回复关键词:掌机,即可获得下载链接。

视频


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matplotlib从文件绘图时Y轴坐标不正确

问题描述: 从文件中读取X坐标和Y坐标,绘制折线图,代码和结果如下: import matplotlib.pyplot as plt import matplotlib.animation as animation from matplotlib import stylestyle.use(dark_background)fig plt.figure()graph_…

全球最囧的爱情测试.....

据说这是全球最准的爱情测试:http://love.xf001.com/?uid224632 。。。。。。。。。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。…

回答嵌入式初学者的一些问题

如图,最近类似的提问很多,上周末,刚打球回来,跟一起刚工作的同学聊了一个晚上。要知道,一个晚上的时间我可以做很多事情,可以玩好多局王者荣耀,可以看很多论坛的资料。但是我愿意花费时间在他身…

什么是RAC定位?

笔者因为工作原因,接触到一种叫做RAC的定位产品,该定位产品不同于一般的定位模组,它产品外表看起来很像一个GPS定位天线,通过一个4芯线缆(供电串口通信)直接和其它MCU/CPU 相连接,输出定位信息。…

15个有趣的555电路,没事可以自己做一做

NE555几乎是一个非常常见的一个芯片,在很多的电器里都能看到它的身影,本文为大家总结了一些有趣的NE555电路。013*3*3光立方02激光射线03金属探测器04音乐盒05电子转盘06舵机测试器07反应计时器08高压发生器09触摸开关10交通信号灯11电视信号干扰器12自行…

使用ABAP和JavaScript代码生成PDF文件的几种方式

ABAP 方法1:使用ABAP Adobe Lifecycle Enterprise Service 详细步骤参考我的博客Convert word document into PDF via Adobe Livecycle Enterprise service 方法2:使用ABAP Webdynpro里的InteravtiveForm控件 Adobe Form Template 详细步骤参考我的博客…

Configuration Manager 纯模式所需的 PKI 证书的分步部署示例

Configuration Manager 纯模式所需的 PKI 证书的分步部署示例:Windows Server 2008 证书颁发机构此分步示例部署使用 Windows Server 2008 证书颁发机构 (CA),提供一些过程以指导您完成创建和部署 Configuration Manager 2007 在纯模式下操作所需的公钥基…

周琦能和范志毅比高下?

在最新的直播中,徐静雨就专门谈到了周琦与范志毅的对比,他先是举例乒乓球界的张继科与篮球界的姚明对比,张继科在乒乓球界的成就要远高于姚明,但是姚明的影响力却是张继科无法比较的。而在篮球界与足球界的对比中,他明…

[原创]C/C++语言中,如何在main.c或main.cpp中调用另一个.c文件

C/C语言中,如何在main.cpp中调用另一个.c文件主要有5种思路: 1、在VS2012 IDE中,将被引用的.c文件后缀名全部修改为.h,然后通过IDE的解决方案资源管理器中鼠标右键单击“头文件”-"添加"-“现有项”,选中修改…

[零基础学JAVA]Java SE应用部分-35.JAVA类集之四

JAVA按以下重要顺序 面向对象 类集框架 JDBC 文件编程本季目标主要讲解以下的内容: Collection List Set Map Iterator ListIteator Enumeration for…each语句(JDK 1.5的新特性) Comparable接口 二叉树1、类集结构&#xff08…

可在单片机上运行的简易图形库

来源:电子森林,排版:晓宇微信公众号:芯片之家(ID:chiphome-dy)发现一个网站 - http://www.technoblogy.com/,基本都是关于用ATtiny单片机做各种创意设计的,非常适合初学单…

欧拉回路 欧拉路径

欧拉路径(瞎)定义 : 如果有一条路径使得能够走完所有的边且每一条边经过有且只有一次,这样的路径叫做欧拉路径 欧拉回路定义 : 如果有从起点出发最后回到起点的一条路径使得能够走完所有的边且每条边经过有且只有一次,称其为欧拉回…

终于搞清楚开漏输出和推挽输出这个鬼东西

先说下推挽输出,简单的说,就是想输出高电平,就输出高电平,想输出低电平就输出低电平。推挽电路上面是NPN三极管,下面是PNP三极管,请注意输入端和输出端的波形。下面是输入波形当输入为正时,上面…

被称为“C#圣经”的权威著作!

媒体评论 “哇,这本书太棒了!对.NET 3.5和CLR的阐释非常深入。它已经成为我的头号参考书。强烈推荐给所有.NET程序员。” ——Jeff Wilcox,微软.NET开发团队资深工程师 “Troelsen大师王者归来了!C#程序员分为两类:读…

分享一篇很不错的CMake入门文章,值得收藏细读!

https://www.hahack.com/codes/cmake/▌什么是 CMake?你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循…

例用C# 变更文件夹时间

想变更文件夹的时间.以前做了一个软件.是变更文件的时间,应用了C# API.这次和上一次相同,用Form来通过外部对时间进行确认.确认后应用C#中,System.IO ->Directory->SetCreationTime 来对时间进行变更.以下是C#应用的例子.基本相同.但是,不要忘记小问题,下面的例子的命名空…

Linux 30岁,这些年经历了什么?

3月19日,Linux基金会在Twitter上发布推文宣布,其小企鹅的标志“Tux”已经30周岁了,还为其设计了一系列的庆祝海报,以便大家转发分享。虽然离Linux的生日还有一段时间,但是今年Linux基金会已经提前先帮小企鹅“Tux”过生…

用CSS画基本图形

用CSS画基本图形 1、正方形 代码如下: #square { width: 100px; height: 100px; background: red; } 2、长方形 代码如下:#rectangle { width: 200px; height: 100px; background: red; } 3、圆形 代码如下:#circle { width: 100px; height: 100px; …

手撸双链表,图解

C语言,链表C实现单向链表深入理解Linux内核链表跟单链表不同,双链表的节点包含两个指针,一个指针指向上一个元素,一个指针指向下一个元素。▌如下图学习数据结构的时候,要像认识一个人一样,要了解这个人有什…

STM32串口用中断还是用轮询

1.从轮询到中断很多同学都不喜欢用中断,而偏爱用轮询的操作方式。这是不是和我们的天性有关呢?每个人都喜欢一切尽在掌握中,肯定都不喜欢被打断。我们常常都有这样的经验:正在跟别人说一件事,然后突然有个电话打进来&a…