ATtiny85というAVRマイコンを使って動かすミニゲーム機『Tiny Joypad』互換ボードを作ってみました!
ATtiny85は8ピンしかない非常に小さなAVRマイコンですが、こんな小さなチップでもスケッチを書き込むことによりArduinoとして動かすことができます。
このようなマイコンを使って動かすゲーム機は非常に面白く、最近いろいろと挑戦しています。
ESP8266(WeMos D1 Mini)で動かす『ESPboy』もブレッドボードで組んで遊んでみると非常に面白く、こちらも基板を製作して完成させようと考えています。
またESP32を使ったNES(ファミコン)エミュレータも面白そうなのですが、コンパイルがなかなか上手く通らないなど苦戦しています。
そして今回はATtiny85で動かすミニゲーム機『Tiny Joypad』互換ボードを作った話となります。
目次
ATtiny85で動かすミニゲーム機『Tiny Joypad』互換ボードを作ってみる!
ATtiny85で動かす『Tiny Joypad』は非常に簡単な構成で作れるミニゲーム機です。
Tiny Joypad公式サイトには構成する回路図やゲームデータが公開されているので、ブレッドボードやユニバーサル基板を使って簡単に組むことが出来るゲーム機となっています。
参考 Tiny JoypadTiny Joypad.com入手しやすいパーツで構成されているので、こんな感じでブレッドボードで組んで遊んでみました。
この投稿をInstagramで見る
興味ある方は簡単に組めるので、まずはブレッドボードを使って組んでみるのがいいと思います。
ゲームデータの書き込み方法などこちらの記事で詳しく解説しているので合わせて読んで頂ければと思います。
また、ミニAVRマイコンATtiny85に関してはこちらの記事も参考にして下さい!
そしてTiny Joypadで動くミニゲームは多数用意されており、非常に面白かったのでオリジナルのTiny Joypad互換基板を製作してみました。
ちゃんとゲームをプレイするにはブレッドボードでは少し操作しにくいのでユニバーサル基板で組み直そうかとも考えたのですが、回路構成は簡単でこのサイズの基板なら500円ほどで作れてしまうのでオリジナル基板を自作してみました。
Tiny Joypad互換基板を作る
上記Tiny Joypad公式サイトには回路構成が公開されています。
ATtiny85は8ピンしかないマイコンチップとなり、電源供給を行うVCC/GND端子を除けば使えるI/O端子の数は6本しかありません。
上記回路構成を見てみると、操作スイッチ(5つあります)の判定にはデジタルではなく抵抗の分圧を使い上手くアナログ入力(ADC)で判定する構成となっています。
I2C接続のOLEDディスプレイもあるので6本の端子で制御出来るように上手く工夫されているのが分かります!
そして前回の記事でブレッドボードで組んでTiny Joypadを動かす方法をご紹介しましたが、ゲームデータの書き込みの際に毎回チップを取り外して書き込み装置に接続する必要があり少し手間がかかるので、直接ゲームデータを書き込めるようにATtiny85のSPI端子及びRESET端子と接続できるピンヘッダーを取り付けTiny Joypad互換基板を作りました。
ゲームデータを書き込んだATtiny85チップを複数枚用意して入れ替えるのもいいのですが、書き込み装置を直接接続してゲームを書き換えることが出来るので便利だと思います。
このようにUSBaspなどのライタと接続しゲームデータを直接書き換えることが出来ます。(Arduinoと接続して書き換えることも出来ます)
回路は非常に簡単なのでKiCadなど基板設計ソフトを触ったことがある方なら、オリジナルのTiny Joypad互換基板を作るのは簡単だと思います。
JLCPCBでの基板発注
今回製作したオリジナルTiny Joypad互換基板のサイズは8cm×5cmと小さな基板となります。
可愛いミニゲーム基板に仕上がったと思います。
基板発注はJLCPCB(中国のメーカーです)を使いました。
他のPCB製造メーカーと比較して非常にお安く基板を作ることが出来ます。
海外発送の送料と合わせてもこの基板なら500円ほどで作ることが出来ます。(基板5枚の料金です)
興味ある方は基板データ(ガーバーファイル)を以下からダウンロードできるようにしたので使って下さい!
もちろんKiCadなどを使った基板設計が出来る方なら、さらに付加機能等を付けたオリジナルのTiny Joypad互換基板を作ってみるのも面白いと思います。
Tiny Joypad Game Console V1.0(gerber)
JLCPCBでの基板発注方法について少し書いておきます。
参考 JLCPCB日本語トップページJLCPCB上記はJLCPCBの日本語トップページとなります。
JLCPCBでの基板発注が初めてという方は、こちらのページから初回クーポンをいくつかもらえるのでさらにお安く作ることが出来ます!
ロゴをクリックするとトップ画面(発注画面)に移れます!
上記ガーバーファイル(zip形式)をダウンロードして、JLCPCBのサイトにアップロードすれば基板製作料金及び送料の確認が出来ます。
為替や決済方法により多少料金が変わってくるかと思いますが、PayPal決済で配送はOCS NEPを選択すると500円ほど約10日前後で基板が届きました。
非常にお安いですね!
ブレッドボードで組んだものをユニバーサル基板で組み直そうかと考えていましたが、この料金なら基板を作っちゃった方が手間やコストを考えるとお得かと思います。
基板製造の設定はほぼデフォルトで大丈夫です。
基板色は今回青レジスト色を選択しましたが、お好みで変更して下さいね。(追加料金はかかりません)
あと発注番号が基板の任意の場所にシルクプリントされてしまうのですが、これは目立たない基板裏にプリントされるように上記データは指定しているので、[Remove Order Number]の指定は[Specify a location]を選択して下さい!
他の項目は特に変更する必要はありません!
これで追加料金なしでこの基板を500円ほどで作ることが出来ます。
あとはカートに入れて決済するわけですが、JLCPCBでの発注方法はこちらの記事で詳しく解説しているので初めての場合は参考にして下さい。
パーツ一覧
必要なパーツ一覧です。
入手しやすいパーツばかりなので問題ないと思いますが、タクトスイッチの判定に抵抗による分圧で行っているので極力近い値のものを用意した方がよさそうです。
パーツ一覧 |
・ATtiny85 |
・ICソケット(8ピン) |
・OLEDディスプレイ(0.96インチ I2C接続) |
・圧電ブザー |
・CR2032電池ボックス |
・電源用スライドスイッチ |
・タクトスイッチ |
・セラミックコンデンサ 0.1μF |
・抵抗 10kΩ×1/22kΩ×2/33kΩ×2/91kΩ×2 |
ATtiny85 & 8ピンICソケット
ATtiny85はAVRマイコン学習用としても面白くかなり有名なチップですが、Amazonなどでは生チップは入手しにくいようです。
秋月電子さんや海外サイトを使えば安価で入手出来ると思います。
また、ピンヘッダーにUSBaspやArduinoと接続して直接書き込みが行えますが、チップを差し替えることもあると思うので8ピンICソケットを取り付けておくのがいいと思います。
OLEDディスプレイ(0.96インチ I2C接続)
0.96インチ(128×64)のI2C接続タイプのOLEDディスプレイを使います。
制御ドライバはSSD1306に対応したものを選んで下さい。
圧電ブザー
12mmサイズの圧電ブザー(パッシブブザー)を今回使いました。
サイズはお好みで!
CR2032電池用フレーム
使用しているOLEDディスプレイは3.3~5Vまで対応しています。
またATtiny85の動作電圧は2.7~5.5Vなので、3.3Vまたは5V電源が使えます。
今回は小型基板として収めるため、3.3Vのボタン電池CR2032を使っています。
電源スライドスイッチ
3ピンタイプの2.54mmピッチのスライドスイッチです。
タクトスイッチ
計5つのタクトスイッチを使います。
6mm角サイズ(6mm×6mm)のものを選択して下さい。
色や高さはお好みで!
高さは5mmのものは入手しやすいですが、ブレッドボードで一度組んだ際に少し高い方が操作がしやすい感じだったので今回7mm高のものを使いました。
セラミックコンデンサ0.1μF
無くても動作しますが、0.1μFのパスコンを1本入れています。
ピンヘッダー(2×3)
書き込み用端子としてピンヘッダーを取り付けています。
抵抗
以下の抵抗値のものが必要となります。
88kΩの抵抗は、上記回路図を見ると82kΩ~91kΩの値のもので代用できます。
今回は91kΩのものを使いました。
・10kΩ×1
・22kΩ×2
・33kΩ×2
・88kΩ×2(82kΩ~91kΩ)
このような抵抗セットはいくつか持っていますが、88kΩだけ手元になく91kΩのものを個別で購入しました。
セットものを購入する場合は、入っている抵抗値を確認して下さい!
また、通電確認用のLEDを1本入れています。
このLED用の電流制限抵抗が1本必要となりますが、300Ω前後~1kΩ程度のものを用意して下さい。
必要なパーツは以上となります。
ほぼ手持ちパーツのみで作ることが出来ました。
入手しやすいパーツばかりなので問題ないかと思いますが、上記リンクはサイズ等の参考にして頂きお安く買えるところを探してみて下さい。
組み立て
スルーホールパーツばかりなので、はんだ付けは簡単ですね!
抵抗値は、R1(22kΩ)・R2(22kΩ)・R3(33kΩ)・R4(91kΩ)・R5(33kΩ)・R6(91kΩ)・R7(10kΩ)・R8(470Ω)となっています。
特に注意すべき点などありませんが・・・可愛いミニゲーム基板になっていると思います。
この投稿をInstagramで見る
ゲームデータの書き込み
基板が完成したらゲームデータの書き込みです。
ゲームデータ書き込み用のピンヘッダーを取り付けているのでATtiny85チップを外す必要なく書き込みを行なえます。
USBaspなどのAVRライタをお持ちなら端子を合わせて接続するだけです。
またArduinoと接続する場合は、Arduino側の対応した端子と接続して下さい。
こんな感じです。
ボード端子 | Arduino |
VCC | 5V |
GND | GND |
MOSI | D11 |
MISO | D12 |
SCK | D13 |
RESET | D10 |
接続ができたらゲームデータの書き込みを行いますが、Arduino IDEを使った方法をこちらの記事で詳しく解説しているので参考にして下さい。(上記接続方法に関しても参考にして下さい)
この投稿をInstagramで見る
無事ゲームが起動すれば完成です!
最後に!
ATtiny85は指に乗るほどの非常に小さなマイコンチップですが、スケッチを書き込むことによりミニゲームとして動かすことが出来るのは面白いですね!
回路構成は非常に簡単なので、まずブレッドボードで組んで動かして試してみるのがいいと思います。
そして気に入れば上記基板データを使って組み直してみるのも面白く、基板設計など出来る方はEEPROMを付けてゲームデータを複数入れられる構成にするなどカスタムしたTiny Joypad互換基板を作ってみるのも面白そうですね。
ATtiny85はスケッチを書き込むことによりミニArduinoのように動かすことが出来るので、Arduinoを使った電子工作やAVRマイコン学習用としてもいいかと思います。
コメントを残す