Gamebuino [Arduino]互換の小型ゲーム基板


 「Arduino」の環境で開発ができる、小型のゲーム基板「Gamebuino」。
 
 この基板を使ったプログラムの開発用に、「Gamebuino」一式を頂きました。
 ゲームを作ったり遊ぶ予定はありませんが、グラフィックLCDやスイッチ類とバッテリーを搭載しているので、何かの端末として重宝しそうです!
 そこで、BASCOM-AVRで動かせるように、ライブラリと設定プログラム、および簡単なテストプログラムを準備しました。



開発環境とテスト・プログラム
 
● ハードウェアの基本情報
 
C P U ATmega328P-AU (TQFP32 32ピン・パッケージ)
Xtal 16MHz
表 示 器 モノクロ液晶 横 84 x 縦 48 ドット バックライト付き
Nokia 5110相当品 (携帯電話のリサイクル品)
入力ボタン プッシュ・スイッチ 7個 (上、下、左、右、A、B、C)
スピーカー 圧電スピーカー
外部出力用 φ3.5 ミニジャック
通信端子 I2Cポート ×2 4ピン コネクター (2つは整列接続)
シリアルポート (USB端子 マイクロ B メス コネクター)
ISP端子 (6ピン・ピンヘッダ) ISP書込機用
ディスク マイクロSDカード
バッテリー LiPo 3.7V 100mAh以上 (USB端子から充電)
外形寸法 90 x 45 x 12 mm (基板寸法、アクリル板は含まず)
付 属 品 マイクロSDカード (128MB ゲーム等)、USBケーブル、カード・リーダ

● 詳細な情報
 
本家サイト(英語) https://gamebuino.com/
WIKIサイト(英語) https://gamebuino.com/wiki/index.php?title=Getting_started
回 路 図 https://gamebuino.com/wiki/images/6/6f/Gamebuino_r2_schematics.pdf
 
 注.回路図には一部間違いがあります。 (スピーカー部)

● 私的情報
 ・アクリル筐体の厚みがけっこうあり、コンパクトとは言えない。
 ・LCDはバックライトが暗く視認性はあまり良くない。
 ・LCDが携帯電話のリサイクル品のため、購入時に画面のキズや汚れのある物がある。
 ・使用1週間で、バッテリーから少量の液漏れあり。(発火等がないか心配・・・)
 ・ゲーム自体の完成度はどれも高いが、ドットが少ない上に画面が小さく、どれを遊んでも面白くない。
  (よって、端末に使う方が圧倒的に利用価値があると思う)

 
● BASCOM-AVRでの開発環境
 
 ○ グラフィックLCD (Nokia 5110相当)のライブラリ。
グラフィックLCD ライブラリ glcd-Gamebuino.LBX
 
   ・上のライブラリ「glcd-Gamebuino.LBX」を、
    C:\Program Files (x86)\MCS Electronics\BASCOM-AVR\LIB\
    にコピーします。

 ○ テスト・プログラム。
「Gamebuino」基板のテスト・プログラム Gamebuino_Test_001.bas
「Gamebuino」基板用のグラフィック・フォント Gamebuino_font6x8.font
 
   ・上の2つのファイルを、任意のフォルダーにダウンロードします。
   ・「Gamebuino_Test_001.bas」をコンパイルします。
   ・SDカードを使用する場合は、下記のディスク用プログラムを追加します。

 ○ SDカードを使用する場合。 (BASCOM-AVR(製品版)が必要です)
SDカード用の設定プログラム Config_MMCSD_HC_Gamebuino.bas
SDカード用のAVR-DOS設定プログラム CONFIG_AVR-DOS_Mega328P.bas
 
   ・上の2つのファイルを、テスト・プログラムと同じフォルダーにダウンロードします。
    ※ この2つのファイルは、コンパイルしないで下さい。
   ・「Gamebuino_Test_001.bas」の冒頭にある「Sdcard_use = 0」行の[0]を[1]に変更してから
    コンパイルします。

 ○ 書込機の設定。
   ・プログラムの書き込みは、USBケーブルを使用して行えます。
    (SDカードからも起動できます。 下記の項を参照)
 
   ・BASCOM-AVRのメニューバーから、[ Options ]→[ Programmer ]と進みます。
   ・「Programmer」のプルダウンメニューから、[ ARDUINO ] を選択します。
   ・「COM-port」のプルダウンメニューから、「USB接続ポート番号」を選択します。
    「USB接続ポート番号」は、パソコンに「Gamebuino」をUSBケーブルで接続してから、
    Windowsの「デバイス マネージャー」で「ポート(COMとLPT)」の「USB Serial Port (COMx)」で
    調べます。
   ・BAUD(ボーレート)を、プルダウンメニューから115200を選択します。

   ・その後は、「AVRISPmkII」と同様の画面から書き込みが行えます。
 
   ※注意 「AVRISPmkII」等のISP書込機からもプログラムの書き込みが行えますが、
     一度ISP書き込みを行うと、AVR内に用意されているブートローダーも消えてしまいます。
     ブートローダーが無くなると、以降は再度ブートローダーを書き込むまで、USBケーブルを
     直接接続した[ARDUINO]の書き込みやSDカードのブートはできなくなります。


 
● SDカードからのブート (ユーザー・プログラムの実行)
 
 ISP書込機やUSBケーブルを使わずに、SDカードに書き込んだユーザーのプログラムを起動できます。
 
マイクロSDカードにプログラムのHEXファイルを
書き込んでおくと、ブートローダーが読み込んで
実行します。

準    備
1. マイクロSDカードを用意します。
  ・容量は2GB以下で、FAT16(別名FAT)でフォーマットした物。
2. SDカードに、「LOADER.HEX」ファイル(ディスクのローダー)をコピーします。
  ・「LOADER.HEX」は、付属のゲームが入ったSDカード内、
   または「Gamebuino-Games-Compilation」からダウンロードできます。
  ・付属のゲームが入ったSDカードを、そのまま使う事もできます。
  ・ファイル名は、拡張子(.HEX)を含めて全て大文字にする必要があります。
3. プログラムをコンパイルして、HEXファイルを作ります。
  ・BASCOM-AVRでは、コンパイル時に".BIN"ファイルと共に同じフォルダーへ作られます。
4. SDカードにプログラムのHEXファイルをコピーします。
  ・ファイル名は8文字以内(XXXXXXXX.HEX)で、拡張子(.HEX)を含めて全て大文字
   する必要があります。

起    動
1. プログラムを書き込んだSDカードをGamebuinoに差し込みます。
2. [C]ボタンを押したまま電源を入れて、2秒以上待ってから[C]ボタンを離します。
3. 画面が消えた状態で、SDカード内のファイル数にもよりますが10〜20秒ほど待ちます。
4. 下の写真のようなプログラムの選択メニューが表示されます。
  ・8文字以内のファイル名が表示されます。
  ・ゲームが入っていると、アイコンがたくさん出ます。
  ・アイコンを自分で作る事もできます。(INF encoder
5. [上下左右]ボタンでプログラムを選択して、[A]ボタンを押します。
6. 読み込みの確認画面が出ますから、再度[A]ボタンを押します。
  ・この画面にプログラムの操作説明などを表示する事もできます。(INF encoder
  ・左右ボタンでファイルメニューが変わり、HEXファイルの削除等ができます。
  ・[B]または[C]ボタンで、読み込みをキャンセルできます。
7. HEXファイルがAVRのフラッシュに読み込まれて、選択したプログラムが起動します。


プログラムの選択

読み込みの確認
 
  ・その後は電源を切って再度入れると、読み込んだプログラムがそのまま起動します。
  ・プログラムを変更する場合は、上記の「起動 1.」からを繰り返す事で、パソコンが無くても
   出先で起動するプログラムを変える事ができます。

 
● テスト・プログラムの解説
 
   ・基本のテストプログラムは、BASCOM-AVR(試用版)でもコンパイルできます。
   ・SDカードを使用したプログラムを書く場合は、BASCOM-AVR(製品版)が必要です。
 
   ・ハードウェアの接続ポートは、下記のラベルが付けてあります。
     Btn_u ボタン[Up]の接続ポート。
     Btn_d ボタン[Down]の接続ポート。
     Btn_l ボタン[Left]の接続ポート。
     Btn_r ボタン[Right]の接続ポート。
     Btn_a ボタン[A]の接続ポート。
     Btn_b ボタン[B]の接続ポート。
     Btn_c ボタン[C]の接続ポート。
     Backlight G-LCDのバックライトの接続ポート。
     Sp_out スピーカーの接続ポート。
 
   ・ボタン(スイッチ)の接続ポートは、全てAVRの内蔵プルアップ抵抗器でプルアップされています。
    したがってポートの状態は、ボタンを押すと[L]、離すと[H]です。
    テスト・プログラムでは、スイッチを押すと確答する表示が反転表示されます。
    [C]ボタンでは、LCDのバックライトがON/OFFします。
 
   ・LCDのバックライトは、ポートを[H]にすると点灯します。
    Timer0の[OC0B]ポートに配置されているので、PWMによる輝度調整も可能です。
 
   ・スピーカーの接続ポートは、[H]でアクティブです。 (消音時は[L])
    圧電スピーカーなので、任意の周波数で[H]と[L]を繰り返す事で発音します。
    外部出力用のφ3.5ミニジャック部分の回路図に間違いがあります。
    スピーカーの接続ポートが[H]になるとトランジスタがONになり、φ3.5ミニジャックに
    3.3Vの電圧が出ます。
 
   ・搭載されているグラフィックLCDは、LCDモジュールのグラフィック・メモリーに対して書き込み
    動作のみで、読み出しはできません。
    したがって、メモリーとの倫理和が必要な[LINE]、[CIRCLE]、[BOX]、[PSET]等の命令は
    使用できません。
    キャラクターのフォントを組み合わせて、線や記号などを表示します。
    LCDのコントラストは変更できない仕様のようです。(購入時の設定画面でもできなかった)
 
   ・「glcd-Gamebuino.LBX」では、下記の命令が使用できます。
    [CLS] グラフィックLCD画面の消去。
    [LCDAT] 文字等のフォントデータを表示。
     (表示オプション 1:反転表示、2:実線のアンダーライン、3:点線のアンダーライン)
    [SHOWPIC] グラフィックLCDに、BGFファイル(BMPを圧縮した画像)を描画。
 
   ・I2Cポートは、[I2CSEND]や[I2CRECEIVE]等のI2C命令が使用できます。
    クロック周波数は、4MHzです。 (変更可能)
 
   ・A/Dコンバータは下記の2チャンネルが使用できます。
    [6] : 電池電圧のA/D変換値。
    [7] :  CDSセンサー電圧のA/D変換値。
 
   ・CDS光センサーは、明るさの変化により、明るくなるとポート電圧が上がり、暗くなると下がります。
    テスト・プログラムでは、明るさを[0〜1023」の数値に置き換えて、1秒間隔で表示しています。
 
   ・電池電圧は、バッテリーの電圧を測定して表示しています。
 
   ・シリアル通信(USART)は、USBポートでパソコンと接続し、ターミナルソフト等で通信を行えます。
    [PRINT]や[INPUT]命令。
    COMポート番号は、上記の書込機の設定と同じ番号です。
    通信パラメータは、9,600ボー、パリティー無し、データ・ビット 8、ストップビット 1 です。
    (変更可能)
 
   ・SDカード用のAVR-DOSを組み込んだ場合は、AVR-DOSの命令によりファイルへのアクセスや
    書き込みが行えます。
    テスト・プログラムでは、SDカード内のファイル数を表示しています。









■ RTC(デジタル時計)モジュールを接続する ■


 「Gamebuino」のI2Cポートに、RTC(リアル・タイム・クロック) RTC-8564NBRX-8025NB(秋月電子)モジュールを接続します。
 モジュール側にボタン電池(3V)を搭載することで、「Gamebuino」の電源を切っても、RTCモジュールをI2Cポートから外しても、時計はカウントを続けます。


RTC-8564NBRX-8025NB(秋月電子)モジュール

RTC-8564NB 日本語マニュアル
 
・デバイスの内部に32.768KHzの水晶を内蔵しています。
・水晶の精度は工場出荷時のままで、気温や経年変化による微調整はできません。

RX-8025NB 日本語マニュアル
 
・デバイスの内部に32.768KHzの水晶を内蔵しています。
・時刻の遅れや進み具合により、内部のレジスターに設定値を書き込むことで微調整が可能です。
 ・ブレッド・ボード上に組み立てて、「Gamebuino」の
 I2Cポートに接続します。
 

回 路 図  PDF版 Gamebuino_RTC_Cir.pdf
 
   注意! この図面を使用した、いかなる損害にも責任を負いません。

・各モジュールのジャンパーJP1,JP2,JP3またはJ1,J2,J3は
 接続しないでください。

プログラム
 
 ・電源を初めて入れた時とバッテリーが切れた時には、各RTCが初期化されます。
 ・[B]ボタンを押しながら電源を入れると、各RTCを強制的に初期化できます。
 
 ・Gamebuinoには1秒割り込みの入力ピンが無いので、100mS間隔で時刻を読み出して、
  秒が変更された場合にLCDへ表示を行います。
 ・[A]ボタンを押すと、12時間制と24時間制の表示切り替えを行えます。
 ・[B]ボタンを押すと、LCDのバックライトがON/OFFします。
 ・[C」と[Up]ボタンを同時に押すと、時刻の設定モードに入ります。
    [Left]と[Right]ボタンで、設定する項目を選択します。
    [Up]と[Down]ボタンで、設定値を増減します。
    [A]ボタンを押すと設定を終了して、時刻データを各RTCに書き込みます。

 ・ [RX-8025NB] の時刻カウント校正
 

 ・時刻設定画面の一番下にある[ofs:]で、時刻の遅れや進み具合による微調整が可能です。
 ・このICに内蔵されている原振の32.768KHz水晶は、工場出荷状態でICごとに校正されています。
 ・さらに、校正用のレジスターを持っており、環境の温度によって進みや遅れを微調整することが
  できます。
 
 ・設置環境の気温が+25℃前後で一定ならば、校正の必要は無いと思います。
 ・また、年間を通して気温の平均が+25℃前後の環境ならば、誤差も平均化されるので校正の
  必要も少くなります。
 ・地域や設置環境によって時刻の遅れや進みが顕著な場合は、校正用レジスターを調整します。
 ・ [RX-8025NB]のマニュアルでは遅れと進みの±の解釈が逆になっていますので、機能設定
  画面では、進める場合は[+]、遅らせる場合は[−]に設定して下さい。
 ・設定値の範囲は、[−63 〜 +64] です。 ([−1] は [0] と同じ扱いです)
 ・1ヶ月程度の周期で誤差を見て、微調整を行って下さい。
 ・[0]が初期値です。

 ・Gamebuino用のコンパイルは、グラフィックLCD (Nokia 5110相当)のライブラリとグラフィック・
  フォント・ファイルが必要です。(上記を参照)
 
 ・HEXファイルをSDカードに書き込み、上記の「SDカードからのブート」を行う事もできます。

プログラム  テキスト形式 ソースファイル  Gamebuino_RTC-8564_101.TXT
 BASCOM-AVR用 ソースファイル
 (BASCOM-AVR(製品版)が必要です)
 Gamebuino_RTC-8564_101.bas
 SDカード用 HEXファイル  RTC-8564.HEX
  
プログラム  テキスト形式 ソースファイル  Gamebuino_RX-8025_101.TXT
 BASCOM-AVR用 ソースファイル
 (BASCOM-AVR(製品版)が必要です)
 Gamebuino_RX-8025_101.bas
 SDカード用 HEXファイル  RX--8025.HEX
  

注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。
       (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)




   電子工作の部屋 Top へ 前のページへ戻る