ゲーム機「TinyJoyPad」を作ろう
今、ゲーム機といえば、「任天堂スイッチ」や「ソニープレイステーション」などが思い浮かぶと思います。
今どきのゲーム機やゲームアプリを作るのは中々大変ですが、インベーダーゲームやパックマンなど一昔前に流行したゲームは自分で作るゲーム機「TinyJoyPad」で遊ぶことができます。
「TinyJoyPad」とは
「TinyJoyPad」は、カナダに住んでいるダニエルさんが開発した「ATtiny85」というマイコンを使ったゲーム機です。
このゲーム機の回路図、使用している部品、ゲームアプリが無料でだれでも使えるように公開されています。今回は公開された内容をもとにしたゲーム機を作ってゲームで遊んでみましょう。
「Tinyjoypad」のホームページは https://www.tinyjoypad.com/tinyjoypad_attiny85 です。
上記の「Tinyjoypad」ホームページに掲載されているゲームを本機で動作させるのは難しいので、下記のサイトからダウンロードします。
Github:https://github.com/cheungbx/gametiny
ちなみに「TinyJoyPad」の読み方は、”タイニー ジョイ パッド” です。
「ATtiny85」は、”エイティー タイニー ハチ ゴー” と読みます。
※読み方は人によってかわるかもしれません…。
ゲームアプリの紹介
Tiny_space_invaders
回路図
回路図が読める方のために掲載しておきます。
「ATtiny85」とは
このゲーム機は「ATtiny85」という大人の親指の爪くらいのサイズの小さなマイコンが使われています。Atmel社(現在は「Microchip Technology社」)が開発したマイコンで、このマイコンにゲームをインストールすることで、ゲーム機として遊ぶことができます。
◆「ATtiny85」Microchip Technology Inc.
https://www.microchip.com/en-us/product/attiny85#
「マイコン」とは
マイコンとは「マイクロ・コンピュータ」または「マイクロ・コントローラ」の略称になります。マイコンは家電や色々な電子・電気機器に入っており、それらの機器を制御するための電子部品です。
「パソコン」と「マイコン」の違いとは?
「マイコン」は電子部品のことを指します。そのため、マイコンは単体で動くのではなく他の部品と組み合わせて使います。
一方で、パソコンはキーボードやディスプレイなどの各種装置と組み合わせたものを指します。
OS(オーエス)と呼ばれる基本ソフトウェア上でソフトウェアを実行し処理を行う機器になります。
パソコンは複数の処理をおこなうことができますが、マイコンは複数の処理をおこなうことができません。反対に、パソコンは複数の処理を動作させているので、マイコンよりも処理が遅く、高速に動作させる必要がある処理には不向きです。
部品の実装図
部品はすべてオモテ面から挿して、ウラ面からハンダ付けをします。
ハンダ付けは1番背の低い抵抗器からハンダ付けをすれば、スムーズにいく思います。
抵抗器は180度回転しても問題ありませんが、刺す場所を間違えるとゲーム機が正常に動作しないので、よく確認しながらハンダ付けをおこなってください。
また、下記の部品は向きがありますので、基板のシルク印刷をよく見てハンダ付けをしてくだい。
- 12番 電源LEDランプ(緑色)
- 13番 電池ボックス
- 15番 ピンヘッダ
- 16番 ICソケット
いっぺんにハンダ付けをおこなおうとせずに、1つ1つ部品を確認しながらハンダ付けをすると失敗しません。
使っている部品
マイコン(IC)
今回の主役「AVRマイコン ATTINY85-20PU」。
このゲーム機の頭脳になります。このマイコンにゲームを書き込みます。
ディスプレイ
0.96インチ有機LED(OLED)を用いたI2C制御の128×64グラフィックディスプレイモジュールです。
タクトスイッチ(押しボタン)
タクトスイッチを5個使います。ボタンの色は何色でもOKです。
タクトスイッチとは、スイッチを押すと「オン」になり、離すと「オフ」になるスイッチです。
ゲームコントローラーでいうところの、十字キーや機能キーとして使います。
スピーカー
圧電スピーカーです。ビープ音を鳴らせるようになっています。
ICソケット
マイコン(ATtiny85)が抜き挿しできるよう丸ピンICソケット(8P)を使用しています。
ATtiny85を挿し替えることでゲームアプリを入れ替えることができます。
左側の半円のくぼみがある方にATtiny85の1番ピンを向けて挿します
電源スイッチ
電源スイッチ用として、「スライドスイッチ 1回路2接点 基板用」を使用しています。
抵抗器
今回、使用する抵抗値は全部で5種類(下記)です。
- 22k Ω(R1、R2)
- 33k Ω(R3、R5)
- 82k Ω(R4、R6)
- 10k Ω(R7)
- 300 Ω(R8)
22k Ω(R1、R2)
上下と左右の移動のタクトスイッチを制御するための抵抗器です。
33k Ω(R3、R5)
上移動と右移動のタクトスイッチを制御するための抵抗器です。
82k Ω(R4、R6)
下移動と左移動のタクトスイッチを制御するための抵抗器です。
10k Ω(R7)
TinyJoyPadの右側にあるタクトスイッチを制御するための抵抗器です。
300 オーム(R8)
緑色LEDに、たくさん電気が流れないようにするための抵抗です。
コンデンサー
動作を安定させるためにコンデンサーを使っています。
リード型積層セラミックコンデンサー 0.1μF50V F 2.54mm
緑色LED
スイッチをオンにしたときにLEDが緑色に点灯します。通電確認用のLEDになります。
ピンヘッダ
ボックスヘッダ6P(2×3)を使います。
このピンヘッダは、パソコンと繋ぐためのコネクタとなります。
電池ボックス
ボタン電池 基板取付用ホルダー CR2032用(小型タイプ)
電池
コイン電池の「CR2032」(3V)を使ってください。
ゲームの動きが悪いなぁ思ったら電池を使い切っているかもしれません。
その場合は新しい電池に交換してみてください。
基板
ワークショップ向けに作りました。
基板の材質はFR-4と呼ばれるもので、板厚は1.6mmです
ケース
TinyJoyPadの基板に合わせて、特別に作っていただきました。
ケースの材質はSUS430(サスヨンサンマル)のHL(ヘアライン仕上げ)です。キッチン回りのステンレス部品によく使われるものです。
板厚は1mmで頑丈な作りになっていて、レーザーを使って加工されています。
ネジ類
M2 ナベネジ 長さは10mmを4本。
ケースの高さ調整のためにM3ナット(1種)を8個使っています。
部品表
使用している部品、数量、購入先を以下にまとめました。
ゲームをインストールするには
ゲームをインストールにするには以下の順番でおこなっていきます。
- Arduino IDEをインターネットからダウンロード
- Arduino IDEをパソコンにインストール
- Arduino IDEを設定
- ゲームデータをダウンロード
- 「Arduino」または「USBasp」を使ってゲームデータを書き込み
順番に解説します。
1. Arduino IDEをインターネットからダウンロード
下記から「Arduino IDE」をパソコンにダウンロード(無料)しましょう
「Arduino IDE」はArduinoなどのマイコンボード用のプログラムを開発するためのパソコン用ソフトウェアです。
2. Arduino IDEをパソコンにインストール
※ダウンロードの前に、下記が表示されるので、「JUST DOWNLOAD」をクリックして先にダウンロードを開始しましょう。
Windowsの場合
インストールが終わると「Arduino IED」が起動します。Windowsの場合は「アクセスを許可する」をクリックして「許可」してください。
3. Arduino IDEの設定
下記の内容でATtinyにゲームを書き込むための設定をおこないます。
- Arduino IDEを日本語化
- ボードマネージャーを追加
- ボードパッケージをインストール
日本語表示に変更
Arduino IDE を起動し、左上のメニューから「File」 → 「Preferences」 の順にクリックします。
「Settings」 タブ → 「Language」 で「日本語」を選択し、「OK」をクリックします。
ボードマネージャーを追加
左上のメニューから「ファイル」 → 「基本設定」 の順にクリックします。
基本設定の「追加のボードマネージャのURL」 の左側にあるボタンをクリックします。
下記のURLをコピー&ペーストで入力して、「OK」をクリックし、「基本設定」も「OK」をクリックして閉じます。
http://drazzy.com/package_drazzy.com_index.json
ボードパッケージをインストール
①をクリックし、②「ATtiny」で検索して、③「ATTinyCore by Spence Konde」をインストールします。
下記の要領でボードパッケージのインストールされているかを確認しましょう。
左上のメニューから「ツール」→「ボード」の順に進み、「ATtinyCore」が追加されていればOKです。これでATtiny85にコンパイルとスケッチの書き込みができるようになりました。
4. ゲームデータをダウンロード
ゲームデータは、下記のサイトからダウンロードします。
Github:https://github.com/cheungbx/gametiny
注意:「Tinyjoypad」のホームページにもゲームデータは置いてありますが、今回は使いません。
①「Code」をクリックし、②「Download ZIP」をクリックしてゲームデータをダウンロードします。
Download.zipを解凍すると各ゲームごとにフォルダに分かれて保存されています。
5. 書き込み装置を使ってゲームデータを書き込み
パソコンとゲーム機をつなぐ方法は2通り
パソコンとゲーム機をつなげるには2通りの方法があります。
下記のどちらかで繋げてください。
- 「Arduino Uno」を使う
- 「USBasp」を使う
「Arduino Uno」を使う方法
初めて「Arduino Uno」を使う場合は、Arduinoスターターキットを購入されることをお勧めします。
スターターキットには、Arduino Unoのほかに、ブレッドボード、ジャンパー線が一緒に入っていますので、個々に購入するよりも安く揃えられますし、Arduinoを使った電子工作やプログラミングにも使えます。
ゲームをインストールする際は、TinyJoyPad(ゲーム機)からATtiny85を外してからブレッドボードに挿します。なので、ATtiny85を外す手間が増えます。
Arduino スターターキットを用意
Arduino スターターキットはAmazonで購入できます。
ELEGOO UNOは、Arduinoの互換キットですが問題無く使用できます。
ELEGOO UNO R3基本部品 初心者スターター 互換キット チュートリアル Arduino用
Arduino Unoを書き込み装置にするため設定
Arduino Unoを使ってATtiny85にゲームを書き込むための機能を設定します。
Arduino Uno とパソコンをUSBケーブルで繋げます。
Arduino IDEの「ファイル」→「スケッチ例」→「11.ArduinoISP」→「ArduinoISP」の順番を開きます。
次に、Arduino IDEの「ツール」→「ボード」→「Arduino AVR Boards」→「Arduino Uno」の順番にクリックします。
最後にArduino IDEの「スケッチ」→「書き込み」の順番にクリックします。
スケッチのコンパイルが終わるとArduino UnoのLEDが点滅して書き込みが始まります。
しばらくすると書き込みが完了すれば、Arduino Unoが書き込み装置として機能します。
Arduino UnoとAttiny85の接続方法
上記の画像を参考にしてブレッドボード、ATtiny85、Arduino Unoをそれぞれ挿す場所に注意しながら繋げてください。
ATtiny85の各ピンごとの機能は下記の図を参考にしてください。
ブートローダのインストール
※この作業は新しいATtiny85(一度も書き込みを行っていない)を使う場合のみ1回行えばOKです。
「ツール」をクリックし、下記を参考にしながら設定します。
- ポート:”COM3″ ←ここはご使用のパソコンによって変わります。
- ボード:”ATtiny25/45/85(No bootloader)”
- Chip:”ATtiny85″
- Clock Source (Only set on bootload): “16MHz (PLL)”
- 書き込み装置:”Arduino as ISP”
設定が終わったら、「ツール」から「ブートローダを書き込む」をクリックすれば完了です。
ディスプレイ用のライブラリをインストール
ディスプレイ制御用のライブラリ「ssd1306xled.h」をArduino IDEにインストールします。
以下から「ssd1306xled.h」ライブラリをダウンロードします。
GitHub:Defragster / ssd1306xled https://github.com/Defragster/ssd1306xled
「Code」→「Download ZIP」をクリックしてダウンロードしてください。
次に、Arduino IDEの「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール」の順にクリックし、ダウンロードしたzipファイルを選択してインストールをしてください。
これで「ssd1306xled.h」ライブラリのインストールは完了です。
TinyJoyPad(ATtiny85)にゲームをインストール
Arduino IDEから「ファイル」→「開く」の順にクリックし、ダウンロードしたファイルの中にある「Tiny_space_invaders」フォルダから「Tiny_space_invaders.ino」を選択し、開くをクリックします。
Arduino IDEの「ツール」で下記の内容になっているかを確認してください。
Arduino IDEから「スケッチ」→「書き込み装置を使って書き込む」をクリックしてゲームを書き込みます。
「書き込み完了」と表示されるとインストールが終わりです。
エラーが表示されると、書き込みが完了せずに停止します。その場合はエラーの内容を確認、修正して再度、書き込みしてください。
「USBasp」を使う方法
「USBasp」という書き込み装置を使ってゲームを書き込む方法になります。
「USBasp」はAmazon等で購入できます。
KeeYees USB AVRプログラマ USBasp AVRライタ(Amazon🔗)
セットアップ(Windowsの場合)
Windowsの場合、USBaspをPCに挿すと、ドライバが無くてデバイスマネージャで「!」マークが付きます。ドライバを入れても署名が無いので、ドライバをインストールすることができません。そのため、以下の方法でドライバをインストールします。
まず、以下のサイトから「Zadig」をダウンロードします。
Zadig:https://zadig.akeo.ie/
ダウンロードが終わったら、「zadig-2.8.exe」を実行します。
実行すると下記が表示されますが、「No」をクリックしてください。
①「USBasp」が選択されていることを確認して、②「Install Driver」をクリックしてインストールを開始します。
以下のメッセージが出たらインストール完了です。
デバイスマネージャーを確認すると、「!」マークが消えて認識されたらOKです。
USBaspとTinyJoyPadの接続方法
「MISO」、「SLK」、「RST」が見える方向から挿してください。
ブートローダのインストール
※この作業は新しいATtiny85(一度も書き込みを行っていない)を使う場合のみ1回行えばOKです。
「ツール」をクリックし、下記を参考にしながら設定します。
- ポート:”COM3″ ←ここはご使用のパソコンによって変わります。
- ボード:”ATtiny25/45/85(No bootloader)”
- Chip:”ATtiny85″
- Clock Source (Only set on bootload): “16MHz (PLL)”
- 書き込み装置:”USBasp (ATTinyCore)”
ディスプレイ用のライブラリをインストール
ディスプレイ制御用のライブラリ「ssd1306xled.h」をArduino IDEにインストールします。
以下から「ssd1306xled.h」ライブラリをダウンロードします。
GitHub:Defragster / ssd1306xled https://github.com/Defragster/ssd1306xled
「Code」→「Download ZIP」をクリックしてダウンロードしてください。
次に、Arduino IDEの「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール」の順にクリックし、ダウンロードしたzipファイルを選択してインストールをしてください。
これで「ssd1306xled.h」ライブラリのインストールは完了です。
TinyJoyPad(ATtiny85)にゲームをインストール
Arduino IDEから「ファイル」→「開く」の順にクリックし、ダウンロードしたファイルの中にある「Tiny_space_invaders」フォルダから「Tiny_space_invaders.ino」を選択し、開くをクリックします。
Arduino IDEの「ツール」で下記の内容になっているかを確認してください。
Arduino IDEから「スケッチ」→「書き込み装置を使って書き込む」をクリックしてゲームを書き込みます。
「書き込み完了」と表示されるとインストールが終わりです。
エラーが表示されると、書き込みが完了せずに停止します。その場合はエラーの内容を確認、修正して再度、書き込みしてください。
コメント