Building an Arduboy clone for kids.
年末年始はお子様と、いかがお過ごしの予定でしょうか。外出や帰省の難しいなか、例年よりもお子さんと長時間屋内で過ごされる方が多いのではないかと思います。そこで今回は(まだぎりぎり間に合うかも知れない)、「年末年始は、お子様と一緒にゲームボーイ風のハンディゲーム機を作ろう」の巻、です。
Arduboy ってなんだ?
Arduboy は、電子工作で有名な Arduino(アルデュイーノ)マイコンの技術を使った、小さなハンディゲーム機です。写真を見たほうが早いですね。
This picture is licensed by Gareth Halfacree under the Creative Commons Attribution-Share Alike 2.0 Generic license.
このゲーム機は、コミュニティの人たちが作ったさまざまなゲームで遊べるだけでなく、自分でゲームを作って公開することもできます。ゲーム機は市販品として販売もされているのですが、回路図が公開されているので、自分でクローン(まねっ子)を作ることもできます。
私が今回作ったクローン
あちこちに工作記事があるので、私がさらに繰り返すこともないのですが、私なりの情報を加えて御紹介したいと思います。
必要なブツ
- Arduino Pro Micro: Mini ではなくて Micro、です。私が使ったのは 3.3V/8MHz 版。スイッチサイエンスさんなどでも入手可。2,000円くらい。
- OLED ディスプレイ: こちらにも説明がありますが、AliExpress のこの製品が実績あります。海外からの送料込みで 400円くらい。SSD1306 を使った 192 × 96 ドットで SPI インターフェイスのものなら、他のものでも使えるかも知れません。ただし、説明に SSD1306 と書いてあっても、実際には異なるチップを利用したものも売られているそうなので、注意が必要です。
- 押しボタンスイッチ: ブレッドボードに差さるもの。6つ。できたら 7つ。
- ピエゾ式スピーカー
- ピンヘッダ(こんなの)24ピンぶん
- ブレッドボード
- ジャンパ線
- USB マイクロケーブル
以前にも書きましたが、こういうものを一つ持っていると便利です。ただし、押しボタンスイッチは 4つか付いていないので、追加で調達が必要です。
一つ注意事項。Arduino Pro Micro はプロと名乗っているせいか、ピンヘッダが半田付けされていません。ここだけは半田付けの必要があります。。。ご友人などで半田付けのできる方があったら、頼んでみるのも良いでしょう。慣れている方なら 10分程度でできると思うので、ビール 1杯、あるいはチョコレート 1枚くらいで 🙂 引き受けてくれると思います。
組み立て方
配線は、上記の写真をクリックして拡大して頂くと参考になるかと思いますが、こちらの回路図を見て頂いたほうが分かりやすいでしょう。
そこでは Arduino Pro Micro の 5V 版を使うようになっていますが、3.3V/8MHz 版でも大丈夫だと思います。
必要な長さのジャンパ線があればそれほど苦労はないと思いますが、押しボタンスイッチの配線は工夫のしどころかと思います。私は、左の十字操作ボタンのうち赤いスイッチに関しては、ピンを 2本外側に広げることで対処しました。もっとうまい方法を見つけたら、教えてください!
なお、ピエゾ式スピーカーには +/- の極性があるようです。
あともう一点。上記の写真にはありませんが、Arduino Pro Micro のボードの、RST というピンと GND の間に、さらにもう一つの押しボタンスイッチを繋いでおくことを強くお勧めします。(後述)
サンプルプログラムの書き込み
Windows パソコンをお持ちの方であれば、専用のゲームアップローダがあるそうですが、私は Mac OS 使いなので、基本に忠実に Arduino IDE を使うことにしました。説明は、以下が分かりやすいです。ただし英語です。
少しだけ日本語で注釈しましょう。
Step 1: Download and Install Arduino Software
Arduino IDE をダウンロードしてインストールします。こちらからダウンロードできます。お金に余裕のある方は、少額の寄付をしてあげても良いでしょう。
Step 2: Install the Arduboy Libraries and Board Support
Arduboy 用のライブラリをインストールします。メニューから Sketch > Include Library > Manage Libraries… とたどり(英語メニューの場合)、検索窓に arduboy と入力します。検索にかかったライブラリのリストが表示されるので、それぞれインストールしてください。
- Arduboy
- Arduboy2
- ArduboyTones
- ArduboyPlaytune
- ArdBitmap
- ArdVoice
- ATMlib
- Arduboy-TinyFont
ちなみに私が見たときは、FixedPointsArduino は見つかりませんでしたので、入れていません。(名前が変わったのかも)
続いて、メニューから Preferences(日本語だと環境設定かな?)を開き、追加のボードマネージャの URL という部分に https://arduboy.github.io/board-support/package_arduboy_index.json と入力して OK を押します。その後、メニューから Tools > Board: > Boards Manager… とたどり、検索窓に arduboy と入れて検索し、Arduboy をインストールします。
Step 3: Try Opening and Uploading an Example Sketch
続いて、Arduboy のサンプルプログラムをコンパイルしてアップロードします。
メニューから File > Examples > Arduboy2 とたどり、何かサンプルをロードします。ArduBreakout 辺りがお勧めです。
Arduino Pro Micro をパソコンに繋ぎ、メニューの Tools > Board で Arduboy を選び、Tools > Port で、Arduino が接続されたポートを選びます。こちらも参考になるかも知れません。(やっぱり英語)
メニューから Sketch > Upload と操作すると、サンプルプログラムのアップロードが始まります。アップロードが終わると、ゲームがスタートするはずです。しない場合は、「A ボタン」(上の写真だと、右手の赤いボタン)を押してみてください。
プログラムをうまくアップロードできない場合
おそらく、上のところまではうまくいくはずです。問題は、2回目から発生します。違うゲームやサンプルプログラムをアップロードしようとすると、Arduino IDE から Arduino Pro Micro のポートが見つけられない問題に遭遇する方があるかと思います。私がそうでした。
一度 Arduboy のプログラムをロードしてしまうと、Arduino IDE から、Arduino Pro Micro のポートが見えなくなってしまうのです。これを解決するには、SparkFun 社の以下のサイトが参考になります。
いわく、リセットボタンを 2度連続プッシュすると、8秒間だけアップローダが有効になり、その間はポートが見える、というものです。めんどくさーい。でも、仕様なのでしょうがないです。
という訳で、Arduino Pro Micro ボードの RST ピンと GND のピンの間にもう一つ押しボタンスイッチを付けておくと便利です。そうでない方は、注意して RST ピンと GND ピンを 2回連続してチョンチョンとショート(短絡)してみてください。幸いにも、RST と GND は隣り合わせになっています。
コツを説明すると、一度プログラムをコンパイルしておき、Arduino Pro Micro のリセットボタンを押す準備をします。次に、メニューからアップロードを選び、1秒程度経過したらリセットボタンを 2回連続(0.75秒以内)押します。8秒以内にボード上の黄色の LED がチカチカし出せば成功です。何回か練習が必要かも知れませんが、慣れるでしょう。ちなみに、リセットボタンを 2回押してもすぐにゲームが起動してしまう場合は失敗です。
ちなみに、AVR マイコンのプログラマ(自作できますが)を持っている人は、ブートローダを書き換えて修正してもいいかも知れませんね。
私がお勧めのゲーム
いろんなゲームが入手できますが、私のお勧めはこれです。
おそらく、1980年頃に流行った Game & Watch(ゲームウォッチ)FIRE の海外輸出版、そしてそのクローンゲームなのではないか、と思います。単純なゲームですが、まあ遊べます。1980年頃は、私はよくこれで従兄や友人とハイスコアを競ったものです。懐かしい…
他にも、ここを探すといろんなゲームが見つかります。
ゼルダの伝説風の RPG が人気のようですね。
あるいは、昔ご自分でマイコンゲームを書いたことがある方なら、自分でゲームを作ってみても良さそうです。前述の Arduboy2 のサンプルプログラムなどが参考になりそうです。
電池でも動くかしら?
上記 Instructables Circuits の記事の方は、このゲームを 3V のコイン電池で動かそうとしたらしいですが、数分間程度しか動かず、諦めたとあります。それほど消費電流が大きいのでしょうか。実験してみました。
Arduino Pro Micro の RAW ピンに、実験用電源から 3.3V を供給します。消費電流を見たところ、最大で 40mA 程度、スピーカーが鳴っているときで 30mA 程度、ゲームが定常的に動いているときで 25mA 程度のようです。
問題はおそらく、Arduino Pro Micro の電源にはレギュレター IC が入っているという点です。同レギュレター IC には 0.1〜0.2ボルト程度の電圧降下があるので、CR2032 のようなコイン電池を RAW に繋ぐのでは厳しいのかも知れません。代わりに、単三電池を 3本直列で RAW ピンに繋ぐようにすれば、おそらく、数十時間程度は動作するのではないか、と思います。(23日加筆: つい昔の癖で直列を 4本にしてしまうのですが、3本で十分です。4本にしても電池の持ちは変わりません。問題は、3本単位で売るパッケージが見当たらないことですね。電池ケースは 3本用のものが売られています。)