当前位置: 首页 > news >正文

基于ESP32的便携式游戏机

基于ESP32的便携式游戏机

  • 一、项目说明
  • 二、项目材料
  • 三、程序测试
  • 四、设置LCD屏幕
  • 五、控制设置
  • 六、测试电路
  • 七、外壳制作
  • 八、结果

视频:

ESP32 pro

一、项目说明

欢迎来到复古游戏的世界!你是否曾经想要以便携格式重温童年的经典游戏?在这个教程中,我将指导你完成制作自己的手持复古游戏机的激动人心之旅。我们将使用Raspberry Pi Zero 2W、一个3.5英寸的TFT显示屏,以及其他一些容易获得的组件,来创建一个紧凑、便携的游戏设备,它将唤起你所有的怀旧记忆。

这个项目非常适合初学者和有经验的爱好者。它结合了软件设置、硬件集成以及在制作游戏机机身时的一点创意。通过本指南的学习,你不仅将拥有一个功能齐全的游戏机,还将更深入地了解不同组件如何协同工作。
实物图:
在这里插入图片描述
在这里插入图片描述

二、项目材料

电子组件:

  • Raspberry Pi Zero 2W
  • 3.5英寸TFT显示屏
  • 触摸开关
  • 按钮
  • 摇杆模块
  • ESP32C3微控制器
  • 跳线

制作材料:

  • 纸板
  • 旧报纸
  • 胶水
  • 水(用于制作胶水混合物)

电源和连接:

  • 移动电源(用于为游戏机供电)
  • USB数据线(用于连接外设)
  • 蓝牙扬声器或耳机(用于音频输出)

软件:

  • RetroPie操作系统(从RetroPie网站下载)

工具:

  • 烙铁
  • 面包板(用于原型设计)
  • 工艺刀(用于切割纸板)
  • 剪刀

三、程序测试

要开始,我使用Raspberry Pi Imager在microSD卡上安装了RetroPie。以下是我的做法:

  • 下载并安装Raspberry Pi Imager:首先,我从官方Raspberry Pi网站下载了Raspberry Pi Imager并安装到我的电脑上。
  • 选择RetroPie操作系统:我将microSD卡插入电脑并启动了Raspberry Pi Imager。我选择了“选择操作系统”,导航到“仿真和游戏操作系统”部分,并选择了“RetroPie”。我选择了与Raspberry Pi Zero 2W兼容的版本。
  • 写入镜像:选择RetroPie后,我将microSD卡作为存储设备,并点击了“写入”。然后该工具下载并安装了RetroPie到microSD卡上。

安装完成后,我将microSD卡插入Raspberry Pi Zero 2W并开机。RetroPie启动了,我准备为我的手持游戏机配置系统。

四、设置LCD屏幕

在这里插入图片描述
为了将3.5英寸TFT LCD与RetroPie设置在一起,我需要通过终端安装必要的驱动程序。以下是我的做法:

首先,我通过在RetroPie中按F4键访问了终端。一旦进入终端,我通过输入git clone https://github.com/goodtft/LCD-show.git并按回车键,从goodtft的GitHub仓库下载了LCD驱动程序。下载完成后,我使用cd LCD-show/命令进入了下载的目录。在这个目录中,我找到了几个不同型号TFT显示屏的安装脚本。为了安装我的特定TFT显示屏型号的驱动程序,我运行了相应的脚本。对于我的LCD35型号,我输入了sudo ./LCD35-show并按了回车键。

我按照安装过程中的屏幕提示进行操作,这个过程花了几分钟。安装完成后,系统提示我重启我的Raspberry Pi Zero 2W。重启后,RetroPie自动检测并配置了TFT显示屏。我通过连接的外设导航RetroPie界面来测试显示屏。这个设置使我的3.5英寸TFT显示屏能够与我的Raspberry Pi Zero 2W上的RetroPie无缝协作,提供了极佳的复古游戏体验。

关于你提到的GitHub链接,如果你在尝试访问时遇到了问题,可能是因为网络原因或者链接本身的问题。请确保链接是正确的,并且你的网络连接是稳定的。如果问题仍然存在,可能需要稍后再试,或者检查是否有任何网络限制导致你无法访问GitHub。如果你需要进一步的帮助来解决这个问题,我可以提供支持。

五、控制设置

在这里插入图片描述
最初,我使用触摸开关来测试控制。在最终构建时,为了更好的便利性和耐用性,我换成了按钮。然而,我面临D-pad按钮的短缺。幸运的是,我在组件盒中发现了一个摇杆模块,并决定使用它。由于Raspberry Pi不支持通过GPIO引脚的模拟数据,我使用了一个ESP32C3微控制器作为模拟到数字的转换器。

首先,我校准了摇杆模块以确保输入准确。我将摇杆模块连接到ESP32C3微控制器,然后将微控制器与Raspberry Pi进行接口连接。这个设置允许摇杆作为D-pad使用,为我的游戏提供了精确的控制。

六、测试电路

在这里插入图片描述
在将组件组装到最终的外壳之前,我在面包板上测试了整个电路。我将Raspberry Pi、3.5英寸TFT LCD、按钮、摇杆模块和ESP32C3微控制器连接在面包板上。在为Raspberry Pi通电后,我验证了所有组件是否能够正确协同工作。我确保显示屏能够显示RetroPie界面,按钮能够准确响应,摇杆模块能够作为D-pad工作。这一步骤对于在最终组装前识别和解决任何问题至关重要。

七、外壳制作

在这里插入图片描述
为了制作我的手持游戏机的外壳,我使用了用胶水和旧报纸加固的纸板。首先,我将纸板剪成适合所有组件所需的形状和大小。我将胶水和水混合成糊状,然后涂在纸板上,并用几层报纸覆盖。这种技术增强了纸板的强度,使其足够坚固,能够保护组件。一旦胶水干透,纸板变得坚固,我就直接在纸板上组装了电路。我确保所有组件,包括Raspberry Pi、LCD、按钮和摇杆,都牢固地连接在一起。这种方法为我提供了一个简单而有效的手持游戏机外壳。

八、结果

在这里插入图片描述
外壳完成后,我通过固定所有组件来组装最终产品。虽然内置锂离子电池会是理想的选择,但我最初使用了一个移动电源来为游戏机供电。这种设置是功能性和方便的,让我能够在不担心内部电源的情况下享受游戏。

为了测试最终产品,我通过USB数据线将移动电源连接到Raspberry Pi并打开了游戏机。移动电源有足够的容量为我的游戏会话提供足够的运行时间。我玩了一系列NES和GBA游戏,包括“口袋妖怪绿宝石”、“龙珠Z”、“超级马里奥”、“魂斗罗”、“Zippy Race”和“大金刚”。游戏机表现良好,游戏玩法流畅且响应灵敏。

尽管游戏机没有内置扬声器,但它能够连接到蓝牙扬声器和耳机进行音频输出。这增加了手持游戏机的便携性和便利性,使其成为一个真正多功能的设备,适合随时随地进行复古游戏。最终产品是我努力的令人满意的成果,将各种组件结合成一个功能性和愉快的手持游戏机。

希望你喜欢这个项目,并在构建过程中找到乐趣!如果你有任何问题或需要帮助,欢迎在评论区交流。

作者:Svan.


注意:本博文为不得在未经本人同意进行转载或者二次创作,违者必究!!!

相关文章:

基于ESP32的便携式游戏机

基于ESP32的便携式游戏机 一、项目说明二、项目材料三、程序测试四、设置LCD屏幕五、控制设置六、测试电路七、外壳制作八、结果 视频: ESP32 pro 一、项目说明 欢迎来到复古游戏的世界!你是否曾经想要以便携格式重温童年的经典游戏?在这个…...

【LeetCode 88. 合并两个有序数组】 java实现

LeetCode 88. 合并两个有序数组 题目描述 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 的大小等于 m n(即…...

200Kg大载重多旋无人机价格高昂技术分析

200Kg大载重多旋无人机作为一种高度专业化的航空工具,其价格相较于普通无人机显著较高,这主要是由于其在技术设计和生产过程中所需的高要求所致。以下是对其价格高昂的技术分析: 一、高性能材料与结构设计 1. 高强度轻量化材料:…...

快速理解http的get和post

在网络通信中,HTTP 协议扮演着非常重要的角色,而不同的 HTTP 方法决定了客户端与服务器之间的交互方式。 这里讲一下最常用的两种方法——GET 和 POST。 一、GET 方法 GET 方法用于从服务器获取资源。 这就像去图书馆借书——你向图书馆请求一本特定的…...

Mamba学习笔记(3)—S4原理基础

文章目录 Efficiently Modeling Long Sequences with Structured State Spaces0 Abstract1 Introduction2 Background:State Spaces2.1 State Space Models: A Continuous-time Latent State Model2.2 Addressing Long-Range Dependencies with HiPPO2.3 Discrete-t…...

好看的ppt字体推荐!分享3个制作幻灯片的常用软件!

ppt什么字体好看? 好看是一个比较主观的概念,见仁见智,在选用ppt字体时,比起关注好看,字体是否“合适”应该是优先级更高的需求。这里的合适,即PPT所选用字体的风格、呈现效果是否与PPT的主题和使用场景相…...

第6篇:无线与移动网络

目录 引言 6.1 无线网络的基础概念 6.2 无线局域网(WLAN)与IEEE 802.11 6.3 蓝牙与无线个域网(WPAN) 6.4 无线城域网(WMAN)与WiMax 6.5 ZigBee与智能家居 6.6 移动蜂窝网络(3G/4G/5G&…...

【C++标准模版库】unordered_map和unordered_set的介绍及使用

unordered_map和unordered_set 一.unordered_set1.unordered_set类的介绍2.unordered_set和set的使用差异 二.unordered_map1.unordered_map和map的使用差异 三.unordered_multimap/unordered_multiset四.unordered_map/unordered_set的哈希相关接口 一.unordered_set 1.unord…...

深度解析Transformer:从自注意力到MLP的工作机制

深度解析Transformer:从自注意力到MLP的工作机制 以下大部分内容本来自对3Blue1Brown的视频讲解的整理组织 一、Transformer的目标 为了简化问题,这里讨论的模型目标是接受一段文本,预测下一个词。这种任务对模型提出了两大要求:…...

《米小圈动画成语》|在趣味中学习,在快乐中掌握成语知识!

作为一名家长,我一直希望孩子能够在学习的过程中既感受到乐趣,又能获得真正的知识。成语作为中华文化的精华,虽然意义深远、简洁凝练,但对于一个小学生来说,学习和理解这些言简意赅的成语无疑是一个挑战。尤其是有些成…...

linux系统之jar启动脚本

编辑linux启动脚本 执行 vi run_blog 按i 进入编辑,复制以下代码,并根据当前环境修改三个参数。以下是详细完整脚本代码: #!/bin/bash# 配置部分 JAR_PATH"/path/to/your/app.jar" # 替换为你的 JAR 文件的实际路径 L…...

简单认识Maven 2-Maven坐标

Maven坐标 在 Maven 中,坐标(Coordinates)用于唯一标识一个项目或依赖项,就像在现实世界中通过经纬度来确定一个地理位置一样。Maven 坐标由三个主要部分组成:groupId、artifactId 和 version。 groupId(…...

Xilinx UltraScale系列FPGA纯verilog图像缩放,工程项目解决方案,提供2套工程源码和技术支持

目录 1、前言工程概述免责声明FPGA高端图像处理培训 2、相关方案推荐我这里已有的FPGA图像缩放方案本方案在Xilinx Artix7 系列FPGA上的应用本方案在Xilinx Kintex7 系列FPGA上的应用本方案在Xilinx Zynq7000 系列FPGA上的应用本方案在国产FPGA紫光同创系列上的应用本方案在国产…...

React(二) JSX中的this绑定问题;事件对象参数传递;条件渲染;列表渲染;JSX本质;购物车案例

文章目录 一、jsx事件绑定1. 回顾this的绑定方式2. jsx中的this绑定问题(1) 方式一:bind绑定(2) 方式二:使用 ES6 class fields 语法(3) 方式三:直接传入一个箭头函数(重要) 3.事件参数传递(1) 传递事件对象event(2) 传递其他参数 4. 事件绑定…...

前端开发攻略---取消已经发出但是还未响应的网络请求

目录 注意&#xff1a; 1、Axios实现 2、Fetch实现 3、XHR实现 注意&#xff1a; 当请求被取消时&#xff0c;只会本地停止处理此次请求&#xff0c;服务器仍然可能已经接收到了并处理了该请求。开发时应当及时和后端进行友好沟通。 1、Axios实现 <!DOCTYPE html> &…...

韩信走马分油c++

韩信走马分油c 题目算法代码 题目 把油桶里还剩下的10斤油平分&#xff0c;只有一个能装3斤的油葫芦和一个能装7斤的瓦罐。如何分。 算法 油壶编号0&#xff0c;1&#xff0c;2。不同倒法有&#xff1a;把油从0倒进0&#xff08;本壶到本壶&#xff0c;无效&#xff09;&…...

【Linux】Anaconda下载安装配置Pytorch安装配置(保姆级)

目录 Anaconda下载 Anaconda安装 conda init conda --v Conda 配置 conda 环境创建 conda info --envs conda list Pytorch安装配置 检验安装情况 检验是否可以使用GPU Anaconda下载 可以通过两种途径完成Anaconda安装包的下载 途径一&#xff1a;本地windows下…...

渗透测试导论

渗透测试的定义和目的 渗透测试&#xff08;Penetration Testing&#xff09;是一项安全演习&#xff0c;网络安全专家尝试查找和利用计算机系统中的漏洞。 模拟攻击的目的是识别攻击者可以利用的系统防御中的薄弱环节。 这就像银行雇用别人假装盗匪&#xff0c;让他们试图闯…...

鸿蒙学习笔记--搭建开发环境及Hello World

文章目录 一、概述二、开发工具下载安装2.1 下载开发工具DevEco Studio NEXT2.2 安装DevEco Studio 三、启动软件四、第一个应用Hello World4.1 创建应用4.2 创建模拟器4.3 开启Hyper-v功能4.4 启动虚拟机 剑子仙迹 诗号&#xff1a;何须剑道争锋&#xff1f;千人指&#xff0c…...

【ArcGIS风暴】ArcGIS字段计算器公式汇总

在GIS数据处理中,ArcGIS的字段计算器是一个强大的工具,它可以帮助我们进行各种数值计算、文本处理和逻辑判断。本文将为您整合和分类介绍ArcGIS字段计算器中的常用公式,并通过实例说明它们的应用。 文章目录 一、数值计算类二、文本处理类三、日期和时间类四、逻辑判断类五、…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...