どらめも

なんでもないことをかきます

ProjectDIVA専用コントローラを自作する

まえがき

大学で電子情報機器学(BDM(ビックリドッキリメカ))っていう電子機器作ったら単位上げるぜ!!って授業があり、今度初音ミクprojectDIVA MEGA39sがでるので、学科民のぺちとDIVAコンを自作することにしました。それ前受注生産してたくね?って話ですが、なんと35k+taxです(は????????????switchより高いけど?????????)ということでお金がないので泣く泣く自作することになりました........
ところで、DIVAコンといえば最初に出てくるのが松尾ぽるさんの自作本ですけど、これ売ってたのC94でboothにもpdf含めてもう在庫とかなかったんですよね。そこで動画を頼りに頑張ることになりました。始めた時点での経験値はarduino使ったことないけど?とかpsocってなに??って感じでした。(試されたググり力)今回はその記事になります。
P.S.
時は1月2日、大本営発表があり、pdfが無料公開されました。対戦ありがとうございました。ここから下はただの駄文になったのでブラウザバックをおすすめします。

f:id:doradorasuki:20200108113700p:plain
きりたんはいいぞ

結局

完成しませんでした........
多分1から電子部分やり直すか凍結ですね......理由は後述します。

振り返り

とりあえず出来事を時系列に沿って振り返りたいと思います。

  • 10月下旬
    DIVAコンを作ることが決まる(DMより) ↓
    電子工作無知なのでサーベイの開始

    草案の作成

    f:id:doradorasuki:20200504113021j:plain
    DIVAコン原案

    この頃はgimxを用いてswitch/ps4に対してコントローラの信号を出そうと考えていました。arduino leonardoを使うとキーボードとかの出力を出すことができますスゴイ。

  • 11月下旬
    とりあえず触ってみなきゃということでタッチセンサ部分に使おうと思っていたpsoc4100sを購入しました。

    f:id:doradorasuki:20200504114618j:plain
    psoc4100sの実験をしてる図

    この時点でひとつのちに大きな影響を与えるミスをしました。psocへの配線としてピンヘッダ+ジャンパーケーブルを採用してしまったことです。デバッグ簡単になるしこれでいいかな〜と思いつきでやりましたが......やめた方がいいです。ゲームコントローラとしては最悪ですぐ抜けます、あと認識したりしなかったりするのでケーブル直にはんだ付けしましょう!! 他にいい方法あったら知りたいのでぜひDM等で教えてください。

  • 11月下旬~12月上旬
    学科でポケモンが流行る
    関係なさそうですがかなり重要です。 学科民のこんなツイートが飛び込んできました。


    ここから学科ではポケモン自動化ブームが起こることになります。(は?)詳細は伏せますが、switchのあるコントローラをハックしてarduinoからその信号を出せるようにしたライブラリがあり、arduino(HID機能持ち)をまるでswitchのコントローラのように動作させることが可能です。つまり、Aボタンを押したn秒後にBボタンを押すなどあらかじめ操作を組み込むことも可能です。
    これにより、DIVAコンのgimx部分が削れました。遅延問題を心配していたのでこれは大きな知見でした。遊びって大事ですね〜

  • 12月14日
    psocarduino leonardoの使い方をある程度理解したので某nithmのエミュレーターを使って遊んでみました。

    ここで感じたのが某nithmのノーツはスライド部分と画面が1対1に対応していてプログラム的にも組みやすいなあということです。(ほんとか)DIVAさんフリック、しかも2つ同時とかがあるのでどうしようと考えていたところでした。

  • 12月25日
    世間的にはクリスマスですが僕は相変わらず引きこもってコントローラ格闘していました。

    f:id:doradorasuki:20200504120013j:plain
    試作その1

    この画像のおかしいところわかるでしょうか?
    アルミニウムにははんだがつきません
    いやしらんがな(無知)ほんとにこれで実際にアルミと線をはんだ付けしようと試みたので笑い者もいいところです。

  • 12月29日
    この日はコミケに行くつもりがなかったのでお家で作業です。

    銅テープって高いですね。2kくらいしました。やっとスライダーができました、締め切りまであと2週間弱です。だからジャンパーケーブルを使うなよ...

  • 1月10日


    ジャンパーケーブル等が原因?でいくつか無反応箇所がみられましたが、(そこをうまく回避して)発表会は乗り切ったので単位もしっかり優がきました。
    ここでは触れてませんがtetris99とかでも動作確認は取れたので、とりあえずα版完成ということにしました。
    ここからテスト期間に入ったのでコントローラはあまり触っていません。

  • 春休み
    とりあえず無反応をどうにかしないことにはスライド処理は実装不可なので線を一回配線し直したり(ピンヘッダははんだ付けしてしまったのでとれない)しましたが、Aを直したらBが抜けるみたいな感じで全部治し切るのは無理でした....ピンヘッダ+ジャンパーケーブルはやめましょうね。

  • Now
    某ウィルスのせいで春休みに帰省したきり東京に戻れず、DIVAコンの話が風化しそうだったので現状の整理、知見の確認も兼ねてブログを一度書いてしまうことにしました。

知見まとめ

自分のため、そしてこれから電子工作とか始める方のために今回詰まったポイントをまとめておきます。

  • ジャンパーケーブル、ワニクリップはデバッグにとどめておく
    授業中も口を酸っぱくしてこのことは言われていましたが、いうて大丈夫だろう(どうして)と思って作業を進めていましたが、これらを使っているといざ完成を目指そうとするときに確実に後悔するので早い段階で使うのをやめた方がいいです。特に音楽ゲームのコントローラとか作る場合はなおさらです。筐体への振動負荷は自分の思っているよりも何倍もすごいです。なんでも抜けます。

  • arduino IDEは安定板を使う
    それはそうなのですが、何を血迷ったか僕はarduino nightlyを使っていてシリアルモニタが頻繁にフリーズする問題と格闘することになっていました。(安定板使ったら治りました)

  • usb-ttlケーブルはちゃんとしたものを使う
    usb-ttlケーブルの格安品を使ったら毎回windowsを起動するたびにドライバの当て直しをするはめになってストレスが結構ありました。少額なのでケチらないようにしましょう。
    ところでpsocデバッグとしてttlケーブルでで出力をteratermごしに見ていたのですが、usbからいい感じに情報とる方法がドキュメント読んだ感じある気がしたのでやり方知ってる方いたらぜひ教えてほしいです。

  • アルミニウムにははんだはつきません
    それは、そう

  • スイッチのプルアップとプルダウンはしっかり考慮する
    知識としては持っていましたが、実際やるのを忘れてなんで動かないんだろう...を最初の方結構やっていたので気を付けましょう。あと、スイッチに関してはオムロンサイトが役立ちます。

    psoc creatorについて

    ここから以下はpsoc creator(psoc関連のIDE)に関する忘備録なので興味のない人は読み飛ばしてくださって結構です。
    psoc関連はなぜかドキュメントがかなり分散していてとてもやりにくかったので忘備録として詰まったところを書いておきます。

  • 基本
    TopDesign.cyschで使いたいモジュールを配置し、buttonsample.cydwrでモジュールに対してピンを割り振り、main.cに実行プログラムを書いていきます。この3つがあればとりあえず動きます。

  • buildと書き込みは別
    書き込みの時に自動buildしてくれそうな雰囲気を醸し出していますが、このIDEにおいてbuildと書き込みは別物です(少なくともデフォルトでは)

  • guiと実際のソースコードの関連について
    このIDEでは使っているとわかると思いますが、TopDesign.cyschで使いたいモジュール(タッチセンサのCapSenseやUART用のモジュールなど)をgui的に追加し、buildすると、そのモジュール用の関数が自動生成されてmain.cからそのモジュールの操作関数を呼べるようになります。これどこかドキュメントに書いてあるんですかね、見つからなかったのですが()
    関数の命名規則として、

<モジュールの名前>_<ドキュメントに書いてある関数>  

となります。もう一度言います、書き込みではなくビルドしないと予測変換にも出てこないしその関数は使えないので気を付けましょう。初心者殺しすぎひん...?

f:id:doradorasuki:20200504132259j:plain
参考画像

  • CapsenseTunerにおいて使用不可になる問題
    突然connectをするとエラーが出るようになり(エラーメッセージ的になんらかのidが書き換わっているらしい(画像ないです))その後そのプロジェクトでは一生Tunerが使用不可になります。
    未解決問題かつ深刻なので知見大募集しています。スクショはそのうち追加します...

  • Capsenseについて
    Sensing Elementsの数をいじると検出する数を変更できます。(Capsenseをダブルクリックすると出てくる)物理センサ1つに対して10検出とかもできますが、バグるので1物理センサに対して1センサにした方がいい気がします。

あとがき

今回初めての電子工作ということで色々調べながらやることになって、結果的に完成はしなかったのですがコントローラ自作に関することをいろいろ知れたのはよかったです。
今回の敗因としては経験者の言うことを素直に聞かなかったことですね。もうジャンパーケーブルはこりごりです。再開するとしたらpsocの基盤がだいぶやられてる気がする?ので基盤の買いなおしからかなと思っています。(ところでarduino leonardoって最初からジャンパーケーブルさすようになってますがあれどうやって固定するんですかね)
あと家にbeatmaniaの専コンとか転がってるのでそれの改造とかもしたいなあと思っています。
ここまでお読みいただきありがとうございました!

有用?リンク集