Flash Cart について


(Nao) #1

コミュニティの多くの人々が知っているように、Mr.Blinkyによって開発された、"Flash Cart (ridge)"は、Arduboy用の周辺機器として完成しました。

pic001
Mr.Blinkyは、“もしFlash Cartに興味があったらPM下さい”、と述べました。
彼に問い合わせて、それをすでに試用されている人々もいるでしょう。

日本に住む私は、裏蓋関係の試作品の設計/生産等に協力して、そして、Mr.Blinkyから、Flash CartのPCBと主要パーツを譲ってもらいました。
それらは、私だけで独り占めするには多すぎる数の基板とパーツです。
もし、"Flash Cart に興味がある日本に住むarduboyユーザー"から要望があれば、Flash Cart の提供について対応したい、と私は考えました。
それが、Arduboyの新しいゲームやユーティリティの開発などにも役立てば、とてもいいと思ったからです。
日本に在住するarduboyユーザーで、Flash Cart に興味のある人々はいますか?
PM(Personal Message)を、私に送ってください。
送付等に関する相談のPMが私から送られるでしょう。

具体的には、以下のような手順でそれは提供されます。
・私に、PMを送ってください。
・私から、住所/氏名/送付物の確認などについての問い合わせのPMが送り返されます。
・それが確認されたら、Flash Cart は、日本郵便で、日本国内の貴方の住所へ発送されるでしょう。
・貴方にがそれを受け取ったら、同封された封筒で、未使用の日本の郵便切手350円分を私に送ってください。
その350円分の切手は、送料といくつかのパーツ等にについての費用です。
(郵送費用140円、送付用小箱+梱包費等36円、返信用封筒と切手90円、コネクタ2種60円、ネジ6本24円)

:10/27 11/17現在、以下の数のアイテムが用意されています。
・Flash-Cartキット:12セット 9セット
・Flash-Cart組立済み: : 4 3セット

なお、Flash-Cart試供品の提供は、私の手持ちがなくなり次第、終了します。

p.s. 私の日本語の文章がWebブラウザの翻訳機能と共に読まれる場合のために、私は文章を書き替えました。
おそらく、書き直す前よりはまともに翻訳されるようになるでしょう。
しかし、その結果日本語の文章が少し堅苦しくなっています。
I changed the sentence for my Japanese sentences to be read with the translation function of the Web browser.
Probably it will be translated properly before it is rewritten.
However, as a result, Japanese sentences are getting a bit stiff.


Flash cart(ridge)
(Nao) #2

<Flash Cart 試供品の内容と注意点>
私が提供できるのは、Flash Cart キット(またはその組み立て済み品)と、Arduboy裏蓋キットです。
・Flash Cartキット; Flash Cart基板+パーツ+ケース(3Dプリンタの出力品です/ネジ含む)
pic002
※表面実装部品の半田付けが必要とされます。
(組立済みのFlash-Cartも少々あります)

・arduboy裏蓋キット; コネクタ+裏蓋等一式(3Dプリンタの出力品です/ネジ含む)
pic003
※Arduboyの改造が必要とされます。
つまり、基板とコネクタへの配線、そして半田付け等が必要です。
配線用の材料はこのキットに含まれていません。

印刷された説明書は付属しません。
後述されるWeb上のドキュメント等を参照してください。
pic003-2

半田付けに関して、ある程度のスキルが必要です。
Arduboyを壊してしまうようなリスク等もあります。
それらについての保証、補償、責任等は私は負担できません。
それらの作業は、自己の責任において遂行してください。

3Dプリンタの出力品は、無料の試作品として提供されます。
試供品はPLAフィラメントを原料して出力されました。
それは、高温の環境には耐えられません。
それを、気温の高い自動車車内に放置したり、暖房器具の近くに放置すると、変形する可能性が高いです。

-----つづく


(Nao) #3

“Flash Cart (ridge)” について

それにいての詳細な情報や、今までの開発の経緯等については、コミュニティを参照してください。
Flash cart(ridge)
Arduboy custom bootloader
Arduboy replacement face/back plate
これらを全部読む尽くすのは簡単な事ではありません。
そこで、以下に、簡単なまとめを記します。

< Flash Cart (ridge) とは何か?>
arduboy用 Flash-Cartシステムは、Mr.Blinky によって開発されました。
それは、
・外付けフラッシュメモリ “Flash-Cart”
・ファームウェア(ブートローダ) - “cathy3k”
・PC上で使用する、ユーティリティ “flashcart-builder” と “flashcart-writer”
から成り立っています。

Flash Cartは、arduboyと互換機用の、SPIメモリカートリッジです。
それには大容量のフラッシュメモリが搭載されて、それには、数十~数百本ものゲームが格納できます。
そのファームウェアの機能により、arduboyの起動時にゲームをセレクトすることができます。
ハードやソフトに詳しい人は、たぶんその他の使い方も見つけられかもしれません。

< Flash Cart の詳しい情報はどこにある? >
勿論、Mr.Blinkyの github です。

-Flash-Cartの回路やデザイン


-Flash-Cart対応のファームウェア(ブートローダ) “cathy3k”

-Flash-Cart用ユーティリティ “flashcart-builder”, “flashcart-writer”

-----つづく


(Nao) #4

< Flash Cart を使うにはどうすればいい?>
Flash Cart を使用するには、以下の作業が必要です。
0). Flash-Cartを用意する(作る)
1). arduboy改造する
2). arduboyのファームウェア(ブートローダ)を書き換える
3). PC上でユーティリティを用いて、ゲームをFlash-Cartに転送する。


0). Flash Cartを用意する(作る)
Flash Cart基板の回路図も基板データも、Mr.Blinkyの github で公開されています。
つまり、だれでもこの基板を自分で作るのが可能です。
もしかすると、この先、それはシェアされたプロジェクトとなって、簡単に発注が可能になるのかもしれません。
それについては今は、それがどうなるのか分かりません。
今後、Mr.Blinkyからアナウンスがあるかもしれません。
基板の他には、下記の部品が必要です。
W25Q128 Flash memory (SOIC 8 pin)
TXB0104 レベルシフタ (SOIC 14 pin)
MCP1700 DCDCコンバータ (SOT23 3 pin)
0.1uF キャパシタ(1206) x 2 pcs
SKQGAAE010 タクトスイッチ(ALPS社製)-又は同型の物
12ビン femaleピンヘッダ(ピンソケット)

----つづく


(Nao) #5

1). Arduboy の改造。
Arduboyの外部接続I/Fは、その下端のUSB端子だけです。
しかし、中の基板の下端には、SPIやi2C等の端子が露出しています。
Flash Cartを使うには、そこに配線して、それらを外に引っ張り出すさなくてはなりません。


それについては、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"が必須です。

-----つづく


(Nao) #6

<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)

-----つづく


(Nao) #7

<おまけ- 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台揃うのか、という不安もあり、
他機種とつなげようとした場合、ちょっと心配なのでまだ実験してません。


(Chamekan) #8

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

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

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

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

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

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

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

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


(Chamekan) #9

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

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

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


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

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

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

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


(Chamekan) #10

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


2018-11-12%2010_30_45

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



(Nao) #11

おお、素晴らしいです。

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

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


(Chamekan) #12

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


(Chamekan) #13

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

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


(Nao) #14

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

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

mbook m1

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


(Chamekan) #15



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


(Simon) #16

I like that you flipped the code upside down.


(Nao) #17

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

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


(Pharap) #18

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


(Chamekan) #19

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

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


(Pharap) #20

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.