ラベル Tinyjoypad の投稿を表示しています。 すべての投稿を表示
ラベル Tinyjoypad の投稿を表示しています。 すべての投稿を表示

2021年11月28日日曜日

Tinyjoypad を作ろう!02 名作ゲームを手のひらサイズで楽しもう!

 

 前回に引き続いて、楽しい電子工作「TinyJoyPad」を作ってゆきましょう!

 

 本体の電子工作が完了し、AudinoIDEの設定も済み、USBaspとブレッドボードの準備もOK、という段階まできました。

 

 ではいよいよ、ゲームのプログラムを選びます。


 https://www.tinyjoypad.com/

 

のサイトから「Attiny85」のコーナーを覗いてみてください。

 

「パックマン」「インベーダー」「ピンボール」「テトリス」など誰もが知っているアーケードゲームの名作が並んでいます。

 昔はこのサイトからそのままプログラム(スケッチ)がダウンロードできたのですが、現在は表立っては自粛中のようですね。(著作権がらみ?)

 でも、Githubにはちゃんとスケッチがありますので、ご安心ください。

 

https://github.com/search?q=tinyjoypad 

 

 Github内を”Tinyjoypad”で検索すると、いろいろな人が開発した関連プログラム(スケッチ)が並んでいます。 


 さて、Tinyjoypadには兄弟機がいくつかあって、ボタン数を減らした、より小さい「ATTiny Arcade」や、ジョイスティック仕様+EEPROMの上級版「Tiny Handheld」などがあります。

 そのTiny Handheldの開発者さんのところに、すべての機種向けのスケッチが収録されています。

https://github.com/Yevgeniy-Olexandrenko/tiny-handheld

フォルダ内部をいろいろ見ていると、いろんな機種のプリント基板の写真などもあるので、面白いですよ。

 

=========

余談

 Tinyjoypadのサイトを見ると、次の5つのプロジェクトが載っています。実はこれらは互換性が少ない「いとこ・はとこ」みたいな機種に当たります。

 

■ Attiny85 → Attiny85チップを使う「Tinyjoypad」

■ Arduboy → ATmega32u4を使う、より上位機種(互換性なし)

■ Attiny10 → Attiny10という最小クラスのチップを使う簡単なゲーム

■ Arduino → Arduinoを使った関連工作

■ ESP8266  → 中国のメーカーが作ったWifiモジュールなのだけれど、なんとCPU等が載っているので、AVRのようにプログラムして動かせる。それをつかったゲーム機のプロジェクト。


========

 

 ArduinoIDEで書き込みするスケッチは「.ino」という拡張子になっています。

 

 まずは手始めに「Tiny invaders」を書き込んでみましょう。

https://github.com/Lorandil/Tiny-invaders-v4.2 


 Zipファイルを解凍すると、ArduinoIDEで読み込めるのは「Tiny-invaders.ino」というファイルです。

 私の場合は、書き込み設定は以下のようにしてみました。


■ ツール → ボード 「Attiny85」

■ クロック 「16Mhz」

■ LTO 「Enabled」

■ 書き込み装置 「USBasp(Attinycore)」


 先にブートローダを書き込んでから、同じように本体プログラムを書き込みすると良いようです。

 書き込み時にUSBaspのバージョンが古いよ、なんてエラーが出ることもありますが、気にせず進めば書き込み完了までArduinoIDEが知らせてくれます。


 あとはATtiny85のチップをゲーム機のICソケットに載せて電池と電源を入れれば!

 


  じゃじゃーん!びっくりするくらい意外とあっさり動きます。すごい!

  書き込み時や最初の動作時にいろいろトラブるかな?と思っていましたが、ほとんどトラブルらしいこともなく動いたので逆にびっくり!

 

※ 実は最初の書き込みでも動いたのですが、動作が明らかに遅かったので、あれ?と思いました。どうやらクロックが8Mhz動作だったようなので、16Mhzに設定して再書き込みしたら、バッチリでした。


 というわけで、誰でも簡単に楽しめると思うので、ぜひみなさんもトライしてみてください!

 


 


2021年11月27日土曜日

Tinyjoypad を作ろう!01 ゲーム系電子工作の決定版!

 

 いきなり結論ですが、ハマってます!これはめっちゃ面白い!

 

(Tiny joypad)


 Attiny85というAVR系マイコンチップを使ったゲーム機の作例が、ここ数年で世界的にちょっとしたブームになっているのですが、私も作ってみました。

 

 ゲーム機を作るというのは、なかなかハードルが高そうに思うのですが、かなり少ない部品点数と、かなり安い金額で「古典アーケードゲームのクローン」が作れてしまうのにはびっくり!

 世界の先輩たちの開発力に、かなり感動します。


オリジナルのサイト

https://www.tinyjoypad.com/


■ AVRマイコン ATtiny85を使った携帯ゲーム機

■ 有機ELを使った見やすい画面(なのに安い!画面パーツ500〜600円)

■ 総金額2000円程度でできる!

■ 電子工作の技術レベルでは初心者レベルでOK。

■ スイッチ・液晶・ブザー・電池ケースくらいしか使わない。あとはワンチップ。

■ インベーダーゲームほか、多数の古典アーケードゲームが移植されている。

■ マイコン入門に最適。Arduinoと高い互換性。


==========

 

<1> 基盤とパーツの入手

 秋月電子等で大半は入手できます。C型などのベーシックなユニバーサル基板にも組めます。

  プリント済基板(PCB)も販売されています。今回はピコソフトさんの互換基板を使ってみました。

 

互換基板 ORANGE-mono1

http://www.picosoft.co.jp/ORANGE-mono1/index.html 

  自作しても難易度は低いのですが、基板のせいで動かないのか、チップへの書き込みミスで動かないのかわからないと困るので、まずはリファレンス機がてら基板を利用させていただきました。

 2機目からはバンバン自作できると思います。また、別に、


工作魂さん

https://twitter.com/porokin


も互換基板を頒布なさっています。ヤフオクなどをチェック!

 

 こちらは、いわゆるC型基板と同じサイズ。ピコソフトバージョンよりさらに小さいです。

 工作魂さんは、さらにコンパクトなキットも作っておられます。

 

 回路図は

 https://www.tinyjoypad.com/tiny-joypad-shematic

 にあります。


○ATtiny85-20PU×1  ○ ICソケット8ピン×1 ○タクトスイッチ×5  

○0.96インチ128×64ドット有機ELディスプレイ(OLED)×1

○スライドスイッチ×1

○ 圧電スピーカ×1

○電池ソケット×1 ○電池CR2032×1

○抵抗10KΩ×1

○ 抵抗22KΩ×2

○抵抗33KΩ×2

○抵抗82〜91KΩ×2

○基板

 

が最小構成です。部品数も少ない!




<2> 書き込みハードとソフトの準備


 書き込み方法はいくつかあります。Arduinoとブレッドボードで組んでもいいです。

私はUSBaspを使ってみました。要するにAVR書き込み器ですね。

 

 左に写っているUSBに挿せる小さいのがUSBaspです。 10ピン <-> 6ピン変換を使っています。右側はブレッドボードです。

 

RESET○ 1 8 VCC

         2 7 SCK

         3 6 MISO

GND     4 5 MOSI

 

で配線してください。
    

 プログラムを書き込むソフトはArduinoIDEです。

https://www.arduino.cc/en/software 

 私はLinux版64ビットと32ビットを使っています。




<3> ArduinoIDEの下準備とセッティング

 ArduinoIDEをインストールしておきます。Windowsの場合は「arduino.exe」が実行ファイルとのこと。

 Linuxの場合は圧縮ファイルを任意のフォルダに解凍すると「arduino」というシェルスクリプトがあるので、それをクリックするとそのまま動きます。

 


 

 おなじフォルダに「install.sh」というスクリプトがあるのですが、それを実行するとデスクトップにアイコンができたり、メニューにArduinoIDEが入ったりして便利になります。

(ただ、リンクができるだけです)


 今回、有機EL(I2C接続のもの)を使うので、そのドライバをプログラムの中に取り込んでおく必要があります。

 

 ※OLEDには4ピンのものと7ピン〜のものがあります。4pinがI2C通信で、pin数が多いのはSPI通信です。

 

 

そこで、


 ssd1306xledというディスプレイ制御ライブラリがGithubにあるので、それを利用させてもらいます。

 

https://github.com/Defragster/ssd1306xled

 

「Code」のところからZIPファイルがダウンロードできます。

 ArduinoIDEの面白いのは、ZIPファイルのままライブラリを取り込めるところで、

 

「スケッチ」→「ライブラリをインクルード」→「ZIP形式のライブラリをインクルード」から未解凍のまま取り込むことができます。

 

 

 もうひとつ、ATtiny85のチップを取り扱うには、「ボードマネージャの追加」が必要です。

これは「ファイル」→「環境設定」の追加のボードマネージャのURLに次の文言を入力します。

 


 ”http://drazzy.com/package_drazzy.com_index.json”

 

これで、SpencKonde氏が公開しているGithubの設定ファイルを使えるようになります。

 

オリジナルは

 https://github.com/SpenceKonde/ATTinyCore/

です。

「ツール」→「ボード」→「ボードマネージャ」と進むと、ATtinycoreを選択できます。

(上の写真ではすでにINSTALLEDになってます)

 このとき、Linuxの32ビットだとエラーが出る場合があるので、

https://kotaro-yoshiie.blogspot.com/2021/11/arduino-ide-arduino-ide-1816-avrdude.html
 

の記事を参照して回避してくださいね。



 さて、今回はここまで!次回はゲームソフトを選んで、チップに書き込みするところまでやります!


(続く)



2021年11月24日水曜日

Arduino 系自作ゲーム機 総まとめ Tinyjoypad/ARDUBOY

 

 前回もちょこっと、古い言い方で言えば「マイコン」がらみの話を書きましたが、うちの息子がハードウエアのプログラミングをしてみたい!というので、Arduinoを触り始めています。

 AVRはすっぽ抜けていて、電子工作はPICで止まっていたヨシイエですが、久々に勉強中。まあ、相手が子供なので、ゲーム関連が面白いかな~と思って調べているとすごいことになっていますね!

 

 昔話をすれば、1997年に「トランジスタ技術」に掲載された「PIC16C84で作る ワンチップ・ブレークアウト・ゲームの製作」という記事が、当時電子工作界隈に衝撃をもたらしました。

ワンチップ・ブレークアウト・ゲームの製作(当時の記事) 

 この作例が凄いのは、いわゆるテレビに繋ぐ「ビデオ信号」を送出してゲームを作っているところです。液晶表示機にデジタルで出力しているのではないのが、草創期のビデオゲームに通じます。

  私もその前後からPICにハマったくちです。

 

 さて、昔話は脇へ置いておいて、ここ数年で自作ゲーム界隈はめちゃんこ楽しいことになってます。特に初心者向けといわれるマイコンボードの「Arduino」近辺・AVR利用での作例が多く、ふた昔前のビデオゲームがほぼ再現されているという恐ろしさ!

 これはぜひ、作ってみたい。


==========



◆ TinyJoypad


 
https://www.tinyjoypad.com/


 AVRワンチップマイコン Attiny85を使った自作ゲーム機です。部品点数も少なく、かつ、シンプルでわかりやすいハードウエアに、往年の名作ゲームが載ります。

 テトリス・インベーダーゲーム・パックマンなど、70~80年代の名作アーケードが移植されています。

 自作でも楽勝でパーツを集められるのですが、初心者はピコソフトさんから出ている基板を中心に組むのがおすすめ。

http://www.picosoft.co.jp/ORANGE-mono1/index.html 

↑基板売ってます。キットにはなっていませんがパーツリストもあるので、部品あつめは難しくありません。


https://github.com/kosaku-damashii

↑工作魂さんは、ヤフオクなどで不定期にキットを販売なさっています。



◆ Arduboy

 

 https://www.switch-science.com/catalog/7157/

 スイッチサイエンスほかで国内でも入手しやすいArduino系既製(自作)ゲーム機。

ATmega32u4使用。

 メモリ性能が上がっているので、より容量が大きいプログラム・ゲームが載ります。世界中のファンが、ゲームの作例をアップしているので

https://www.tinyjoypad.com/arduboy

https://arduboy.ried.cl/


 ゲームがたくさんしたいねん!という人はArduboyを作りたくなるかも。

(ただ、基本原理や、プログラムそのものをいじってみたい人はTinyjoypadのほうがベーシックなのでとっつきやすいと思います。

 Arduboyは本来、チップごとにゲームを書き込んで本体のICソケットに刺すのですが、ArduboyFXという上位機種があり、そちらはROMにめちゃくちゃたくさん(250作品?)のゲームがすでに書き込まれています。

 ただ、FXは1万円くらいするので、たかが8ビットゲームの詰め合わせに1万円出すのなら、ファミコン互換機のほうがマシかもしれません。あくまでも「作りたい!」というのなら、無印Arduboyでもいいと思います。(ただし、無印は国内では多くの店で終売になっています)

 誤解があってはいけませんが、当然Arduboyも自作可能です。2~3千円もあればできると思います。

 

 

◆ AttinyArcade

 


https://webboggles.com/attiny85-game-kit-assembly-instructions/ 

 

 Attiny85使用のTinyJoypadをさらにシンプルにしたマシンです。Tinyjoypadは、十字キーを持っていますが、AttinyArcadeは2ボタンのみ。

部品点数があまりにも少なく、ハードウエアとしては逆に凄いです。

「AVR1つ、ボタンスイッチ2つ、電池ケース1つ、 抵抗2つ、圧電ブザー1つ、ディスプレイ1つ」

これだけで動きます。

そのかわりできるゲーム数は少ないですが、新しい自作ゲームを開発する余地がありそうです。



◆ TinyHandheld

  https://github.com/Yevgeniy-Olexandrenko/tiny-handheld

 

 こちらもTinyJoypadの派生機種です。十字キーをジョイスティックにして、 外部EEPROMを加えたもの。

 上位互換機といったところでしょうか。

 

 

◆ Gamebuino


 

2017年ごろ、秋月電子でも売っていたArduino系ゲーム機です。今は国内販売なさそう。

本家はバージョンアップしてる??METAが登場。

https://gamebuino.com/ 

 

 互換機の作例はありました。

https://ht-deko.com/arduino/gamebuino_clone.html

Arduino Pro Mini を使っているらしいので、UnoなどでもおなじみのATmega328Pですね。
 
記憶媒体としてマイクロSDを使っているので、それ関係の基盤やチップが必要になってきます。
 
自作するには難易度が上がりそうです。

 

 

◆ 番外編 Attiny10/13利用のゲームなど

  

https://www.tinyjoypad.com/attiny10 

https://protopedia.net/prototype/592

 Lチカのグレードアップ版としてAttiny10や13を使った「サイモン」ゲームの作例がたくさん挙がっています。こちらはLED表示で、ディスプレイを使わないので、見た目のワクワク度は下がりますが。

 

 世の中はすごいもので、Attiny10で インベーダーゲームを作っている人もいます。昔のPICブレークアウトを思い出しますね。

https://www.youtube.com/watch?v=aq30EdgSpOY 

 こちらはビデオ出力です。


==========


8ピン

Attiny13 8bit/20MHz プログラムメモリ:1kB EEPROM:64B RAM:64B

Attiny85 8bit/20MHz プログラムメモリ:8kB EEPROM:512B RAM:512B


Arduboy

ATmega32u4 8bit/16MHz プログラムメモリ:32kB EEPROM:1kB RAM:2.5kB

(Arduino Leonardoに搭載)


Gamebuino

ATmega328P 8bit/20MHz プログラムメモリ:32kB EEPROM:1kB RAM:2kB 

(Arduino Unoと同じ)

 

 

==========

 プログラムをちゃんと読みながら、ハードウエア、ソフトウエアともに作ってみたい!という人には、


「Tinyjoypad」か「AttinyArcade」

 

あたりから始めるのがよいと思います。TinyJoypadは、著作権まわりの処理のためか、ダウンロードできるプログラムのある場所が現在隠されているのですが、探せば転がってます。