Flash Cart について

1). Arduboy の改造。
Arduboyの外部接続I/Fは、その下端のUSB端子だけです。
しかし、中の基板の下端には、SPIやi2C等の端子が露出しています。
Flash Cartを使うには、そこに配線して、それらを外に引っ張り出すさなくてはなりません。
pic004
それについては、Arduboyの交換用の裏蓋を3Dプリンタで作る、という解決方法があります。
その詳細については、Thingiverse の PDFのドキュメントを参照してください。
https://cdn.thingiverse.com/assets/65/45/a3/40/01/readme-CasingPartsForFLASHCART_20180909.pdf

2). arduboyのファームウェア(ブートローダ)を書き換える。
Flash Cart を活用するために、改造したArduboy には、
Flash-Cart対応のファームウェア(ブートローダ) "cathy3k"が、必要とされます。
( https://github.com/MrBlinky/Arduboy/tree/master/cathy )
Arduinoやその互換機に慣れている人は知っていると思いますが、
Arduino-IDEにおいて、 “ツール --> ブートローダ を書き込む” (arduino as ISP)という機能が役に立ちます。
pic005

3). Flash-Cartにゲーム等を転送したりする方法。
それについては、PC用に2つのユーティリティ(Pythonのスクリプト)が用意されています。
“flashcart-builder”…いくつものゲーム等の*.hexファイルを、1つの*.binファイルに纏めるユーティリティ
“flashcart-writer”…上記の*.binファイルを、arduboyに接続したFalsh-Cartに転送するユーティリティ
これらのユーティリティについては、
https://github.com/MrBlinky/Arduboy-Python-Utilities
を参照すれば、使い方やサンプルが見つかります。
※githubに注意書きがあります。
"flashcart-writer"は、USB-シリアルを経由してFlash-Cartにデータを送り込むため、"pyserial"が必須です
"flashcart-builder"は、タイトル画像などのために画像処理を行うため、"pillow"が必須です。

-----つづく

1 Like

<Arduboyの改造についての詳細>
前述したように、Arduboyはその下端のUSB以外の外部I/Fを持っていません。
Flash Cartのために、I/Fをが増設されなければなりません。
そのために、『SPIとかの線を引っ張ってきて、I/Fが付けられる裏蓋を3Dプリンタで作る』と、いう試みが行われました。

Arduboy replacement face/back plate

また、Flash-Cartについても、シンプルな形状のケースが製作されました。
それらのデータは Thingiverse で公開されています。
–> https://www.thingiverse.com/thing:2853120

*** 9/06/2018 : Update ***
-addition of casing parts for Mr. Blinky’s Flash Cart system.

この改造により、Arduboyの厚さは約2倍になってしまいます。
しかし、Arduboy上端に、SPIやi2CのI/Fが備わります。
そして、ファームウェア書換え等についての結線が容易になり、Flash-Cartが装備出来るようになります。
そのほかにも、もし、i2Cのデバイスが製作されれば、それが装備出来るでしょう。

改造の詳細は、thing:2853120 の PDFのドキュメントを参照して下さい。
https://cdn.thingiverse.com/assets/65/45/a3/40/01/readme-CasingPartsForFLASHCART_20180909.pdf
ただし、このPDFについては、追記されるべき下記の2点があります。

追記1). 文中には、ネジについて、M1.6が推奨されていますが、M1.7も推奨されます。
むしろ、M1.7のネジが入手しやすい場合があります。

なお、Flash-Cartに使用している、2本のネジ(M1.6 L5mm ヘッド2.4mm径推奨) は、
秋葉原の西川電子部品(株)で購入したものです(100個入り400円)。
pic008
また、改造arduboy の裏蓋に使用している、4本のネジ(M1.6 L4mmまたは 5mm ヘッド3~3.7mm径推奨) は、
現時点では、株式会社ウィルコの、下記のどちらのネジを用意しています。
型番 FX-1740E (低頭精密小ねじ M1.7 L4mm) (100個入り400円)
型番 FX-1750E (低頭精密小ねじ M1.7 L5mm) (100個入り400円)
pic009

追記2). PDF文中には、『arduboyのLiPoバッテリーは交換必須』とか書かれていますが、部品を工夫すると、バッテリーを交換しなくて済みます。
下記のArduboyコミュニティに、この件に該当するpost があります。
Flash cart(ridge)

-----つづく

2 Likes

<おまけ- i2Cデバイス>
改造Arduboyには、i2Cの I/Fが備わります。
いくつかのi2C対応カートリッジ?が試作されました。

その1). 秋月AE-BMX055-(加速度/Gyro/磁気コンパス-9軸センサーモジュール) カートリッジ。
http://akizukidenshi.com/catalog/g/gK-13010/
9軸センサー BMX055 に DCDCとレベル変換回路まで載ってます。
pic010
Arduboyを傾けたり、回したりするようなゲームとか、そういうのに使うのもいいのですが、
しかし、これは少々高価なので、もう少し安い選択がいいと思います。
これを半田付けしてしまうのは惜しいので、ICソケットに装着してます。
agif001

その2). MPU-6050(GY-521) -(加速度/Gyro-6軸センサーモジュール) カートリッジ。
これは、DEVELOPMENTで、Keyboard_Camper さんが使用している物だと思います。

これが、元々はどこのメーカーの設計/製造/販売なのか、よくわかりません。
通販だとこれは、2~300円位で売られているようです。
秋葉原だとaitendoでは475円で売られているみたいです。
pic011

その3). EEPROM カートリッジ。
シリアル2線(i2c)EEPROM、24LC64/256/512等、
以前から、arduinoにこの手のEEPROMをつなぐ、という試みは数多く見受けられます。
24LCxxxだと2.5V~5.5Vで動作するようなので、arduboyのi2Cに直付けしてもなんとかなるはず。
pic012
面クリ型のパズルとか多階層ダンジョン系ゲームでも作る場合、EEPROMにデータを…とか思いますが、私はそんなまともなゲームとか作ったことはありません。
言うは易く行うは難し…

その4). 対戦ケーブル(未製作)。
i2Cだから、SDAとSCL(とGND)をつなげれば通信できるような気がします。
しかし、改造arduboyが2台揃うのか、という不安もあり、
他機種とつなげようとした場合、ちょっと心配なのでまだ実験してません。

6 Likes

@chame (Chamekan) です。
今回、Flash Cart のセットをひとつ譲っていただきました。

Flash Cartおよびケースを開発された、@Mr.Blinky さん、@n602 (Nao) さんに感謝します。

いま、Flash Cartの工作や設定をやってる途中ですが、全部終わってからだと時間がかかるため、途中経過の報告をときどきさせていただきます。

とりあえず、Flash Cartの半田付け、およびArduboyに端子をつけ裏蓋のケースを組み込むところまでやりました。
バッテリは、せっかくなので手持ちのやや大容量な850mAhのLiPoに交換してみました。
とりあえず、未設定のArduboyの電源を入れて普通に起動することは確認しました。
わたしは電子工作初心者なんですがそれでも甘くみつもっていて、予想していたより案外苦労しました(^_^;)。

残り、Firmwareの書き込みや、Flash Cartの書き込みが残っています。
半田付け等にミスがあった場合、またチェックややり直しが発生するかもしれません。

いろいろ進めていくうちに、送っていただいたキットがあまりにも万全に揃えてあったので驚いています。
たとえば、ネジを買わなくてはとか、もしバッテリを交換しないのなら部品を切らないといけないんだなと予習してたんですが、よく見ると全て万全に揃っていました(^_^;)。
お心遣いに感謝します。

ケースの感想ですが、いろいろ考えられててよくできてるなあと感心しています。
厚さが増すものの、これはこれなりに手にしっくりくる大きさだなあと。
これで、SPIやI2Cやシリアルの端子もきれいに取り出せてすばらしい。

また、進展がありましたら、ご報告させていただきます。

3 Likes

(チェック後、すぐ撮影。その後Flash Cartにケースを付けました。)
fc1

(!注意 失敗していたときの配線で、正しい保証無し。イメージ写真です。)
fc2

その後もついつい設定を続けてできました!
Flash Cartからゲームを切り替えできるようになりました。


Firmwareは、こちらの、 Arduboy homemade packageの設定を利用し、Arduino IDE + USBaspでやりました。
最初うまくいかなかったんですが、まえにつかってたときにUSBaspのジャンパを3.3V設定にしてたのに気付いて5Vにしました。逆向きの間違いじゃなかったのが幸いでした(^^;)。
初心者なので、そういうチェックポイントがいい加減なのでした。
その後配線もやり直したので、写真の配線が正しいかどうか未確認で、イメージ写真です(^
^;)。

そういえば、USBaspで一回失敗したあと、Arduino as ISPでもやって失敗でした。なんでかな。
あとで冷静に考えてみます。
その後、USBaspに戻って成功しました。

いやあ。すばらしい。すごい完成度です。
感想はおってまた詳細に書こうと思います。

@Mr.Blinky さん、@n602 (Nao) さん、どうもありがとうございました!

3 Likes

ブレッドボードで簡単にハードの実験ができるように。


2018-11-12%2010_30_45

その後、コンパクト化(ブレッドボード時から配線変更)。


6 Likes

おお、素晴らしいです。

可変抵抗的な物を付けてあえて回転制限を生かすとか、
ロータリエンコーダー的な物で、くるくるするとか、
いろいろ活用できそうですね。

やはりブロック崩し(Break out)は、Joy Stickやボタンではなく、パドル。
私が初めてゲームセンターでプレイしたゲームは、パドル操作のBreakoutやPongもどきでした。
(space invadersやPac-Man的な偽物がパドル操作になっていた物もあったような気がしましたが)
Breakoutや、centipedes、Asteroids的なゲームには、パドル操作が欲しくなります。
個人的にはtrack-ballも付けたいところですが、いいパーツが見つかりません。
昔日のSEGAマウスのように、マウスをひっくり返して…と思ったら光学式ばかり…

1 Like

https://www.amazon.co.jp/dp/B0020RS7H4 (品切れ)
20100105185527
2010年頃に超コンパクトなトラックボールをmbook m1といういまの大型スマホ+キーボードくらいの大きさのPCにつけたことがあります。
これの系譜が残ってたりしないかな?

2 Likes

ちなみにパドル化したブロックくずしは、かなりいいですね。
そして、しばらく忘れていた感覚でもあります。
パドルでゲームをする機会はあまりなくなったので、パドル専用ゲーム機というのはニッチな需要がありそうな気がします。

パックマンのパドル版ってしらなかったんですが、あんがいおもしろそう。要するに絶対的方向じゃなくて、車を運転するみたいな相対的方向転換になるわけですね(^_^;)。

2 Likes

超コンパクトなトラックボール

なるほどそういうのがありましたか、ちょっと探してみます。
ところで、

mbook m1

ああ、@chameさんも、 お持ちでしたか… :sweat_smile:
kjnsh-pm1
(バッテリーが完全に×になっていて起動しませんでした…)

2 Likes



フリスクケースに入れてみました。
なんと、短辺が12ピンソケットの幅にマッチし、高さはバックプレート付のArduboyとマッチします。

4 Likes

I like that you flipped the code upside down.

1 Like

なんとFRISKが?
flash-cart-FRISK-01

あ、ぴったりですね…
(実は3DプリンターによるFlash Cartケースは不要だった :scream: )

3 Likes

I think there’s a command you can send to the screen to vertically invert it.

Yes like this:
https://mlxxxp.github.io/documents/Arduino/libraries/Arduboy2/Doxygen/html/classArduboy2Core.html#a8125a3776ac990b56f7225c9419a527d

Arduboy arduboy;
arduboy.flipVertical(true);
arduboy.flipHorizontal(true);

1 Like

Interestingly, if you use flipVertical the screen flips instantly,
but if you use flipHorizontal then it won’t work until the screen has been redrawn.

1 Like

Yes, this is noted in the datasheet (for command A0/A1):

This command only affects subsequent data input. Data already stored in GDDRAM will have no changes.

As is the fact that a vertical flip takes effect immediately (for command C0/C8):

Additionally, the display will show once this command is issued. For example, if this command is sent during normal display then the graphic display will be vertically flipped immediately.

I should probably add these facts to the Arduboy2 library documentation.

1 Like

Wow. I didn’t know this.

1 Like

今回、Flash-Cartのキットを提供いただきました。

早速改造に着手し、Arduboyの改造は完了したのですが、
ブートローダの更新で行き詰っています。

よろしければ、具体的な手順を教えていただけませんか。
(他スレッドも参照にしているのですが、文量が多く。。)

わたしは初心者なので、あまりちゃんと解答できませんが、とりいそぎ。

まず、書き込みソフトの種類 × 書き込み機材の種類でいっぱいやり方があります。
どういう手段でやられたのか、あるいは、Bootloaderの更新がまったく初めてなのかで、説明を開始するポイントが変わってくると思います。

ソフトの種類
・Arduino IDE
・コマンドラインのavrdude
・Atmel Studio

機材の種類
・AVR ISP mkII
・USBasp
・Arduino as ISP

わたしは、Arduino IDE + USBaspでやってます。
Naoさん(@n602)はソフトは不明ですが、おそらくArduino as ISPですね。
わたしは初心者なのであらゆるケースでは説明できないです。
機材を持ってない場合、まずそれを選定して入手する必要があります。

手段をどうするのか、どのレベルからの説明が要るのかをまずはっきりさせる必要があります。

もしよくご存じの場合、一番問題になるのはボードの設定だと思います。



上は英語版ですが、Arduino IDEの設定の「追加のボードマネージャーのURL」に以下のURLを入れ、ボードマネージャーからArduboyのボードを追加すると、ボードのBootloaderにCathy3Kが選べるようになります。
https://raw.githubusercontent.com/MrBlinky/Arduboy-homemade-package/master/package_arduboy_homemade_index.json

2 Likes