Mira&Luna's nursery lab

旅乙女と発明娘の子供部屋

ATtinyを使った ちびゲーム機を自作しよう。  2回目「実機(ハード)の作製」

f:id:miraluna:20180127173159j:plain:w100 Mira

ATtiny85を使ったゲーム機を作ろう」
その<実機の作製(パーツと配線)>

Arduinoを使ったゲーム機作成の紹介です。ゲーム機の制御には「ちびやっこ」ことATtiny85という1cm四方のマイクロコンピュータを使います。
プログラムはDaniel Champagneさん作成のフリーソフトTiny Joy Padをそのまま使います。

◆ ちびゲーム機(5cm x 7cm)
f:id:miraluna:20190624180713j:plain

今回は実機(ハードウェア)の作り方について紹介していきます。

<目次>

その 「Attiny85ゲーム機の紹介と準備する物
その 「実機の作製(パーツと配線)」 (今回)
その 「プログラム(ソフト)の書き込み

実機作製

〇 パーツ

・ちびやっこ「ATtiny85」
f:id:miraluna:20190421155320j:plain:w200
Atmel社のAVRマイコンマイクロコンピュータのATtiny85。
このゲーム機ではゲームのプログラムをこの中にすべて書き込んで動作させるの。ダニエルさんのプログラムは、このちびやっこのメモリをだいたい95~99%くらい使用しているの。性能をめいっぱいまで引き出しているのね。
プログラムメモリは 8KB。512BのEEPROMも内蔵しているわ。速度は水晶発振器を外付けすれば20MHzまで出るんだけど、内蔵クロックでも16.5MHzまで可能なの。このプログラムは内蔵16MHzで動くようにつくられてる。
2019.7月現在、秋月電子さんで 130円。


有機ELディスプレイ
f:id:miraluna:20190624180717j:plain:w250
これは 128x64 ドットのディスプレイ。
☆ I²C 接続
☆ 制御チップ[SSD1306]
のものを使います。画面がとってもきれいです。


・基板
f:id:miraluna:20190624175148j:plain:w200
ベースとなる基板です。25x15 くらいのものがちょうどいいと思う。
私はサンハヤトさんの「ICB-288U」というものを使いました(上の写真のものとは違います)。1列に並んだ穴がライン状につながっている部分が2本あるので、それを3.3vにつながるライン(パワーソース)とGNDにつながるラインとして利用したの。


・タクトスイッチ
f:id:miraluna:20190624175047j:plain:w300
カラフルだと楽しい。
押したときだけ接続するタイプを使います。一般的なものね。


・ICソケット(8pin)
f:id:miraluna:20190624175059j:plain:w200
きっと、ちびやっこを何回も抜き挿しするでしょうから、丸ピンのものがいいと思います。


・スイッチ
f:id:miraluna:20190624175105j:plain:w300
電源スイッチ用。
汎用的なものでいいわね。好みのものを。


電解コンデンサ
f:id:miraluna:20190624175110j:plain:w300
これは動作安定のためのもの。なくても動作します。「Tiny Joy Pad」の説明書きにも出てこない。私はよく使うので、今回も回路に入れておきました。使ったのは「47μF」。電源近くの+極とー極に接続します。コンデンサには極があるので注意。白い「マイナス帯」がある足がマイナス極よ。


・ブザー
f:id:miraluna:20190624175119j:plain:w250
ゲームの音を出すパーツ。圧電スピーカーと電子ブザーの違いはよくわからないけど、上の写真はたぶん圧電スピーカー。で、私が実際に使ったのはたぶん電子ブザー。極性があったもの。たぶん、たぶんね。


・コイン電池ソケットとコイン電池
f:id:miraluna:20190624175125j:plain:w290 f:id:miraluna:20190624175202j:plain:w290
マイコンやディスプレイは 3.3v動作のものが多いから回路図も 3.3vで描いたんだけど、実際の電源には 3.0vのコイン電池「CR2032」を使いました。ちびやっこの動作電圧は 2.7v~5.5v。ELディスプレイの動作電圧は 3.0v~5.5v。問題ないわね。


・各種抵抗器
f:id:miraluna:20190624175133j:plain:w300
10KΩ x 1本。
22KΩ x 2本。(10KΩで代用)
33KΩ x 2本。(10KΩで代用)
88KΩ x 2本。(47KΩで代用)
「代用」というのは、私の手元に22K、33K、88Kの抵抗がなかったのでそれで代用したものです。「ピンボール」のゲームではうまく動作しなかったので(他のゲームは問題なかったけど)、正しい値の抵抗を用意したほうがいいと思います。


・導線
f:id:miraluna:20190624175217j:plain:w300
ビニル導線、電子ワイヤ、ポリウレタン銅線、すずメッキ線などなどお好きなものを。
     おすすめは「ポリウレタン銅線」。
他にも電源用LEDなんかを付けてもいいかも。



〇 配線

それではいよいよはんだごてを手に取って、パーツを組み立てていきましょう。

この図のように配線しましょう。(∂_∂🎀/
f:id:miraluna:20190701193010j:plain
「3.3vへ」や「GNDへ」は、赤い〇で囲んだ「3.3v」と「GND」につながります。タクトスイッチの「上下左右」の文字はそれぞれコントローラーの「上下左右ボタン」を意味しています。
3.3vと書きましたが、実際には 3.0vで動作します。

8Pinで10本の配線を制御する発明
ゲーム機はブレインであるちびやっこが制御するんだけど、ちびやっこが制御しなくちゃいけないパーツと配線の本数はたくさんある。まずちびやっこ自身の電源に+とーで2本。有機ELディスプレイは I²C接続だから2本。ブザーで1本。操作ボタンが上下左右とAボタンで合計5本。全部合わせると少なくとも10本はPinが必要になる。でもちびやっこには8Pinしかない。これじゃ制御しきれないよ~。
そこで(∂_∂🎀/ この「Tiny Joy Pad」ではある工夫をして10本必要なPinを8本で制御しているの。その工夫はタクトスイッチにつながる1Pinと2Pinにある。このPinはそれぞれ異なる値の抵抗器を介して2つのタクトスイッチにつながっているんだけど、プログラムを読んでみるとアナログの値を読み取っている。つまり抵抗の値を変えることで、どちらのタクトスイッチを押したかを読み取れるようにしてあるというわけ。1つのPinにつないだ2つのボタンを見分けられるわけね。この工夫のおかげで10本必要なPinを8本で制御することができるの。
発明的工夫よね。これって偉業だわ。

それでは基板にパーツを配置してみましょう。ゲームをするときにボタンを押しやすいように配置しましょうね。

◆ 私はこんなふうに配置しました。
f:id:miraluna:20190624175319j:plain
◆ 裏
f:id:miraluna:20190624175307j:plain

相も変わらずですが......はんだづけ へたっぴです。
裏の配線をほんのちょっと解説しますね。
f:id:miraluna:20190701200031j:plain
この基板の中央には穴同士を連結させたラインがあって、それを+3vのパワーソースラインと、GNDラインとしました。スイッチや電解コンデンサをはさんで、電池ボックスの+とーにつながっています。
そこから時計回りに回路を流していきました。右上には回路の中心であるちびやっこがいます。ちびやっこからディスプレイやブザー、各種ボタンにつながります。ボタンへは回路図に描いた値の抵抗器を介します。
青いビニル導線はみんなボタンからGNDへ帰ってくる線です。オレンジと紫の線がブザーにつながっていて、左下の2本の緑の線がAボタン(勝手に私がAボタンと呼んでる)につながっています。


     これで実機の完成(∂.<🎀/
          f:id:miraluna:20190624175319j:plain:w300

次回はちびやっこにダニエルさんの書いた「TinyJoyPad」のプログラムを書き込む方法を紹介します。
                🎀つづく🎀



              
<目次>

その 「Attiny85ゲーム機の紹介と準備する物
その 「実機の作製(パーツと配線)」 (今回)
その 「プログラム(ソフト)の書き込み

               🎀Miraの部屋🎀

miraluna.hatenablog.com
miraluna.hatenablog.com