找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3792

积分

0

好友

500

主题
发表于 15 小时前 | 查看: 4| 回复: 0

这是一台极简的掌机:一块 Heltec ESP32 LoRa(自带 0.96“ OLED)、一颗按键、几颗 LED 和一个有源蜂鸣器,就能跑 3 款小游戏;菜单、选择、游玩全靠 一颗按键 完成,做工从面包板到 3D 外壳一应俱全,源码开放,适合动手热身。

ESP32 LoRa迷你掌机面包板原型与成品对比

项目亮点

  • 单按键交互:短按切换菜单项,长按启动或退出游戏(>1s 进入所选游戏,>2s 返回菜单),LED 与蜂鸣器提供“开始/赢/输”反馈。
  • 硬件极简:主控采用 Heltec ESP32 LoRa 显示模块,通过 USB 取电;板载 3.3V 稳压给按键和灯供电。使用 BC557 PNP 晶体管 驱动蜂鸣器和 LED,避免 IO 直接带载。LED 并联实现同步闪烁。
  • 三款小游戏内置
    • Hamba Match(定格对齐)
    • Hamba Run(类似 Chrome 小恐龙,跳跃躲障)
    • Number Hold(数字定点匹配)
  • OLED 特性:Heltec 板载 OLED 屏需要在初始化时将 GPIO16 拉高 才能点亮。
  • 按键中断 + 硬件去抖:按键采用中断读取,并使用 100nF 电容去抖,上拉电阻 1kΩ。
  • 外壳友好:配套 3D 模型文件(前盖与后壳),内部还预留小电池空间,便于独立供电。

材料清单

  • Heltec ESP32 LoRa 显示模块 ×1
  • 有源直流蜂鸣器 ×1
  • 轻触按键 ×1
  • BC557 PNP 晶体管 ×2
  • 1kΩ 电阻 ×5
  • 红色 LED ×3、蓝色 LED ×3
  • 100nF 电容 ×1

所有元件都是常见基础器件,可直接面包板搭建。

Heltec ESP32 LoRa显示模块

电路与装配

  • 供电部分:通过 USB 提供 5V 输入,模块板载稳压输出 3.3V。
  • 驱动部分:用 PNP 晶体管控制蜂鸣器和 LED 组,避免 IO 电流过大。LED 并联,同步闪烁。
  • 按键部分:按键上拉 1kΩ,空闲电平为高,旁并 100nF 电容防抖。
  • 装配结构:模块置于面包板中央,两侧布置外设,最后配合 3D 打印外壳固定。

Mini Gaming Console电路原理图

ESP32 LoRa模块引脚布局与连接定义图

掌机3D设计结构图

软件与交互逻辑

  • 代码结构:主程序集中在 main.cpp,菜单显示函数 drawMenu(),执行函数 menuAction()
  • OLED 启动:Heltec 板载 OLED 需在初始化时手动拉高 GPIO16 才能工作。
  • 按键中断:按键中断触发响应,需加上 IRAM_ATTR 修饰符以防止复位。
  • 交互规则
    • 短按:菜单中移动光标
    • 长按 >1s:进入当前游戏
    • 游戏内长按 >2s:退出并回到菜单

GitHub链接: https://github.com/AlAminAshik/Mini-game-consol-using-lora-display-esp32.git

开发与编译

  • Arduino IDE:可直接将 main.cpp 内容复制到 IDE,安装依赖库后上传。依赖为 Adafruit SSD1306(作者示例版本 ^2.5.13)。
  • PlatformIO(作者实测配置):
[env:heltec_wifi_loRa_32_v2]    #using heltec_wifi_kit_v2 board will not work
platform = espressif32
board = heltec_wifi_loRa_32_v2
framework = arduino
monitor_speed = 115200
upload_speed = 115200
lib_deps =
    adafruit/Adafruit SSD1306@^2.5.13

三款小游戏简介

  1. Hamba Match:屏幕上有移动图像与固定轮廓,玩家需在对齐时按下按键,关卡越高速度越快。
  2. Number Hold:屏幕上循环显示数字,目标数字出现时按下即可得分。
  3. Hamba Run:一款迷你“恐龙跳跃”游戏。随机生成障碍,按键控制角色起跳,碰撞即结束并显示分数。

Hamba Game 菜单与Number Hold游戏画面

Hamba Match游戏中的牛形图标

图像素材的生成

为了在 SSD1306 上显示小图标/像素牛等,作者用 Image2CPPIllustrator 导出的 PNG 转为 C 数组;网页上可以调整阈值、尺寸与输出格式。作者也提示:低分辨率图案效果一般。

使用Image2CPP在线工具将PNG图像转换为Arduino代码

小结

这是一台“用最少外设做最完整交互体验”的极简掌机。单按键控制结合灯光与蜂鸣器反馈,让交互自然又富有节奏感。Heltec 模块自带 LoRa 与 OLED,但在此项目中只使用了显示部分。

未来可以尝试扩展 LoRa 功能,实现两台掌机间的无线对战或积分同步。如果加入 18650 电池供电方案,便携性和可玩性都会更上一层。

对于电子工程师或嵌入式爱好者来说,这是一个极具练手价值的小开源实战项目:从硬件到代码都简洁明了,却能完整体现交互设计、输入响应、显示控制等核心要素。简单、有趣、可拓展——正是那种能带来成就感的“指尖工程”。

如果你也喜欢捣鼓这类软硬结合的创意项目,欢迎来云栈社区开发者广场分享你的想法或作品,一起聊聊硬件、代码和那些有趣的灵感。




上一篇:C# 微服务如何借助 Outbox 模式与 .NET 8 保证最终数据一致性
下一篇:IntelliJ IDEA 2024 AI编程插件选型指南:GitHub Copilot、通义灵码等7款评测
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-2 23:01 , Processed in 0.517842 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表