記事内に広告が含まれています

Arduino Pro Microを使ったArduboy FXの自作手順をトレースして理解を深める

電子工作

はじめに

電子工作で楽しめるゲーム機作りとして先般ご紹介したESPBoyに引き続き今回はArduboyFXなるゲーム機も作成してみました。このArduboyですが、このところのトランプ関税とやらで、開発者者も商用製造についてはぐうの音をあげていたことは記憶に新しいです。

すでにネット上には自作について沢山の記事があり数周回遅れではありますが、Arduboy FX互換機の製作について、そのお手軽さと楽しさを皆さんと共有するとともに備忘録のため、その手順を本記事に記録したいと思います。

ArduboyFXとは

Arduboy FXは、従来のArduboyに外部フラッシュメモリ(Flashcart)を追加し、数百本のゲームを保存・切り替え可能にした拡張版モデルです。

まず、Arduboyとは何かと言いますと、皆さんよくご存じ(?)のArduino(ワンボードマイコン)をベースにしたゲームボーイのような名刺サイズのモノクロ携帯ゲーム機です。

製品版としては、Arduboy、Arduboy FXが販売されていて、直近ではArduboy miniをPre-oderしていたようなのですが、現在は上記関税のため製品化を中止したように見受けられます。
また、過去はArduboyやArduboy FXも電子部品業者やAmazonで取り扱っていたので、ゲーム好きの私としては、2023年にマルツさんよりArduboyFXを1台購入させて頂いています。しかし、残念ながら今はもうコレクションアイテム的な価格での発売となってしまっているようです。

ただし、どうしても製品としてのArduinoFXを所有したい方で海外通販に抵抗がないのであれば、Seeed Studio社さんでは適正価格でBack Order6(2025.9.27現在)となっていますので、もしかするとこちらから購入が可能かもしれません。

それでは、公開されているハードウェア仕様や回路図開発ツールやライブラリを使用して、自由にゲームを作ったり、改造したりして楽しむことにしましょう。

回路について

今回、Arduino Pro Microをベースマイコンとして使用し、まずノーマルArduboyとして作製した後に追加でフラッシュメモリを接続することになります。製品版Arduboyの回路図はArduboy communityで紹介されている通りとなります。

Production Arduboy Schematic – Development – Arduboy

この回路を念頭においてArduino FXを自作する場合は、コミュニティで紹介されてる通りArduino Leonard 、Arduino Micro、Arduino Pro Microを使用するのがお手軽で簡単です。今回は、Arduino Pro Microを使用して下図の端子配列のArduboy FXを作りました。

Pro Micro Alternate Wiring

ArduboyFX化するためには、この端子接続をベースにフラッシュメモリを追加することになります。



ハードウェア製作手順

製作手順はこちらのサイトに詳しく紹介されていますが、ここでは気になるポイントをi取り上げながら記載しておきます。

必要な部品

部品名推奨型番・仕様備考
Arduino Pro micro5V/16MHz互換機も可
SPIフラッシュメモリW25Q128(16MB)などFX対応ゲーム保存用
ロジックレベル変換3.3V ↔ 5VArduboyは5V、Flashは3.3V
OLEDディスプレイ(SPI)SSD1306 / SSH1106画面サイズも各種あり
書き込みツールArduino IDE / Mr.Blinky’s Flashcart Toolsファームウェアの書き込み / ゲームの書き込みに使用

SPIフラッシュメモリの接続

Arduino Pro Microのピン(MISO, MOSI, SCK, CS)にW25Q128JV(winbond)を接続します。注意点として、このフラッシュメモリの動作電圧は2.7V~3.6V、最大定格電圧は4.6Vです。5V動作のArduino Pro Microを使用する場合、フラッシュメモリとのインターフェース電圧を合わせる必要がありますので、正しい回路設計とするには、ロジックレベル変換を行う必要があります。

Arduino Pro MicroFlash Memory (W25Q128JV)
Pin 14 (MISO)Pin2 (DO)
Pin 15 (SCK)Pin6 (CLK)
Pin 16 (MOSI)Pin5 (DI)
Pin RXI (D2)Pin1 (/CS) ※10kΩでPULL UP
Arduino Pro microとフラッシュメモリ間の接続端子

なお、Pro Micro の5V出力電圧を測定してみて下さい。個人的に趣味で楽しむ電子工作としてであれば、自己判断でロジックレベル変換IC無しで試してみたい方は下の回路図をご参照下さい。タクトスイッチに直列接続している抵抗は無しでも大丈夫ですね。(私はこの回路で試しました)

homemade arduboy FX circuit : reference only

今回の回路図作成にはFritzingを使用してみたので、ブレッドボードでの配置を試してみました。
このくらいの回路規模でもなかなか難しいですね。私のセンスの無さ加減をご覧ください。

皆さんはコミュニティで公開されているかっこ良いブレッドボード図面を参照してください。
信号線で色分けして、ジャンパワイヤーの空中配線はブレッドボードの外で描くことが見やすくするコツですね!


ソフトウェア準備

1. Arduboy FXブートローダーの書き込み

  • ブートローダーのダウンロード
  • Arduino Unoをブートローダー書き込み装置化
  • ブートローダーを自作ArduboyFXへ書き込む

の手順です。

ブートローダーのダウンロード

  • 上述した回路図(Alternate Wiring)に適したブートローダーはMr.BlinkyのGitHubリポジトリにありますので取得します。
  • ここで、ボードマネージャから”Arduboy homemade package”をダウンロードしておきます。(図はダウンロード済の状態です)

Arduino Unoをブートローダー書き込み装置化

  • Arduino Pro microにブートローダーを書き込むために、Arduino Unoを書き込み装置化します。
  • PCとArduino UnoをUSBケーブルで接続し、Arduino IDEでボードはArduino Unoを選択します。
  • Arduino Unoを書き込み装置化するためのプログラムは、スケッチ例の”ArduinoISP”ですので、これを読み込みコンパイルしてArduino Unoに書き込みます。これでArduino Unoを書き込み装置化できました。

ブートローダーをArduino Pro Microへ書き込む

  • Arduino UnoとArduino Pro Micro (自作したArduboy FX) を結線します。Arduino Unoの端子とArduino Pro Microの端子を接続する必要があるため、ここではジャンパワイヤーが必要です。なお、Arduino Pro MicroにはAruduino Unoから電源を供給するので、Pro MicroにUSBケーブルから電源を加える必要はありません
  • 下の回路図ではOLEDやボタンなどの部品を省略していますが、Arduino UnoとArduino Pro MicroをSPI信号の4線と電源、GNDを結線します。
  • Arduino IDE側の設定は、ボードを”Arduboy versions”から”homemade Arduboy”を選択します。
  • 次に、各種設定は自作Arduboy FXの仕様に合わせて設定します。今回作成した”Alternate Wiring”の配線を行いOLEDモジュールはSSD1306を使用した場合であれば下の画像の様に設定します。
  • 書き込み装置として”ArduinoISP”を選択した後、”ブートローダを書き込む”をクリックします。
  • 書き込みが成功すれば、自作Arduboy FX(bare)の完成です!もし、書き込みに失敗した場合は、”Core:”の項目を一度違うものを選択した後に、再度選択し直すと上手く書き込めることがありました。

2. Flash メモリに書き込むゲームの準備

自作Arduboy FX(bare)に書き込むゲームを準備します。自作したArduboy FXの仕様(EEPROM配線やOLEDの種類)に適合したゲームファイル(.hexや.bin)が無い場合は、Arduboy ReCompierを使用することで、フラッシュメモリの接続端子や使用するOLEDの仕様に合わせて変換されたゲームファイル(.hex)を作成することができます。

  • Variant,Displya,Flash Chipの3か所を自作Arduboy FXの仕様に合わせます。以下では、SH1106モジュールを使用する設定となります。
  • Fetch Sketchesをクリックします。ー>上部のウィンドウにゲーム名が表示されます。ここに表示されるゲームはEried’s Repositoryから読み込まれているようです。
  • 例えば”1943″を選択して”Compile Selected Sketch”をクリックすると変換が開始され、変換が成功すれば、数分でゲームファイルが作成されますので、保存先フォルダーを指定した上で保存します。すべてのゲームには対応していないようですので過度な期待は禁物です。

ここでハマりそうな重要ポイントは次の2点ですのでご参考にして下さい。

  • Arduino libraryでオリジナルのArduboy libraryは削除しておく。オリジナルArduboyのライブラリーがあると優先して使用されてしまうため、選択したOLED Displayに適した変換ができないようです。
  • Arduino CLIをインストールしている必要があります。ゲームファイルの変換はArduino CLIを使用してコマンドプロンプトで実行されるのですが、インストールされていないと実行が開始されませんのでこのページからご自身の環境に合わせたバージョンをインストールしておきましょう。

なお参考にですが、Arduino FX用のゲームファイルはArduboy FX Cart Builderに沢山アップロードされていて、”.hex”ファイルとしてダウンロードすることもできますので探してみても楽しいかもしれません。

3. Flashメモリへの書き込み

Mr.BlinkyのGUI版 “Arduboy Toolset” を使用すれば簡単に書き込みができます。こちらのGitHubからダウンロードを行えます。

  • 例えばウィンドウズを使用しているのであれば、”arduboy_toolset_0.7.2_windows .exe”を実行すれば起動します。
  • PCと自作Arduboy FXをUSBケーブで接続します。正しく自作Arduboy FXが出来上がっていれば、OLEDディスプレイの表示は「USB BOOT」となっています。
  • arduboy_toolset“は、ボードが正常に認識されると下図のように「Connected:Arduboy」の表示に変化する。
  • “open file” からゲームファイルを選んで開くをクリックする。
  • 最後に、”Upload”をクリックする。
  • ダウンロードが開始されます。
  • ほんの数秒で自作Arduboy FXにゲームが書き込まれます。

動作確認をしてみる

  1. 書き込みが完了すれば、すぐにダウンロードしたゲームの画面がOLEDディスプレイに表示されます。
  2. A,Bボタンでゲームスタート、上下左右ボタンが正しく機能しているか試してみましょう。ボタンの動作が正しくない場合は、ハードウェア的な接続に間違いが無いかもう一度確認しましょう。
  3. OLEDディスプレイに表示される画像がドットずれになっているなど、挙動がおかしい場合は、「ソフトウェア準備」で実施したディスプレイ設定に誤りがないかどうか再確認しましょう。
実際にブレッドボードで組んでみるとこのような感じです

おわりに

USB給電での動作ができた後は、バッテリー動作できるように改造をしたり、プリント基板を作成して楽しみたいですね。

個人が開発したArduboy FXというクリエイティブな作品はコミュニティで活発に情報交換されていますので、私は少しつまずくところもありましたが、情報はどこかに記載されていて、比較的簡単に自作を楽しめる環境を構築することができます。今回の記事では、製作の流れを詳しくご紹介できたと思いますので、ぜひ皆さんも”homemade”に挑戦してみてはいかがでしょうか。

コメント

タイトルとURLをコピーしました