ArduBaby - 半尺寸Arduboy在串行闪存上有500个游戏:10个步骤

ArduBaby - 半尺寸Arduboy在串行闪存上有500个游戏:10个步骤

目录:

Anonim

你可以查看这个youtube视频,看看我是如何使用串行闪存创建这个小型自制Arduboy的端到端流程,可以存储多达500个游戏。

对于创作者(Kevin Bates)的信誉,Arduboy是一款非常成功的8位游戏机。爱好者在Arduboy社区论坛上自由分享了数以千计的游戏,让更多人学习如何编码。

硬件设计也是开源的,允许像我这样的制造商设计自己的硬件版本,并开发软件实用程序来增强其功能。设计Flash-Cart电路的MR.Blinky,用于Arduino IDE的自制软件包以及用于管理Flash购物车的python实用程序,可以在16Mbyte串行闪存上存储500个游戏,无需计算机即可在路上播放。

通过研究Arduboy社区论坛上的讨论主题,我了解了创建几个自制的Arduboys所需的内容。对于新手来说,这可能并不容易。因此,我希望在单个端到端视频和本书面说明中分享我所学到的知识。希望这将有助于寻找答案的人建立自己的工具包,但不知道如何询问或没有得到正确的渠道来提出这些问题。

我的Arduboy版本只有信用卡大小的1/4(3.5cm x 5.0cm0),但有点厚(2cm包括底盖),但是你需要所有的铃声和​​口哨:0.9“OLED ,耳机插孔,音量控制,RGB LED。

最重要的是,扩展端口允许您通过交换上部电路板(按钮帽)将游戏控制台按钮与不同的按钮交换。

然后,您可以使用静音按钮,操纵杆之类的按钮,甚至是模拟控制器,如电位计。

您还可以添加湿度和温度传感器来构建一个小型气象站,或添加超声波传感器来构建测距仪。

它还有额外的16M字节串行闪存,用于存储多达500个Arduboy游戏或实用程序。通过使用由MR.Blinky设计的引导程序(Cathy3K),您可以在几天内打电话给ATmega32U4芯片(Arduboy的微控制器)上的500个游戏中的任何一个并自动闪存,无需开始播放连接到您的计算机或手机。

供应:

第1步:获取所有零件

大多数零件可以通过amazon.com,aliexpress.com或taobao.com在线购买。其中一些可以从未使用的Arduino板上收获。

从淘宝网购买所有这些并运往香港,花费不到12美元(不含运费)。

Arduino Pro Micro

OLED 64x128 SSD1306 SPI 0.96“

W25Q128 16Mbyte内存芯片

3.7V 280 Mah Lipo电池

USB LiPO电池充电器模块(4.2V)

3.5mm耳机接口

10K mini VR(B103)用于音量控制

用于电位计或旋转控制器的10K mini VR(B103)(可选)

迷你压电扬声器

3k电阻

三个1K电阻

三合一RGB LED

七个5x5mm静音按钮

9x4mm滑动开关,用于电源开关

两个5x8cm双面穿孔板

一个5x8cm单面穿孔板

1x13针母头

1x13针公头(每个按钮帽)

1x7针母头

1x7针公头

3.5x5cm亚克力板用于后盖

运费将包含在您的预算中

第2步:制作主板

1.为主板创建框架。

一个。取8厘米x 5厘米的穿孔板。使用剪刀(或锯)将其切割成3.5cm x 5cm的小型穿孔板。那应该还有18行和13列针孔。从亚克力板上切下3.5厘米x 5厘米的片作为后盖。

湾将一个13针母头焊接到底部的最后一排,用于按钮帽和扩展。

C。将7针母头连接到7针OLED顶部的第一排。

d。焊接重置按钮的静音按钮。

即焊接电源开关的滑动开关。

F。焊接3.5mm立体声耳机插孔,用于头戴式耳机。

G。坚持使用3针10K微型可变电阻器。

2.制作4.2V LIPO电池充电器和3.3V稳压电路。

一个。拆除Pro-Micro板上的5针5V稳压器,以便我们可以从外部3.3V稳压器供电。

湾修剪LIPO电池充电器模块,使其可以安装在3.4mm电池插孔旁边的主板上。您需要在USB连接器与电路其余部分相交的位置进行切割。如果这仍然太大,您可能需要进一步调整。在我的情况下,我需要重新定位并重新焊接其中一个电阻器以允许我进一步修整。

C。修剪3.3V稳压器顶部的标签(AMS1117-3.3)以减小空间,并避免短路。然后将tpin 1焊接到负输出,将引脚3焊接到LIPO电池充电器模块的正输出。在引脚1和引脚2之间焊接0.1uF电容,以消除噪声并降低噪声。如果可能,请使用小型SMD型电容器以减小空间。

d。将Pro micro板的RAW引脚上的0.3mm叠层(绝缘)导线连接到电池充电器模块的正5V输入。将Pro micro板的GND引脚连接到电池充电器模块的负极输入。连接3.3V稳压器中间引脚(引脚2)的导线。将LIPO电池的负极和正极端子分别连接到电池充电器的负极和正极输出。

d。将USB电缆从计算机连接到Pro-Micro Board。 RAW引脚应该从USB电缆向LIPO电池充电器模块提供5V电压,LIPO电池充电器模块将被调节为LIPO电池充电。充电LED应亮起。 3.3V稳压器应将4.2V输出转换为3.3V,以便为Pro-Micro板供电。 Pro-Micro板上的LED应亮起。

即启动Arduino IDE,然后单击工具 - >端口以检查端口名称,以检查计算机是否识别Pro Micro的USB端口。在我的MAC OSX上,它显示“/dev/cu.usbmodem14201(Arduino Leonardo)”。单击工具板,然后选择“Arduino Leonardo”。然后加载示例草图“Blink”。然后测试上传以检查是否可以上传到Pro Micro。如果有任何问题,请重新检查接线和焊接。

3.制作串行闪存子板。

一个。切出一个较小的单面穿孔板,带有7个针孔x 4个针孔,用作子板,用于容纳闪存芯片和D11,D12,D14的额外分支引脚。

湾将电路板最后一排的焊盘分成两半。这将用于安装串行闪存模块,该模块是在引脚之间具有窄距离的表面安装器件,使得中间的两个引脚将站立在焊盘的两半上并且不会短路。

C。将Winbond W25Q128内存芯片焊接到穿孔板上。确保没有两个针接触。

4.为引脚D11,D12,D13焊接ATMega32U4芯片的额外突破。

一个。使用精细的焊接尖端和放大镜,将三根0.5mm的层压(绝缘)导线焊接到ATMega32U4芯片的引脚上,以断开引脚D11,D12,D13。请参考ATMega32U4的引脚布局。这是该项目中最困难的部分。每次我需要焊接时,我花了半个小时。您需要非常小心,不要意外地使微控制器的其他引脚短路,同时仍然会形成坚固的接头。

观看youtube视频,了解如何进行这种微小的焊接工作,以及如何使用拆焊螺纹挽救焊料意外溢出。除非你足够熟练,否则我不会推荐热风枪/鼓风机。如果距离和功率控制不好,很容易破坏ATMega32U4芯片的焊料或熔化其他元件,并损坏整个电路板,使其无法恢复。

湾将三根导线的另一端焊接到串行闪存子板最后一排的中间3个焊盘上。

5.将串行闪存子板安装到Pro Micro芯片上。

一个。在Pro Micro板顶部的第一排引脚处焊接0.5mm线,即TX和RAW。

湾将0.5mm导线(例如来自晶体管支脚的导线)焊接到Pro Micro芯片背面的最后四排引脚。即D6,D7,D8,D9和SCLK,MISO,MOSI和A10。电线应从顶部向下突出到底部,这样我们就可以用它来焊接子板并将其连接到底部的主板上。

C。通过将Pro Micro的最后一排引脚连接到子板的引脚,将串行闪存子板焊接到Pro micro。

6.将LIPO电池充电器板安装到主板上。

一个。将0.5mm导线(例如来自晶体管支脚的导线)焊接到LIPO电池充电器板的4个角(用于-ve输入,+ ve输入,-ve输出,+ ve输出)。在3V稳压器的中间引脚所在的位置钻一个孔。将0.3mm的层压线焊接到中间引脚(3.3V输出)..

湾将电池充电器板的4个焊脚焊接到主板上,紧靠3.5mm耳机插孔旁边。为减小空间,应按下充电器板以与主板相遇。

7.将Pro微型板安装在主板底部,并将最后4排和Pro Micro第一排的所有引脚焊接到主板上。无需焊接其他引脚,稍后将根据需要通过层压线连接它们。这是为了更容易修改,如果需要更换Pro Micro,如果它被烧毁。

8.完成剩余的焊接。

将Pro Micro板的引脚连接到各种组件和接头。所有焊接连接都将在双面穿孔板的底部进行。完成所有焊接后,测试连接。

9.用相同尺寸的亚克力板盖住主板底部。

第3步:制作Button Hat

一个。取8厘米x 5厘米的穿孔板。使用剪刀(或锯)将其切割成3.5cm x 5cm的小型穿孔板。那应该还有18行和13列针孔。切出一个2.8 x 2.2厘米窗口的窗户,窗口足够大,让OLED的玻璃从后面伸出。我用钻石切割轮来做这件事。该工具非常锋利和坚固,如果您不小心,可能会松开手指。您可以将切割从顶部放置在第二排针孔中,并从底部放置第9排针孔。并且在每侧的第二列销孔处。

湾在穿孔板的最后一排焊接一个13针公头。

C。穿孔板上的布局按钮用于D-PAD(方向按钮,上,下,左,右)和A按钮,以及B按钮。然后将它们焊接在穿孔板的正面上。

d。在穿孔板的底部,将所有按钮的一侧连接到公头的接地销(销2)。

即将每个按钮的第二个引脚连接到该按钮的公头的相应引脚。

F。如果要为电位计旋转或拨号控制器构建按钮帽,则将安装3针10K可变电阻器而不是D-PAD方向按钮。检查可变电阻器的部件号是否以“B”开头(例如“B103”代表最大10K),而不是“A”。 “A”表示转弯的角度与电阻的LOG成比例。 B表示转弯角度与电阻成正比。我们需要B型VR用于旋转游戏控制器将电位器(GND引脚)的一侧连接到GND(按钮帽头的引脚2)。将电位器的另一侧连接到VCC(按钮帽头的引脚3)。将电位器的中间引脚连接到Pro Micro板(A0,A1,A2,A3中的一个)的所选模拟到数字引脚,具体取决于游戏编码的引脚。如果控制不平滑(跳转),您可以在GND引脚和电位器的中间引脚之间连接一个100pf电容,以消除电路上的噪声。

第4步:制作USBasp电缆

与将二进制代码/游戏加载到任何Arduino板不同,无法通过USB端口对引导加载程序进行编程。

要将自定义引导加载程序(Cathy3K)刻录到Atmega32U4芯片,您需要获得USBasp编程器。但是,我们的创建工作在3.3V,我们需要进一步修改USBasp编程器以在3.3V下工作。

请参考以下可指导项目,修改您的USBasp编程器,以通过跳线设置在3.3V或5V下工作。

www.instructables.com/id/Modify-a-5V-USBasp-Arduino-Bootloader-Programmer-t/

然后按照引脚布局和视频制作USBasp到ArduBaby程序电缆。

USBasp附带的原装USBasp电缆有两个连接器,每个10个引脚。

我们将这根电缆切成两半,并将一个6针公头连接到一端,同时保持另一端与USB引脚连接在10pin。

另一端将GND,VCC,MOSI,MISO,SCK,复位引脚从USBasp连接到ATmega32U4的相应引脚,通过连接到Ardubaby母头的前六个引脚的公​​头。

要执行该程序或将引导程序刻录到ATmega32U4,您将移除按钮帽并插入此6针USBasp电缆。

确保在电缆接头上清楚地标记哪个引脚是一个引脚,这样就不会连接错误。当我设计Ardubaby按钮帽标头的引脚布局时,我试图安排引脚,即使你用引脚13交换引脚1,-ve电源也不会意外地与+ ve电源相遇以避免损坏。

但是,您永远不会知道,如果您以错误的方向连接,可能会发生其他可能仍会损坏您的工具包的事情。

我将使用烙铁头尖刻一个小孔在头上标记。

第5步:设置Arduino IDE

如果您是Arduino的新手,请浏览http://www.arduino.cc

下载适用于您正在使用的操作系统的Arduino IDE,例如Windows 10或Mac OSX或Linux。

然后按照那里的说明进行安装。

第6步:刻录Bootloader

MR.Blinky为自制的Arduboy制作了Arduboy自制包装。

他的套餐包括董事会司机和Arduboy图书馆,与原版Arduboy的不同版本以及他自制的版本一起使用。

1.浏览MR.Blinky的自制Arduboy的GitHub文件夹。 HTTP://github.com/MrBlinky/Arduboy-homemade-pack …

2.按照GitHub上的说明使用自制软件包配置Arduino IDE。

3.首先复制Arduboy自制包装的“附加板管理器”的URL。 HTTP://raw.githubusercontent.com/MrBlinky/Ardubo …

4.启动Arduino IDE。单击Arduino顶级菜单中的“首选项”。将此文本粘贴到“其他板管理器URL”中注意:如果此字段上已有其他文本,请在开头插入此附加文本,然后添加“,”并保持其他文本不变。

5.退出Arduino IDE并再次启动IDE以实现上述更改。

6.单击工具 - >板: - >板管理器。输入自制搜索。选择安装Mr.Blinky的Arduboy自制套餐。该软件包将添加到Arduino。然后单击“更新”以将其更新到最新版本。

7.现在选择工具 - >板:“自制Arduboy。并选择以下参数为自制Arduboy“基于:”SparkFun Pro Micro 5V - 标准接线“核心:”Arduboy优化核心“Bootloader:”Cathy3K“程序员:USBasp

8.关闭Ardubaby并取下按钮帽。

9.将USBasp上的跳线设置为3.3V。确保使用完全在3.3V下工作的改进USBasp。

10.将USBasp连接到计算机的USB端口。将特殊的USBasp连接到ArduBaby电缆连接到USBasp,另一端连接到Ardubaby的按钮帽标题,将引脚1连接到引脚1.只有Ardubaby的前6个引脚用于引导加载程序刻录。

11.您的Ardubaby现在应该通过USBasp提供的3.3V电源上电。

12.按一下ArduBaby的重置按钮。

13.使Arduino IDE上的Tools-> Boards-> Burn Bootloader按钮变为Clink。

14.检查消息以查看引导加载程序刻录是否成功。

15.如果没有,请检查电缆并确保以正确的方向连接引脚,并将引脚1与引脚1对齐。有时,如果引导菜单超时,Ardubaby将开始播放上一个游戏。因此,您需要在按下重置按钮后立即快速单击Burn bootloader按钮,使Ardubaby处于等待闪光模式。

16.如果一切顺利,ArduBaby将重新启动,您将看到启动菜单,或者您已加载到ArduBaby的上一个游戏。

第7步:编译和上传单个游戏

Arduboy游戏可以从以下来源下载:

Arduboy社区游戏论坛:http://community.arduboy.com/c/games

GitHub搜索“Arduboy游戏”

github.com/topics/arduboy-game或只是在谷歌上搜索“GitHub arduboy games”。

其他人共享的游戏集合。例如Erwin的Arduboy系列

arduboy.ried.cl/

您可以将您加载的游戏的源代码下载到Arduino并上传到Arduboy。请参阅视频,了解如何完成此操作。

或者只是hex文件(已编译的二进制文件,但以十六进制数字显示打印到文本文件而不是二进制文件)。

您可以按照MR.Blink的uploader.py python实用程序中的步骤将hex文件上传到Arduboy。 HTTP://github.com/MrBlinky/Arduboy-Python-Utilit …

命令:python uploader.py yourgame.hex

第8步:上传游戏的单个十六进制文件

Hex文件是一个包含二进制代码的文本文件,由编译Arduino程序(草图)组成,但使用两位十六进制数字0-9,A-F以文本文件格式表示。

您可以通过不同方式获取这些hex文件。

1.我们可以从上面解释的不同来源下载hex文件:

community.arduboy.com/c/games欧文的Arduboy游戏收藏http://arduboy.ried.cl

在GitHub.com或google.com上搜索“Arduboy游戏”

将这些十六进制文件保存到扩展名为.hex的文件中。

2.或者,您可以创建自己的hex文件。

在Arduino IDE中,选择Sketch> Export Compiled Binary。您的草图将被编译,然后编译的.hex文件的副本将输出到草图的目录。浏览到草图文件夹或在IDE中选择“草图”>“显示草图文件夹”以查看hex文件。如果您安装了MR.Blinky的自制软件包,则会创建两个版本的.hex文件。例如,如果编译picovaders.ino sketh,将创建以下两个.hex文件。

picovaders.ino-arduboy-promicro-ssd1306.hex picovaders.ino with_bootloader-arduboy-promicro-ssd1306.hex

我们将使用第一个文件:picovaders.ino-arduboy-promicro-ssd1306.hex

3.要将hex文件上传到Arduboy,您需要使用上传器。互联网上有很多。我喜欢使用MR.Blinky的上传器,因为它易于使用。

浏览到http://github.com/MrBlinky/Arduboy-Python-Utilities并按照那里的说明安装MR.Blinky的Arduboy Python实用程序。如果你没有安装python,你需要按照说明安装python和所需的python模块。

4.将Arduboy连接到计算机的USB端口。打开Arduboy。

5.在您的操作系统中启动shell程序,例如Mac OSX中的终端应用程序或Windows中的命令提示符,键入以下命令将hex文件上载到Arduboy。以我们之前的草图picovaders.ino为例。

python uploader.py picovaders.ino-arduboy-promicro-ssd1306.hex

6.上传游戏后,Arduboy将重置并开始游戏。

第9步:将游戏写入串行闪存

1.要将整合的游戏文件写入串行闪存,您需要再次使用MR.Blinky的Arduboy Python Utilities。如果您按照上一步操作,则应已安装此功能。

否则,浏览到

HTTP://github.com/MrBlinky/Arduboy-Python-Utiliti …

并按照那里的说明安装MR.Blinky的Arduboy Python实用程序。如果你没有安装python,你需要按照说明安装python和所需的python模块。

2.为合并的游戏图像文件创建索引文件,以容纳多达500个游戏。

我们将使用使用flashcart-builder.py脚本为要存储到Arduboy的串行闪存中的所有游戏构建合并的游戏图像文件。一个16MB的串行闪存可以容纳多达500个游戏。此脚本从索引文件(.csv)构建二进制Flash图像,并为每个游戏构建以下2个文件:a。.hex文件,它是包含已编译的Arduboy游戏的二进制图像的十六进制代码的文本文件。有关示例语法,请参阅example-flashcart flashcart-index.csv文件。如果单击“克隆”或“下载”,则此文件包含在包中。湾.png图形图像文件将显示在Arduboy的引导程序菜单上,以便您知道要选择哪个游戏。一些游戏存储库将此图形文件与其游戏源文件或hex文件一起使用。如果找不到,可以通过在Arduboy仿真器上运行游戏来创建自己的游戏

felipemanga.github.io/ProjectABE/

并捕捉屏幕。或者只需在电源品牌上键入游戏名称,然后屏幕截图即可。然后使用Windows中的画笔捕获/创建的图形为128x64像素,或在Mac OSX中预览。

youtube视频还解释了如何将东西放在这个.csv索引文件的正确位置。有一点需要注意,MR.Blinky的GitHub中的示例.csv文件用于Windows PC,反斜杠“”用于路径名。如果您使用的是liunx系统或MAC OSX,则需要将其更改为“/”。

要快速入门,您可以从http://github.com/cheungbx/ArduBaby 63games.zip下载我的63个游戏包。

这个软件包包含我选择的63个游戏的hex文件和png文件,以及games.csv索引文件和使用flashcard-builder.py脚本构建的games-image.bin文件。

您可以在games.csv中添加更多游戏,并构建您自己的合并游戏二进制图像文件,以便写入串行闪存。您可以在16M串行闪存上放置最多500个游戏。

我将解释如何使用您可以从我的GitHub下载的games.csv制作.csv文件。

即使可以使用excel打开.csv文件。请勿使用excel打开文件。它会破坏文件。请仅使用纯文本编辑器。您可以在Windows中使用记事本。我在MAC中使用了textEdit,然后单击“格式” - >“制作纯文本”。

.csv文件的第一行是您可以忽略的标题。列表;描述;标题屏幕;十六进制文件

第二行指向引导加载程序manu屏幕的图形图像文件(必须是png文件格式的128x64像素)。

0;引导程序; arduboy_loader.png;;;

游戏从第三行开始配置。游戏在引导加载程序菜单中被组织成组,称为类别。该行是该组游戏列表的组标题,例如动作游戏。它还指向该组游戏的图形图像文件。开头的“1”表示组编号1.跟随该组的所有游戏都将以此编号开头。

1;动作游戏; category-screens Action.png;;;

然后为该组中的每个游戏添加一行。从组号1,游戏名称,屏幕快照的图形文件路径以及hex文件的路径开始。全部用“;”分隔。再添一个“;”跳过保存文件的参数。

1; 1943;街机/ Nineteen43.png;街机/ Nineteen43.hex;;

1; 2048;街机/ 2048.png;街机/ 2048.hex;;

完成第一组游戏后,您可以添加第二组游戏,依此类推。例如

9;演示和测试; demos / demotest.png;;;

9;热奶油;演示/ HotButter_AB.png;演示/ HotButter_AB.hex;;

9; Flashcart测试; demos / flashcart-test / flashcart-test-title.png; demos / flashcart-test / flashcart-test.hex; demos / flashcart-test / badapple-frames.bin;

最后一行在参数中有一个保存文件,这是一部卡通电影。

3.要构建合并的游戏图像文件,请键入命令,其中games.csv是您的游戏索引文件。

python flashcart-builder.py games.csv

这将创建一个名为games-image.bin的文件

4.将合并的游戏图像文件写入Arduboy。

我们使用MR.Blinky的flashcart-writer.py脚本将合并的游戏图像文件写入Arduboy的串行闪存。

如果您使用我的示例games-image.bin文件,则可以键入此命令。

python flashcart-writer.py games-image.bin

如果您在标准版本中使用SSD1309 OLED屏幕而不是SSD1306 OLED,则可以即时修补屏幕驱动程序。要自动将SSD1309补丁应用于上载的映像,请复制flashcart-writer.py并将其重命名为flashcart-writer-1309.py。然后输入

python flashcart-writer-1309.py games-image.bin

第10步:从串行Flash播放游戏

要从串行闪存中玩游戏,请打开Arduboy。

如果您已加载游戏,游戏将自动启动。按下Ardubaby顶部的重置按钮一次,进入引导程序菜单。

将显示引导加载程序菜单。 RGB LED将依次点亮。

如果您看到一个看起来像USB端口的图标,则表示您的串行闪存芯片无法正常工作。请检查接线。

如果您在12秒内未按任何键,则将运行已存储在ATMega32U4内部闪存中的游戏。

要从游戏返回到引导程序菜单,只需按一下“重置”按钮即可。

您可以按向左或向右按​​钮滚动浏览不同类别(组)的游戏。按向下或向上按钮滚动浏览类别(组)中的游戏。按“B”按钮将游戏从串行闪存复制到ATMega32U4的内部闪存。游戏将在一秒钟内开始。

现在你有一个小型的游戏机,你可以在路上玩。

我挑战你收集和加载你的16M串行闪存500场比赛。我还没有看到任何人这样做,但还没有填写连续闪存。如果你能做到这一点,请与我们分享整合的游戏文件。