Gamebuino は Arduino ベースのゲーム機です。単体で持ち運べる Gamebuino 互換機は...多分作りませんが、動作検証はやってみたいと思います。
ブレッドボードに実装するとこんな感じです。
ボタンを実装するスペースがなかったので、右下にピンヘッダを立ててあります。GND のワイヤーで接触させるとボタンを押した事になります (w
Gamebuino 互換機を作るのに必要な部品は以下の通りです。
用途 | 部品名 | |
メインボード | Arduino Pro Mini | |
ディスプレイ | 1.8 inch LCD ディスプレイ (SPI) | |
MicroSD IF | MicroSD ブレークアウトボード | |
ゲーム保存用 | MicroSD カード (できれば SDHC でない小容量のものを) | |
スピーカー | パッシブブザー | |
乾電池駆動 (任意) | 昇圧 DCDC コンバータ | |
電源スイッチ (任意) | スライドスイッチ | |
インジケーター用 LED (任意) | LED, 抵抗 | |
照度センサー (任意) | CdS セル, 100kΩ抵抗 | |
ICSP (任意) | 6ピンヘッダ (2x3) | |
I2C (任意) | 4ピンコネクタx2 |
LCD | Atmega328P 32pin | Pro Mini |
1 RST | 23 PC0 (ADC0/PCINT8) | A0 |
2 CE | 24 PC1 (ADC1/PCINT9) | A1 |
3 DC | 25 PC2 (ADC2/PCINT10) | A2 |
4 DIN | 15 PB3 (PCINT3/OC2A/MOSI) | D11 |
5 CLK | 17 PB5 (SCK/PCINT5) | D13 |
6 VCC | VCC | VCC |
7 LIGHT | 9 PD5 (PCINT21/OC0B/T1) | D5* |
8 GND | GND | GND |
この LCD モジュールを素の状態で使うとアノードコモンなので、光センサーを使用して接続すると周囲が明るい程バックライトも明るい事になります。ちゃんと実装しようと思ったらカソードコモン化するか、別の LCD モジュールを使うしかありません。
* 光センサー未使用時は LIGHT ピンを GND に接続するとバックライト ON、VCC (3.3V) に接続でバックライト OFF となります。
私が使用した microSD ブレークアウトボードはコレです。
microSD | Atmega328P 32pin | Pro Mini |
1 CD | (接続しない) | (接続しない) |
2 DO | 16 PB4 (PCINT4/MISO) | D12 |
3 GND | GND | GND |
4 SCK | 17 PB5 (SCK/PCINT5) | D13 |
5 VCC | VCC | VCC |
6 DI | 15 PB3 (PCINT3/OC2A/MOSI) | D11 |
7 CS | 14 PB2 (PCINT2/SS/OC1B) | D10 |
大きなスピーカーを接続しないのなら回路図に載っているようなアンプは不要でしょう。
スピーカー | Atmega328P 32pin | Pro Mini |
+ | 1 PD3 (PCINT19/OC2B/INT1) | D3 |
- | GND | GND |
ボタン | Atmega328P 32pin | Pro Mini |
BTN0 (上) | 13 PB1 (PCINT1/OC1A) | D9 |
BTN1 (右) | 11 PD7 (PCINT23/AIN1) | D7 |
BTN2 (下) | 10 PD6 (PCINT22/OC0A/AIN0) | D6 |
BTN3 (左) | 12 PB0 (PCINT0/CLKO/ICP1) | D8 |
BTNA (A) | 2 PD4 (PCINT20/XCK/T0) | D4 |
BTNB (B) | 32 PD2 (INT0/PCINT18) | D2 |
BTNC (C) | 26 PC3 (ADC3/PCINT11) | A3 |
片方は GND へ接続します。
光センサー (CdS セル) は LCD モジュールのバックライトと連動しています。
100KΩ抵抗でプルダウンして A7 (22: ADC7) へ接続します。
ICSP | Atmega328P 32pin | Pro Mini |
1 MISO | 16 PB4 (PCINT4/MISO) | D12 |
2 VCC | VCC | VCC |
3 SCK | 17 PB5 (SCK/PCINT5) | D13 |
4 MOSI | 15 PB3 (PCINT3/OC2A/MOSI) | D11 |
5 RST | 29 PC6 (RESET/PCINT14) | RST |
6 GND | GND | GND |
I2C の接続は Gamebuino の回路図を参照してください。
Gamebuino は USB からスケッチをアップロードして個別にゲームを遊ぶ事もできますが、microSD からゲームファイル (*.hex) を呼び出して実行する事もできます。前者に関しては Arduino IDE からコンパイル&転送するという Arduino ではおなじみのスタイルですが、後者を実現するためには Gamebuino Bootloader が必要です。
現状で Gamebuino ブートローダーを書き込む最も簡単な方法は Arduino IDE 1.0.5 を使う事です。ここでは書き込み装置として USBasp を使います。
|
Gamebuino ブートローダーが書き込めたら、初期セットアップを行う画面になります。
初期セットアップが終わったら C ボタンを押すと microSD からゲーム一覧を読み込みはじめます。
古い Arduino IDE を使いたくないのなら、avrdude を使ったスクリプトでもブートローダーを書き込めます。但し、将来において動作を保証するものではありません。
以下は書き込み装置として USBasp を使う場合のスクリプトです。
|
以下は動作未保証ですが、Arduino as ISP (UNO 等をブートローダー書き込機にする) 用のスクリプトです。
|
赤字の部分はご自分の環境に合わせて書き換える必要があります。これらのスクリプトと gamebuino_boot.hex を同じ場所において実行してください。
小容量の microSD カードを用意しましょう。microSDHC ではなく、2GB 以下の microSD がいいと思います。Gamebuino には microSD の相性問題が少なからずあるようです。
用意ができたら、以下からゲームを DL しましょう。
microSD のルートフォルダに展開しておきます。
microSD を Gamebuino に挿入して起動すれば、ゲームが読み込まれランチャー (メニュー) が起動します。初回はゲームリストの読み込みに時間が掛かります。
microSD が認識されていなければエラー画面になります。microSD の接続及び、microSD カードをもう一度確かめてみてください。
Gamebuino のライブラリは [スケッチ | ライブラリをインクルード | ライブラリを管理] で Gamebuino を検索すれば出てくるのでこれをインストールしましょう。
他に SdFat ライブラリも必要かもしれません。
「後で何か確認したくなったら、またブレッドボードで作るの?かったるいなぁ」...そんな時はシールド化ですよね。
ブレッドボードで使った Arduino Pro Mini は...使いません。シールド化するのですから、ボードは UNO 系です。そして、シールド化するのにとても都合のいいボードがあります。
SainSmart の表面実装 (SMD) 版 UNO 互換機です。"改造バージョン" と呼ばれています。
すべて条件を満たします。UNO の SMD 版には殆どメリットがないのですが、この SainSmart の互換機はよくできていると思います。以前は Amazon で単品でも買えたのですが、最近はスターターキットと一緒のものしかないようです。
シールドのベースには、買ったばかりで埃をかぶっていたバニラシールドを使いました。ボタン以外は実装してあります。C ボタンだけは右下に付けておきました。何でかというとこのボタンだけはアナログピンで他のピンと距離があるのと、これさえなければ十字キーと A / B ボタンなので、いわゆる ATARI ジョイスティック (MSX ジョイスティック) で済むんですよね...最近売ってないですけど。
シールドの裏は特に何もなく、A6 / A7 ピンを引き出すためのピンソケットだけがあります。
ちょっと無理矢理ですが、本体の A6 / A7 ピンヘッダから信号を引き出せるようになっています。
バニラシールドのスルーホールグリッドと UNO 互換機の拡張ピンヘッダの位置は残念ながら一致していません...なので、現物合わせした状態でハンダ付けしてあります。ピンソケットが微妙にナナメなのはそのせいです。
Pro Mini でやった手順と特に変わりはありません。UNO 互換機には ICSP 端子があるので USBasp と接続するのが楽でいいです。
スペースの都合上、シールドには ICSP 端子を引き出していないので、ブートローダーを書き込む際には UNO 互換機からシールドを取り外しておく必要があります。
ここにある情報が役に立って、「調べる手間が省けたからオマイに飯でもおごってやるよ」 というハートウォーミングな方がいらっしゃいましたら、下のボタンからどうぞ。