3年半ほど前に、BMSコントローラーを自作する記事を公開したが、嬉しいことにそれなりに多くの人の目に留まり、参考にして頂いているようである。嬉しいことではあるのだが、時間が経つと細かいところの稚拙さが恥ずかしくなってきたりするもので、改良をしてみることにした。
・建前はさておき
実のところ、実際に改良に踏み切った理由はもっとしょうもないもので、DPを始めてみようかなと思い立ち、たまたまそのへんに転がってた自作コンを使おうと思っただけのことである。2年くらい前にDAOコンを買ってから完全にお役御免で埃をかぶっていたので、メンテがてら改良をすることにした。
・問題が山積み!
まず第一に、自作コンをキーボードとして動作するように作ってあるというのが問題になる。多分LR2だとGamepadとキーボードの入力を同時に受けたりしてくれるかと思うのだが、現在使っているBeatorajaではどちらかの入力しか受けてくれない。したがって、DPをやろうと思ったら必然的に自作コンをGamepadとして動作するようにプログラムを書き換える必要がある。
第二に、配線の煩雑さと、知識・技量不足による施工の不適切さ・雑さが挙げられよう。この配線を見よ!
どの線が何の役割でどこに向かっているのかさっぱりわからない。よく取り違えずに配線したものだと思う。これをすっきりさせたいので、配線は1鍵盤につき1本のハーネスにまとめ、抜き差しを可能としたい。
また、スイッチやランプホルダーの端子との接続に用いるファストン端子(平型端子)も、実はサイズも見ずに買ったので、ガバガバだったりキツキツだったりしており、プレイ中にすっぽ抜けるなどトラブルの元となったので、規格を確認し適切なものを選択したい。
さらに、Arduinoマイコンボードとの接続も実に酷いもので、なんと導線をそのままピンソケットに突き刺していたのである。言語道断である。きちんとピンヘッダを使うようにしたい。
・材料をあつめる
やることが決まれば秋葉原にお出かけである。みんな大好き千石電商と秋月電子にお邪魔する。余談だが、地方在住だと割高なパーツショップに買いに行くか通販で数日待つかの二択だったので、こういうときは本当に上京してよかったと思う。
パーツリストは次の通り。
品名 | 型番・サイズなど | 個数 | 値段 |
---|---|---|---|
Arduino用ユニバーサル基板 | サンハヤト UB-ARD03 | 1 | 420 |
ファストン端子 | 187サイズ(幅4.75mm) | 18 | @10 |
ファストン端子 | 250サイズ(幅6.35mm) | 18 | @10 |
電線対基板ハウジング4P | Molex 5051-04 | 9 | @30 |
電線対基板ヘッダ(垂直)4P | Molex 5045-04 | 9 | @30 |
電線対基板ハウジング2P | Molex 5051-02 | 3 | @30 |
電線対基板ヘッダ(垂直)2P | Molex 5045-02 | 3 | @30 |
電線対基板ハウジング用端子 | Molex 5159TL | 42 | @10 |
熱収縮チューブ | φ4×2m | 2 | @319 |
耐熱電子ワイヤ | φ1.36mm(AWG22)×2m×7色 | 1 | 550 |
汎用整流用ダイオード | 1N4007 | 18 | @5 |
あとピンヘッダはたまたま余っていたので買っていないが、1x40で35円とかなので買い溜めしておくとよい。
・パーツ紹介
Arduino用ユニバーサル基板
実はArduinoのDigitalピンの7番と8番の間は0.15インチくらいの隙間があり、そのままだとピンヘッダを刺してもユニバーサル基板に刺さらないので、きちんとArduinoのピンの並びに沿って穴が開いているものが売られている。なぜ最初から0.1インチの整数倍の間隔にしなかったのか理解に苦しむ。
ファストン端子
スイッチとランプホルダーの端子と接続するための端子。写真左から187サイズ・205サイズ・250サイズ。今回はスイッチに187とランプホルダーに250を使った。
秋月で買ったのだが、めちゃくちゃ硬いので抜き差しも大変だし導線をかしめるのも大変だった。
電線対基板ハウジング・ヘッダ・端子
千石で買った。端子はバラでも売っているが、42個もいちいち数えてられないので100個で900円のやつを買った。半分以上余っているが。
熱収縮チューブ
配線がばらけると嫌なのですっきりさせるために使う。径は大きい方が通しやすいのでおとなしくφ4を買いましょう。ヒートガンがないのでドライヤー程度の熱で縮むものを選ぶ。
耐熱電子ワイヤ
自分はなんとなく7色入っているやつを買ったが、並走する配線はたかだか4本なので4色で十分である。しかも1色あたり2mでは全然足りないので配線の色がばらばらになって混乱の元になった。4mくらいあるやつを買いましょう。
汎用整流用ダイオード
大した電圧も電流もかからないし、整流できればなんでもいいので適当に選ぶ。たくさん使うので秋月で20本100円の1N4007をチョイス。
・作業開始
まずはピンヘッダをユニバーサル基板にはんだ付けする。
続いてハーネスを作る。導線の被覆を剥いで圧着する。
結構細かい作業なので写真のバックにぼんやりと写っているような細線用の電工ペンチがあると捗る。Amazonで1200円とかで売ってるので持っておいて損はないだろう。
圧着した端子をハウジングに差し込むと、パチッという音がして抜け防止のツメがかかる。
ひたすら同じことを繰り返す。
全部終わったらこのタイミングで熱収縮チューブをかぶせておこう。両側に端子をつけてしまうと通しようがなくなる。
今度はユニバーサル基板に回路を作成していく。基本的な回路の構成は以前の記事と全く同じで、回路図は下に示す通りである。
ただ今回はハーネスにする都合上、密集させざるを得ないので、レイアウトはよく考えないと詰む。ピンの割り当ては下の図のようにしてみた。
基板全体のレイアウトは次の通り。Arduinoから引いてくる部分はどうしても電源やGNDのラインをまたがなくてはならないので、赤線で示した部分は被覆電線で配線する。
ひたすらはんだ付けする。結構混雑するのではんだ不良やブリッジに注意だ。
スクラッチ側の基板は前回と変更はない。配線をハーネス化し、ArduinoのVDD(5V)とGND, A1, A2にヘッダをつけて接続する。
あとはハーネスの鍵盤側にファストン端子をかしめて差し込むだけの簡単なお仕事である。スイッチとランプホルダーで端子のサイズが違うので、ケーブルの色などを参考にしつつ付け間違えないように注意しよう。端子をつけ終わったら熱収縮チューブをドライヤーで炙って縮ませれば完成だ。全体はこのような感じになる。
前と比べると見違えるほどすっきりした。
ランプを点灯させてみる。
ちゃんとすべて点灯している。ランプの色がばらばらなのはご愛敬だ。
・スケッチを書き換える
ハード側が問題ないことを確かめたうえで、ソフト側に着手することにしよう。
以前はHID ProjectのNKROKeyboardインスタンスを用いることでArduinoにNキーロールオーバーのキーボードとして振舞ってもらったのであった。HID Projectはこれに限らず様々なHID (Human Interface Device) として振舞うことができ、Gamepadもその1つである。そこで今回もHID Projectのお世話になることにする。
基本的にコンピュータにどういうデータを送るかという部分以外はすべて同じなのでスケッチの全体を載せることはしない。NKROKeyboard
の機能を使っていた部分が、それに対応するGamepad
の機能を使うように変わるだけである。
具体的には、鍵盤部分はpress
およびrelease
関数を使うことで、Gamepadのボタンの押し離しとして認識させることができる。スクラッチの部分は、xAxis
関数を用いてジョイスティックの左右の傾きとして認識させる。
スケッチの全体はGitHubに上げておいたので、自由に見に行っていただきたい。
・ドッキング
ArduinoにUSBケーブルを挿してコンピュータと接続し、「デバイスとプリンター」からきちんとGamepadとして認識されているかを確認しよう。Gamepadアイコンが出ていれば大丈夫だ。
右クリックしてプロパティを表示し、鍵盤とスクラッチの反応を確かめてみよう。鍵盤を押したら対応する数字が赤く光り、スクラッチを回したら十字が左右に動くようであれば正常に動作している。
ここまで確認したらBeatorajaを起動してキーコンフィグでボタンを割り当てる。
実際にプレイしてみよう。
大丈夫そうだ。
以上。かなり整備性に優れた設計に作り替えることができて大変満足した。電子工作は楽しい。