ATTiny85を使った小型ゲーム機の製作(その1:ATTiny85の準備)
Arduinoを使って電子オルゴールをいろいろ開発してきましたが、小型化を突き詰めるともう少し小さくて消費電力の低いマイコンを使いたくなります。Arduinoで使われているAVRマイコンの下位ラインナップを調べると、ArduinoIDEで開発できて、手頃なマイコンがいくつかありそうです。
特にATTiny85は10ピンの小型・シンプルな設計で、最低限のリソース・I/Oを備えており、安価で入手もしやすいマイコンです。秋月で1個130円(2020年3月時点)で売ってます。
最終的には、こんな感じの小型ゲーム機を作りました。
完成したゲーム機の動画はこちら。
ATTiny85を使った小型ゲーム機の製作(スペースインベーダー)
面白そう!と思った方は、是非チャレンジしてみてください。
目次
- 目次
- ATTiny85
- tinyjoypad
- ATTiny85の開発環境整備
- ArduinoIDEでブートローダーを書き込む
- tinyjoypadのゲームをダウンロード、ビルドする
- ケースに入れたゲーム機としての実装(その2以降で公開)
- まとめ
ATTiny85
特にATTiny85は10ピンの小型・シンプルな設計で、最低限のリソース・I/Oを備えており、安価で入手もしやすいマイコンです。秋月で1個130円(2020年3月時点)で売ってます。
ネット上に実例も多く工作もしやすそうです。
tinyjoypad
面白いのが「tinyjoypad」プロジェクトです。
ATTiny85にI2Cの液晶をつなげれば簡単に小型ゲーム機が作れます。
ソースはGPLv3で公開されていますので、自由に活用できます。このソースを参考にオリジナルゲームを作ってまた公開し、オープンソースでの開発に貢献するのも楽しそうです。
ATTiny85の開発環境整備
まずは、ATTiny85の開発環境整備です。
このマイコンの書き込みには、AVRマイコンの書き込み環境が必要になります。
Arduinoがあれば、書き込み用プログラムのソースが公開されていますので、ブレッドボードなどで線をつなぐだけで書き込みが可能です。
こちらのサイトが丁寧にまとめていただいているのでとても参考になりました。
一番簡単なのはUSBaspを使うことです。
今回、Amazonで2個で770円のお手頃なUSBasp(HiLetgo 2個セット 51 AVR Atmega プログラムUSBasp USBASP 10ピン USB プログラマー 3.3V/5V ワット/ケーブル [並行輸入品])がありましたので購入してみました。
USBaspとLinuxPC(ubuntu18)を接続。
LinuxPCの場合はドライバは不要で、ArduinoIDEとAVR用のライブラリだけ導入すればすぐに使えます。
今後よく使うかもしれないので、専用の変換アダプタを作ってみました。
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で遊ぶには、次のボード設定でブートローダーを書き込みます。
- ボード:ATtiny25/45/85
- Clock:16MHz(PLL)
- 書き込み装置:USBasp
書き込みが完了したら下のメッセージ部に「ブートローダーの書き込みが完了しました。」と出ます。
tinyjoypadのゲームをダウンロード、ビルドする
tinyjoypadのソースと、I2Cディスプレイ制御のためのライブラリを導入します。
tinyjoypadプロジェクトから動かしたいゲームのソースをダウンロードしてきます。
ここでは、「Tiny Tris v2」をダウンロードしてきて、展開する例を示します。
ssd1306xledライブラリをダウンロード
tinyjoypadで使用するI2C接続OLEDのライブラリです。
githubよりzipでダウンロードしましょう。
Tiny Tris v2のダウンロードと展開
こちらのサイトよりTiny Tris v2のソースをダウンロードしてきて、展開します。
ダウンロードしたソースを展開します。
ArduinoIDEでのビルドと書き込み
まず、さきほどダウンロードしてきたソースをAruduinoIDEで開き、まずはOLEDライブラリをインクルードします。
次に、tiny-trisのビルドと、ATTiny85への書き込みを行います。
ArduinoIDEのメニューの「スケッチ」→「書き込み装置を使って書き込む」を選択すると、ビルドと書き込みを行ってくれます。
書き込みが完了すると、次のようなメッセージがでます。
ブレッドボードでの動作確認
ATTiny85マイコンへの書き込みが完了したら、ブレッドボードで動作確認を行います。
tinyjoypadのそれぞれのソースには、回路図も付属しています。
TinyTrisの場合は次のような簡単な回路図がついています。
TinyTrisはアナログ入力で2つの抵抗値のみ判定しますが、インベーダーは可変抵抗で左右操作したり、一部回路構成が違うのでご注意ください。
つないでみた様子はこちら。
I2C接続の有機EL液晶について
ここで使ってる液晶について。
SSD1306コントローラー(または互換コントローラー)搭載で、I2C接続のものなら動きそうです。
私の手元では、次の3つの商品で動作が確認できています。
- 0.96インチ 128×64ドット有機ELディスプレイ(OLED): ディスプレイ・表示器 秋月電子通商-電子部品・ネット通販
- KeeYees OLEDモジュール OLED LCDディスプレイ 0.96インチ I2C IIC 128X64 SSD1306 4ピン ホワイト 白 Arduinoに対応 Raspberry Piに対応 3個入り (白)
- ★1.3インチ★OLEDモジュール★I2C★ - aitendo
ケースに入れたゲーム機としての実装(その2以降で公開)
続きに記載します。
まとめ
小型・省電力、低コストマイコン「ATTiny85」で小型ゲーム機を作る基本的な準備について記載しました。
この基本環境があれば、tinyjoypadで公開されているゲームで遊んだり、自分でゲームを作って公開したりすることができます。
ゲーム以外にも活用方法はたくさんありますので、小型でコイン電池でも動作する省電力デバイスを作りたい方は、是非ご参考に環境構築されてみてはいかがでしょうか。