ESP32|基于ESP32制作的低成本、可拓展性高的NES游戏机(1)(开源ESP32 NES模拟器)-效果演示及介绍
文章目录
- 前言
- 需求分析
- 硬件选择
- 硬件概览
- ESP32 NES模拟器
- 效果图
- 项目介绍
- 源码、硬件获取
- 视频教程
- 待续。。。
ESP32|爷青回!ESP32(单片机) NES模拟器
前言
小时候我们都喜欢玩FC,现在仍有很多人想做出属于自己的游戏机(模拟器),玩上几把小时候最喜欢玩的游戏,而nes模拟器正是不二之选,通过制作模拟器我们能学习到软硬件各方面的知识,可谓是很多程序员走向编程开发道路上不可缺少的一环。
好处有那么多,但是从零开始制作一台游戏到底难不难呢?
需求分析
制作一台游戏机我希望是不用涉及太多的硬件方面的知识,如果要自己动手画一个电路板并且焊接元件上去,就太麻烦了!我只想凭自己现有的能力,使用常见的硬件模块搭建出一台游戏机,而且后面这些硬件可以用于到其他的实验或者项目就更好了!
上面的演示视频已经满足了我们的需求,所有的硬件我们都是像搭建积木那样搭建起来,所有的功能都可以通过配置文件进行裁剪!
硬件选择
- 开发板:如果板子能连接互联网或者局域网,我们就可以通过外网下载我们所需的文件或者进行固件升级;通过局域网可建立面对面对面加入游戏,就像真的玩游戏机那样的体验。而选择搭载了WROOM-32D模组的乐鑫公板ESP32-DevKitC v4开发板是比较理想的选择。
- 存储部分:所有文件保存在SD卡中读取存储起来非常方便,这需要使用到SPI SD卡模块
- 显示部分:FC游戏机的显示分辨率是256x224,我们使用2.2寸(240x320)的显示屏就足够了,这里我选择常见的2.2寸(240x320)ILI9341显示屏。
- 音频输出部分:为了方便接耳机或者音响,选择3.5mm的音频座模块是最理想的
- 最后为了能将这些硬件连接起来,还需要用到面包板和一些面包线或者杜邦线。
硬件概览
名称 | 数量 |
---|---|
ESP32主板 | 1 |
MicroUSB数据线 | 1 |
面包板+面包线 | 2 |
TFT ILI9341屏幕(240x320) | 1 |
SPI TF卡模块 | 1 |
16GB TF卡 | 1 |
NES游戏手柄+转接板 | 1 |
CJMCUTRRS 3.5mm音频座模块 | 1 |
ESP32 NES模拟器
效果图
控制方法有三种,大家可以在源码里面配置:
- 使用PCF8574模块,直接接按键肝(要接很多线,玩起来一点都不方便、没有手感)
- 使用九针或者七针的NES游戏手柄控制游戏(手柄玩起来很有手感,但接口比较奇葩,要接五根线:VCC、GND、LATCH、CLOCK、DATA)
- 使用(MINI、Micro)USB接口的游戏手柄控制游戏(手柄玩起来很有手感,而且常见接口,使用通过转接板非常方便,要接5根线:VCC、GND、ID、D+、D-)
项目介绍
硬件组合合理,成本低、可DIY性高,模块化的硬件可重复利用到其他项目或者实验,本项目功能特点:
- 通过 SPI sd卡模块 从外挂的micro sd 卡(SPI)中加载游戏文件(Fat文件系统)
- 2.2寸ILI9341显示屏 (SPI接口240x320分辨率)显示游戏图象
- 支持开机动画、菜单选择游戏运行
- 支持音频输出(I2S),使用 CJMCUTRRS 3.5mm音频座模块 输出音频更方便!
- 支持PCF8574 I/O拓展模块(I2C接口)控制游戏,拓展的8个I/O引脚用于游戏按键(上、下、左、右、A、B、select、start)
- 支持使用国内 7针、9针NES游戏手柄 控制游戏
- 支持国内 MicroUSB接口的游戏手柄 控制游戏
项目使用 VScode+platformio插件开发,以上功能均可在
./platformio.ini
文件裁剪。
请将NES游戏文件存放在sd卡中的/nes
文件夹。
源码、硬件获取
- 源码仓库地址: https://gitee.com/weidongshan/esp32_100ask_project.git
- 硬件:https://item.taobao.com/item.htm?id=642291784020
视频教程
- 百问网官网: https://www.100ask.net/
- Bilibili:https://www.bilibili.com/video/BV1ef4y1W7En
待续。。。
ESP32|基于ESP32制作的低成本、可拓展性高的NES游戏机(1)(开源ESP32 NES模拟器)-效果演示及介绍相关推荐
- java工作日报管理系统_GitHub - LovebuildJ/book-manager: JavaWeb图书管理系统,简单易用功能强大,可拓展性高,集成主流框架...
book-manager 介绍 图书管理系统 请勿忽略更新日志, 会有详细的版本更新说明! 软件截图 在线API接口文档 登录 首页轮播 图书列表 图书上架 图书编辑 图书删除 图书借阅 图书检索 图 ...
- 推荐一款拓展性高的开源仓库管理系统
大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标! 今天小编推荐一款开源仓储 ...
- 到底什么是面向对象,面试中怎么回答。面向过程和面向对象的区别是什么。java跨平台特性以及java和C++的区别。面向对象的三大特性——封装、继承和多态。面向对象的高拓展性以及低耦合度怎么体现?
Java语言具有的特点:面向对象.跨平台.多线程以及网络编程 1. 和C++的区别 1.1 Java隐蔽了C++的指针,避免指针直接操作,程序更加安全. 1.2 Java类继承只能单继承,避免了C++ ...
- Arduino ESP32 基于Web服务端SD文件管理系统完善
Arduino ESP32 基于Web服务端SD文件管理系统功能完善 在上一版的基础上添加了,查看SD卡容量的功能. 接线说明 Hard SPI* MICROSD CS - ESP32 IO5MICR ...
- 开源ESP32彩屏WIFI/BLE智能万用表制作过程:1.外壳与屏幕选型
开源ESP32彩屏WIFI/BLE智能万用表制作过程:1.外壳与屏幕选型 一.前言 二.为什么制作万用表 三.选择外壳 四.选择屏幕 一.前言 小伙伴们大家好,去年7月份开始全职创业已经过去一整年了, ...
- ESP32基于Arduino框架下U8g2驱动I2C OLED 时间显示
ESP32基于Arduino框架下U8g2驱动I2C OLED时间显示
- ESP32基于Arduino框架,SD卡+MAX98357模块+MP3播放器
ESP32基于Arduino框架,SD卡+MAX98357模块+MP3播放器
- 开源ESP32数控电源
ESP32数控直流稳压可调电源 描述 可调输出详细参数 基础功能模式 程序下载 注意事项 其他平台 描述 ESP32数控电源是 一款便携数控可调稳压电源 支持DC 9~30V或Type-C:PD100 ...
- trove mysql 镜像_trove 基于 centos7 制作 mysql5.6 镜像
本文档是手动制作mysql5.6的trove镜像 openstack版本为newton 1.创建基础虚拟机 登录openstack创建一台虚拟机,这台虚拟机用于制作trove镜像,虚拟机的根磁盘最终会 ...
- dockerfile安装yum_Docker镜像-基于DockerFile制作yum版nginx镜像
Docker镜像-基于DockerFile制作yum版nginx镜像 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. DockerFile可以说是一种能被Docker程序解释的脚本, ...
最新文章
- wxPython的API下载
- 编写高质量代码:改善Java程序的151个建议(第4章:字符串___建议52~55)
- 交换网络中的嗅探和ARP欺骗
- YUM更换源--yum找不到安装包(转)
- AWS Lambda事件源映射:使您的触发器混乱无序
- HTMLTestRunner.py内容
- xml 连表查询(2) --自关联! 查询父类name,显示父类下的所有子类
- 【Elasticsearch】Elasticsearch 导入 导出 命令行工具
- openstack rocky 安装_ubuntu 18.04 安装网易云音乐
- c语言输出合法的出栈算法,c语言栈的实现以及操作
- 【转】使用cocos2d-console工具转换脚本为字节码
- Java开源J2EE框架
- 2020年的云计算概念和趋势
- word转html分页符,Word分页符、分栏符、换行符、分节符的作用
- git 添加远程仓库并将第一次本地库的已有所有内容推送到远程库上遇到的一个错误...
- hdu 5312 打表加特判
- 图说三极管的三个工作状态
- mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object完美解决方案
- Expected value but found invalid token at character 1stack traceback:coroutine 0: [C]: in function
- PHP修改图片上的文字,怎么用ps改图片上的字