用ESP8266制作复古游戏机

用ESP8266制作复古游戏机

首页模拟经营复古汽车模拟器更新时间:2024-04-30
0x00 背景

上半年的时候,b站和酷安好多人用ESP8266做气象站——源码地址[1]。

当时自己看到比较感兴趣也购买了一套ESP8266开发板 和 0.96寸oled,结果一直比较忙没来及玩。前段时间无意中发现个项目Arduboy,就决定搞一搞。

0x01 Arduboy简介

官网地址[2]

Arduboy基于Arduino平台,其硬件、软件、游戏全都是开源的。官方使用是ATmega32u4单片机做主控,显示屏是128x64的oled屏,内置180mAh电池,可以提供8小时续航。

这个项目已经发展好久,有上百款游戏,官方售价稍微有点贵,需要 $54。这套标配硬件成本约40人民币,闲鱼上售价50~300不等。

0x02 ESP8266的Arduboy

看到上边这个项目,就想闲置的ESP8266可否一战,就在github上找到一个大神的项目[3]

硬件部分

我这套成本大概20元

  1. 材料清单

2. 电路图

基本完全参照项目里的图纸。只不过没使用喇叭,然后部分引脚连接没完全按照图纸来,由于nodeMCU的D4脚控制内置led就没使用D4脚

  1. 焊接

一个理科生没有金工实习,除了前段时间焊键盘这是第二次焊接,焊得太难看了,大家忽略~

软件部分
  1. Arduino依赖库
  1. 修改对应引脚地址

NodeMCU固件中的GPIO引脚如图

修改oled对应地址

//esp8266_arduboy2/src/Arduboy2.cpp#line16 SSD1306Brzooled(0x3c,D2,D1);//OLED_I2C_ADRESS,I2C_SDA,I2C_SCL)

修改按键对应地址

//esp8266_arduboy2/src/Arduboy2Core.h#line199-210 #definePIN_LEFT_BUTTOND6 #definePIN_RIGHT_BUTTOND7 #definePIN_UP_BUTTOND5 #definePIN_DOWN_BUTTOND4 #definePIN_A_BUTTOND3 #definePIN_B_BUTTOND0

  1. 测试

参考文章arduboy游戏编程之Arduboy2库[7],使用测试绘图函数

#include<Arduboy2.h> Arduboy2arduboy; voidsetup(){ arduboy.begin(); arduboy.setFrameRate(15); } voidloop(){ if(!(arduboy.nextFrame())) return; arduboy.clear(); //(positionsstartat0,0) arduboy.setCursor(4,5); //thenweprinttoscreenwhatisintheQuotationmarks"" arduboy.print(F("Hello,world!")); arduboy.drawCircle(50,20,5,WHITE); arduboy.drawCircle(80,20,5,WHITE); arduboy.drawLine(0,40,127,40,WHITE); arduboy.fillRect(65,32,2,6,WHITE); arduboy.drawRect(55,50,20,3,WHITE); arduboy.display(); }

运行效果

这篇文章和ESP8266_Arduboy2库中都有测试按键的程序,可以运行测试按键是否都正常

  1. 运行游戏

图形和按键都测试好后,就可以尝试ESP8266_Arduboy2库里的示例游戏了

推荐

话不多说,上视频

更多
  1. 使用微积木,给我的Arduboy安个家~
  2. 除了ESP8266_Arduboy2库里提供的5、6个游戏,ESPboy里使用Arduboy2库开发的一些游戏也是支持的。项目地址[8]
0x03 结尾

平时没太多时间搞,向大家推荐几个可以探索的方向

  1. 硬件 由于手上只有这些硬件,大家可以考虑加电池 加喇叭 画pcb 直接用ESP芯片微型化
  2. 硬件 同样有基于ESP系列芯片的开源掌机社区——ESPboy[9],彩色屏幕,游戏更多
  3. 软件系统 ESP内存大,可修改存多个游戏,其WIFI功能可考虑联网游戏、联网下载
  4. 软件游戏 可以自己移植Arduboy游戏支持Arduboy2 或者自己开发一些小游戏, Arduboy官方有模拟器,开发或者试玩都比较方便,无需硬件
Reference

[1]源码地址: https://github.com/yuan910715/Esp8266_NTP_Clock_Weather

[2]官网地址: https://arduboy.com/

[3]项目: https://github.com/cheungbx/esp8266_arduboy2

[4]ESP8266_Arduboy2 library: https://github.com/cheungbx/esp8266_arduboy2

[5]esp8266-oled-ssd1306: https://github.com/ThingPulse/esp8266-oled-ssd1306

[6]brzo_i2c: https://github.com/pasko-zh/brzo_i2c

[7]arduboy游戏编程之Arduboy2库: https://blog.csdn.net/weixin_37127273/article/details/108417127

[8]项目地址: https://github.com/ESPboy-edu/ESPboy_Arduboy2_lib

[9]ESPboy: https://www.espboy.com/

the Answer to Life, the Universe and Everything is 42

欢迎关注公众号「42号实验室」

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved