記事としては正直ほぼ需要ないと思うんですが、単にチャレンジをしたかった
背景として、私IIDXのこの手のコントローラを最近2度買ってます
- メルカリ経由で古いDAOコン(2012年くらいの。FP 7とかいうやつかな)
- 通常のルートでPHONEIX WANの割と新しいの
2度買ってるのは、ダブルやりたい……じゃなくて単に古いDAOコンのスクラッチの反応がかなり悪かったからです。それでも練習する上で最初のうちは良かったんですが、……スクラッチ曲にまったくついていけないので厳しいなぁ、ということに。サムスクどころかチェケラにすらついていけないんだYO!
当時は電子工作も全くでしたし、そのタイミングでもそのDAOコンとしてはすでに5年以上前のコントローラなんで、最新の基板に付け替えるということもできませんでした。
これやね。
ただ、時が経ちまして今はArduinoもRasPi Picoも一旦手元で経験してますし、DDR手コン(ついでにクソポップンコンにダンマクカグラコン)をつ打ったノウハウもあるので、ボタン部分の実装で困るってことはなくなっています。
古いDAOコンを捨てようかどうしようか考えていたとき、ふと、このスクラッチ部分の構造を推測して基板部分を自作すれば良いことに最近きづきました。うーん、だいぶ強気だな。
まぁ、多分ロータリーエンコーダーかなんかなのよ
DAOコンの素晴らしい点は筐体開けるの簡単なこと……ということで見てみます。
ボタン部分は何の疑問もありません。これ、DDR手コンのときと全く同じタイプのマイクロスイッチ方式です。ゲーセン筐体もこれやね。
2つに分かれている基板はどうでも良くて、問題はスクラッチ部ですが……
多分「光学式エンコーダー」ですね
光ではありませんが大変似たものを秋月でも見ます。ロータリーエンコーダーです。
やべぇなロータリーエンコーダは私使った経験がない
というわけでロータリーエンコーダーから調べることにします。
回転を検出するために位相のずれた2つの信号を駆使する、という感じです。
DAOコンのエンコーダ部分ですが「KS123-62Y1000K」とあります。
調べた限りではまずもって量産品の類ではございません。困るな
ただ、スリットを通過させるデバイスが2個見えます。なるほど方式はわかりませんがこの2つでスリットの通過タイミングのズレを検出する立派な光学式エンコーダとみました。
(追記 2024-03-23)
2つ並んでいるデバイスですが、たぶん「透過型フォトインタラプタ 」というやつですね
これを2つ並べてスリット幅を工夫することでA・B型のロータリーエンコーダと同じ挙動をさせることができるのだと予測します。
まぁそれはええんですが、調べてみて思ったのが「均等にスリット入った期待した大きさの円盤」の方が多分調達は難しい、ということですね。そういうのを受注生産している町工場っぽい会社を見つけましたが、この用途で「量産品」にはまぁ確かにならないよね……
どれがVCCでどれがGNDなんよ……
ここからが困る。データシートないと4本ある配線の区別がつきません。基板見ても分からんし。
とりあえず使われているコネクタ部は「XH」であることがわかりました。手元でもともと試しているのはPHなので大きさ全然違いますが方式については勉強していたので4ピンのものを調達してブレッドボードの上で調べるのもいけます。
あとは4本のどれがどれかなー……わからん orz
そもそも動作電圧もはっきりわからないんですよねぇ。USB給電だしDC-DCコンバータっぽいのもないから5Vでしょうけど、何かデータシートとかなにもないと私のレベルではつらい……
やってるうちに「えーと、もしかして壊れた?」みたいに焦りました。LED方式なら可視光出て欲しいんですけど出ない。これもしかしてやっちゃったやつか???
ということで本来の使い方で給電してくるくる回していたところ……
ええと、スクラッチの操作で何故かMac上のsteamが反応してんな。一応、壊れてないな……
……給電している状態でテスターで電圧測ればええのか!!
……VCCどれかわかった(σ・∀・)σ
(左から2番目とは……)
VCC分かればあとの3本は手探りでええです。適切な抵抗は……運だな
Aruduino側の実装は上の記事のやつをコピったものです。ロータリーエンコーダーのプログラムは昔と今のArduinoでかなり違うようで若干注意が要ります(古い記事のライブラリは使えません)。
手元のロータリーエンコーダーで試した時と比べると、信号の変化が穏やかなせいでか、チャタリングとかのハードウェア・ソフトウェア対応を全くせずに、きれいに順方向と逆方向でカウンタが増減するのを確認できました。
そして、写真の構成(センサー + Arduino Nano Every)でシリアルに文字を出すレベルでは遅延は一切感じません。以前遅く感じたのは、やはり、というか古い基板の実装上の問題のようです。2012年のものだから仕方ないね。
これで、理論的には基板作れるところまでは来たと言えます。やったね。
技術的興味は満たせましたが、実際にDAOコン改修するか……というとうーんどうかな。
すでに2台目にもっと上等なのを持っていること、最近あんまりIIDXやっていないこともあって、ここから作り込むの本当にやるかちょっと迷うところです。
(蛇足ですがこの光学式エンコーダーだと当然ながらゲーセンのLigtening Modelみたいにスクラッチの硬さは選べません。あれは特許技術らしいです)
もし、あえてこの古いDAOコンを実践で使えるレベルに改修することを考えると……
何らかの方法でボタンとロータリーエンコーダーを処理するところをやりたくなります。思いつく中ですと、多分Revive USB Microあたりが一番簡単と思われます。
ちょっと遡って、もともと私が最初のDDRの手コン作ったときって、Pro MicroもAruduinoもRaspberry Pi Pico (+ GP2040) も知らなかったので、Revive USB Micro使ってました。宣伝に「ロータリーエンコーダーにも対応してます」と書いてあって、当時「そんな恐ろしい仕組みの使い方わからないよ」と日和ったのを覚えています。そこでごく単純にボタン入力を設定するところだけやって逃げたんですが、……ああ、ええと、ロータリーエンコーダーってIIDXとかSDVXのためにあるのね。学びがありますね。
※ Revive USB、Picoとかで作り込むのと比べると明らかに高いですし、ボタン(デジタル)の処理であればPico・Pro Microあたりの方が高機能にしやすい感じがあるので、最近は全く選んでません。ただ、ロータリーエンコーダー処理を他のマイコン系でスムーズにやりこめるかは分からんです。私のやる気があれば次の研究課題になります。
Pro Microはプログラミングも一切不要なのでその意味でもやるとなったら設定は楽だと予想されます。
DAOコンをメルカリで買ったのは2022年末頃のようです。当時一切できなかったことが掌握できているのはちょっと嬉しいかもしれんね。
なお、ここまでIIDXのコントローラに熱を上げるのだからさぞIIDX練習していると思われるかたもいらっしゃるかもですが、CHECKING YOU OUT(A) こそクリアしたものの、IIDXは全体的には一向に上手くなってません。
本末転倒感がすごいんだYO!☀
(追記)
上のやつを続けてみたんだけどおそらく一部理解が足りていないのかうまくいかず。途中経過だけメモって別のことやる〜
まず簡単なところでボタンの方。手コンではLEDに配線していないのだけどDAOコンは当然配線しているので、せめて「押したら点灯する」を考えた。押下をトランジスタのベースにつけて5V給電で良いとして抵抗どうするか。結論としてはボタン部分のLEDの手前に20Ωくらいの抵抗がついているので外にあらためてつける必要はない。もちろん付けても良いんだけど光量が減る。光量まで話題にするのか……
DAOコンで感心したのはケーブリング。XHの端子を介して交換をできるので、既存の基板を迂回することも容易に可能。振り返って自分の手コン見ると「うわぁ……」ってなる。これよ。
ケーブルの対応もわからんし絶縁対策ものごっつ雑だし、そういうところを介しての学びを得た。素晴らしいね(何が
(ちなみにこの手コンはLEDの光が見えないようになっているのでそっちの配線はOptionalでそもそも良い)
ターンテーブル部が(A・Bな)ロータリーエンコーダーっぽいのはわかったのだけど肝心のRevive USBがロータリーエンコーダーっぽい取り扱いをしくじっている。これ、(光学式エンコーダーでもなく)普通のロータリーエンコーダーでも判定が粗雑なので、何かおかしげ。
GP2040-CEにロータリーエンコーダーを取り扱う仕組みはなさそうなのでマイコン2つ……かなぁと思ったが、信号の取り扱い方が下手くそでもう少し試行錯誤というか、基本的な理解を深めてからやったほうが良さそう。実はこの部分でプログラミングほっとんどしないから digitalWrite() の機微とか delay() と割り込みの関連とか、そういうのがあまりにも足りてない感じ。select()どこだー(違う
上の方法だとロータリーエンコーダーとしては機能しているげだけどチャタリング的な部分も含めた機敏なスクラッチを実現するのがよくわからんのと、Revive USBの11・12番にボタンとして信号を認識させるのにもあんまり成功してない。多分電子工作の本質的なところ(電圧電流接地など)で何か間違っている予感がする。
こういうときは試行錯誤の対価がすごく減ってしまうので、他の経験込で「あっ」と戻ってこれるタイミングまでは一旦逃げることにした。今回DAOコンに戻ってきたときのように「今ならできるかも」という感じがないときに攻めるのがより適当でしょうね。必須のタスクということでもないし……
(あと、作業スペースは広く取りたい……)
んで、やってて繰り返し思うこととして、一部の界隈は「雑に作る」言うけど、IIDXみたいな音ゲーでこういう「こうきう」コントローラ(含むアーケード筐体)を取り扱う場合って、ある種の「官能性」も大事なんよ、って話があると思っている。これが工作に対しては(電子と離れた)本系統じゃない拘りを要請するので、普通のルートでの電子工作じゃなくなってっちゃう。削るためのリューターすでに3つ持ってるからな、私。結論、電子工作としても若干、本質的でない部分でハードル高いところにあるなー、と思ったりする。
いや、ゲーマーからするとそっちが本質なんだYO!☀
押したときのライトがしょぼいとしょぼいし、スクラッチの反応が「微妙に」悪いならもうゲームとしては成り立ってない†。ついでにいえば、やはりなんとなく触れるだけでも、筐体側はアクリル板やアルミとかの方が何か「気持ちいい」わけ。
若干脱線して本業だと、私が扱っているところじゃないんだけど産業向け用途のハードウェアとその上のマイコンの話を隣接する人たちがしていて、こちらはコネクタ部の微細な抵抗すら議論の的になっているようだった。当然なんとか研究所行って耐電圧みたいな試験やって報告書書いてる。「雑」とは真逆の路線が自分のスタイルにものすごく強い影響を与えている。
個人的にはそういう方が本系統で正しい「電子回路」という気はするので尊敬もするし、仮に「雑に作る」ところでも(事実、DDRの手コンは「雑」な作りだった)そういう要素は一部でも学びたいよなぁ……なんていう妙な気持ちがある。
ゆえに、上の通りにマイコン2つ並べるのはすでに「何か違う」ところを感じるし、「そこまでやるんだったらATMega4080なりRP2040なりを使った回路を起こそうぜ……」という気持ちに近くなる(互換ボード作ってみたくなるよね)
ただレベル的に、そもそもごく基本的な回路図すらきちんと読めないんだけどな!!!