文章目录
- 前言
- 需求分析
- 硬件选择
- 硬件概览
- 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的音频座模块是最理想的
- 最后为了能将这些硬件连接起来,还需要用到面包板和一些面包线或者杜邦线。
控制方法有三种,大家可以在源码里面配置:
- 使用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://item.taobao.com/item.htm?id=642291784020
- 百问网官网: https://www.100ask.net/
- Bilibili:https://www.bilibili.com/video/BV1ef4y1W7En