ATTiny85を使った小型ゲーム機の製作(その1:ATTiny85の準備)

Arduinoを使って電子オルゴールをいろいろ開発してきましたが、小型化を突き詰めるともう少し小さくて消費電力の低いマイコンを使いたくなります。Arduinoで使われているAVRマイコンの下位ラインナップを調べると、ArduinoIDEで開発できて、手頃なマイコンがいくつかありそうです。

特にATTiny85は10ピンの小型・シンプルな設計で、最低限のリソース・I/Oを備えており、安価で入手もしやすいマイコンです。秋月で1個130円(2020年3月時点)で売ってます

最終的には、こんな感じの小型ゲーム機を作りました。

f:id:mnishikawa:20200321190949j:plain

ATTiny85を使った小型ゲーム機

f:id:mnishikawa:20200321191044j:plain

ATTiny85を使った小型ゲーム機

 

完成したゲーム機の動画はこちら。


ATTiny85をつかった小型ゲーム機を製作(テトリス)

 


ATTiny85を使った小型ゲーム機の製作(スペースインベーダー)

 

面白そう!と思った方は、是非チャレンジしてみてください。

 

目次

 

ATTiny85

特にATTiny85は10ピンの小型・シンプルな設計で、最低限のリソース・I/Oを備えており、安価で入手もしやすいマイコンです。秋月で1個130円(2020年3月時点)で売ってます

 

f:id:mnishikawa:20200321191555j:plain

ATTiny85

akizukidenshi.com

 

ネット上に実例も多く工作もしやすそうです。

 

tinyjoypad

面白いのが「tinyjoypad」プロジェクトです。

ATTiny85にI2Cの液晶をつなげれば簡単に小型ゲーム機が作れます。

 

www.tinyjoypad.com

 

ソースはGPLv3で公開されていますので、自由に活用できます。このソースを参考にオリジナルゲームを作ってまた公開し、オープンソースでの開発に貢献するのも楽しそうです。

 

 

ATTiny85の開発環境整備

まずは、ATTiny85の開発環境整備です。

このマイコンの書き込みには、AVRマイコンの書き込み環境が必要になります。

Arduinoがあれば、書き込み用プログラムのソースが公開されていますので、ブレッドボードなどで線をつなぐだけで書き込みが可能です。

こちらのサイトが丁寧にまとめていただいているのでとても参考になりました。

ht-deko.com

 

一番簡単なのはUSBaspを使うことです。

今回、Amazonで2個で770円のお手頃なUSBasp(HiLetgo 2個セット 51 AVR Atmega プログラムUSBasp USBASP 10ピン USB プログラマー 3.3V/5V ワット/ケーブル [並行輸入品])がありましたので購入してみました。

 

 

USBaspとLinuxPC(ubuntu18)を接続。

LinuxPCの場合はドライバは不要で、ArduinoIDEとAVR用のライブラリだけ導入すればすぐに使えます。

f:id:mnishikawa:20200320170625j:plain

USBaspとATTiny85の接続

 

今後よく使うかもしれないので、専用の変換アダプタを作ってみました。

USBaspとATTiny85のソケットをつないだだけのものですが、毎回ブレッドボードに線をつなぐ手間が省けて便利です。

f:id:mnishikawa:20200320230903j:plain

USBaspとATTiny85の書き込み用変換アダプタの自作

f:id:mnishikawa:20200320231004j:plain

USBaspとATTiny85の書き込み用変換アダプタの自作

 

私の場合、Ubuntu18の環境で、次の操作をしてすぐに書き込みができました。

(ほぼ自分用のメモです。)

 

 

AVRユーティリティ(avrdude)のインストール

 

 $ sudo apt-get install avrdude

 

ArduinoIDEのボードマネージャにボードをインストール

  • 「ファイル」→「 環境設定」の「追加のボードマネージャ」のURLに”http://drazzy.com/package_drazzy.com_index.json”を追加
  • 「ツール」→「 ボード」「ボードマネージャ」で ATTinyCore をインストール。

 

 

ArduinoIDEでブートローダーを書き込む

USBaspでPCとATTiny85を書き込めるように接続が終わったら、ブートローダーの書き込みです。tinyjoypadで遊ぶには、次のボード設定でブートローダーを書き込みます。

f:id:mnishikawa:20200321225613j:plain

ArduinoIDEでのボード設定
  • ボード:ATtiny25/45/85
  • Clock:16MHz(PLL)
  • 書き込み装置:USBasp

 

書き込みが完了したら下のメッセージ部に「ブートローダーの書き込みが完了しました。」と出ます。

f:id:mnishikawa:20200321225857j:plain

ブートローダー書き込み完了

 

tinyjoypadのゲームをダウンロード、ビルドする

tinyjoypadのソースと、I2Cディスプレイ制御のためのライブラリを導入します。

tinyjoypadプロジェクトから動かしたいゲームのソースをダウンロードしてきます。

ここでは、「Tiny Tris v2」をダウンロードしてきて、展開する例を示します。

 

ssd1306xledライブラリをダウンロード

tinyjoypadで使用するI2C接続OLEDのライブラリです。

githubよりzipでダウンロードしましょう。

f:id:mnishikawa:20200321230725j:plain

OLEDライブラリのダウンロード

 

Tiny Tris v2のダウンロードと展開

こちらのサイトよりTiny Tris v2のソースをダウンロードしてきて、展開します。

 

f:id:mnishikawa:20200321231010j:plain

TinyTrisのダウンロード

ダウンロードしたソースを展開します。

f:id:mnishikawa:20200321231058p:plain

ソースの展開

f:id:mnishikawa:20200321231115p:plain

ソースの展開

 

ArduinoIDEでのビルドと書き込み

まず、さきほどダウンロードしてきたソースをAruduinoIDEで開き、まずはOLEDライブラリをインクルードします。

f:id:mnishikawa:20200321231335j:plain

OLEDライブラリのインクルード

次に、tiny-trisのビルドと、ATTiny85への書き込みを行います。

ArduinoIDEのメニューの「スケッチ」→「書き込み装置を使って書き込む」を選択すると、ビルドと書き込みを行ってくれます。

f:id:mnishikawa:20200321231708j:plain

ATTiny85への書き込み

書き込みが完了すると、次のようなメッセージがでます。

 

f:id:mnishikawa:20200321231820j:plain

ATTiny85への書き込み完了

 

ブレッドボードでの動作確認

ATTiny85マイコンへの書き込みが完了したら、ブレッドボードで動作確認を行います。

tinyjoypadのそれぞれのソースには、回路図も付属しています。

TinyTrisの場合は次のような簡単な回路図がついています。

f:id:mnishikawa:20200321232114p:plain

TinyTrisの回路図

 

TinyTrisはアナログ入力で2つの抵抗値のみ判定しますが、インベーダーは可変抵抗で左右操作したり、一部回路構成が違うのでご注意ください。

つないでみた様子はこちら。

f:id:mnishikawa:20200320223424j:plain

ブレッドボードでの動作確認

 

I2C接続の有機EL液晶について

ここで使ってる液晶について。

SSD1306コントローラー(または互換コントローラー)搭載で、I2C接続のものなら動きそうです。

私の手元では、次の3つの商品で動作が確認できています。

  1. 0.96インチ 128×64ドット有機ELディスプレイ(OLED): ディスプレイ・表示器 秋月電子通商-電子部品・ネット通販
  2. KeeYees OLEDモジュール OLED LCDディスプレイ 0.96インチ I2C IIC 128X64 SSD1306 4ピン ホワイト 白 Arduinoに対応 Raspberry Piに対応 3個入り (白)
  3. ★1.3インチ★OLEDモジュール★I2C★ - aitendo

 

 

ケースに入れたゲーム機としての実装(その2以降で公開)

続きに記載します。

 

mnishikawa.hatenablog.com

 

 

まとめ

小型・省電力、低コストマイコン「ATTiny85」で小型ゲーム機を作る基本的な準備について記載しました。

この基本環境があれば、tinyjoypadで公開されているゲームで遊んだり、自分でゲームを作って公開したりすることができます。

ゲーム以外にも活用方法はたくさんありますので、小型でコイン電池でも動作する省電力デバイスを作りたい方は、是非ご参考に環境構築されてみてはいかがでしょうか。