ちゃんとしたポップンコントローラを安く作る
2020-09-05 : 23:25
自作pop'n musicコントローラの制作
1. 作ったもの
まず今回作ったコントローラは以下の写真のものである。バネは三和160g(200gの2巻切り)、スイッチ(オムロン0.49N)
ボタンは中華製の格安ボタン
主にpms用であり、ps2には対応していない。
2. 費用と使用した道具
買ったものもの | 値段(送料込み) | 入手場所 |
照光式100mmボタン x9 | 2817(5395)円 | aliexpress |
type microB USBケーブル 1.8m | 500円 | Amazon |
木材(合板T2,MDF) | 1000円程 | ホームセンター |
バネ(三和200g) | 660円 | - |
マイクロスイッチ D2MV-01-1C3 | 1971円 | モノタロウ |
合計 | 6948(9526)円 | - |
使用した道具
ノコギリ |
くりぬくSAW |
金槌と釘 |
ジャンパーワイヤーとリード線 |
ドライバーとねじ |
3. 箱の用意
枠に使用する木材を用意する用意した木材は
MDF
70x30x5.5mm x2
T2
70X8X12mm x2
27.6X8X12mm x2
67.6X8X12mm x1
である。
2枚ずつあるT2の板を組み合わせ枠を作る。
天板に使用するMDFにくり抜く場所を書き、切り抜く。
寸法は「ポップン AC 寸法」で検索したものを参考にした。
T2で作った枠に天板を載せ、ボタンを置くと以下のようになる。
<img src=”/images/20200905/IMG_5091.JPG” alt="popncon"width = “90%” height = “90%” />
強度を高くするようにT2の枠の真ん中に木(67.6X8X12mm)入れ、横長の「日」の形にする。
この木を後で回路が通るように真ん中を少し削る。
天板と中に入れる木と枠を釘で固定する。塗装する場合は塗装後に固定する。
4. ボタンと回路の用意
今回の回路は単純であることとarduino内部のプルアップ抵抗を使用することにより抵抗が必要ないことにより、基盤を用意しない。ボタンのバネとマイクロスイッチを入れ替える。
購入当初のバネとマイクロスイッチは非常に固く使い物にならないため、交換する必要がある。
また、ポップンボタン(照光式100mmボタン)は打撃音が大きいため、静音化をした方が良い。
中華製ポップンボタンの改良化は気が向いたら別途記事にする。
今回制作したコードではマイクロスイッチの中の真ん中と下の部分を使用するため、リード線をはんだ付けする。arduinoに接続するため、ジャンパーワイヤーともはんだ付けする。
写真では真ん中にはんだ付けをしているが、下にも同様にはんだ付けをする。
5. arduinoの用意
arduinoの出力をキーボード入力としてコントローラを作成するため、HID機能が備わっているarduino leonardoを使用する。arduino microでも良いのだが、arduinoを直接枠組に取り付けようと思ったため、 leonardoにした。
arduino unoやmegaはHID機能がないため使用できない。
arduino leonardo↓
ソースコードは以下である。
#include "HID-Project.h"
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
NKROKeyboard.begin();
}
void loop() {
if(digitalRead(2) == LOW) NKROKeyboard.add('a'); else NKROKeyboard.remove('a');
if(digitalRead(3) == LOW) NKROKeyboard.add('b'); else NKROKeyboard.remove('b');
if(digitalRead(4) == LOW) NKROKeyboard.add('c'); else NKROKeyboard.remove('c');
if(digitalRead(5) == LOW) NKROKeyboard.add('d'); else NKROKeyboard.remove('d');
if(digitalRead(6) == LOW) NKROKeyboard.add('e'); else NKROKeyboard.remove('e');
if(digitalRead(7) == LOW) NKROKeyboard.add('f'); else NKROKeyboard.remove('f');
if(digitalRead(8) == LOW) NKROKeyboard.add('g'); else NKROKeyboard.remove('g');
if(digitalRead(9) == LOW) NKROKeyboard.add('h'); else NKROKeyboard.remove('h');
if(digitalRead(10) == LOW) NKROKeyboard.add('i'); else NKROKeyboard.remove('i');
NKROKeyboard.send();
}
arduinoに元から備わっているライブラリでは同時推し数に限界があるため、HID-Projectライブラリを使用する。void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
NKROKeyboard.begin();
}
void loop() {
if(digitalRead(2) == LOW) NKROKeyboard.add('a'); else NKROKeyboard.remove('a');
if(digitalRead(3) == LOW) NKROKeyboard.add('b'); else NKROKeyboard.remove('b');
if(digitalRead(4) == LOW) NKROKeyboard.add('c'); else NKROKeyboard.remove('c');
if(digitalRead(5) == LOW) NKROKeyboard.add('d'); else NKROKeyboard.remove('d');
if(digitalRead(6) == LOW) NKROKeyboard.add('e'); else NKROKeyboard.remove('e');
if(digitalRead(7) == LOW) NKROKeyboard.add('f'); else NKROKeyboard.remove('f');
if(digitalRead(8) == LOW) NKROKeyboard.add('g'); else NKROKeyboard.remove('g');
if(digitalRead(9) == LOW) NKROKeyboard.add('h'); else NKROKeyboard.remove('h');
if(digitalRead(10) == LOW) NKROKeyboard.add('i'); else NKROKeyboard.remove('i');
NKROKeyboard.send();
}
ライブラリの入れ方は検索すると出てくる。
このコードではボタンを押すことでa~iが出力される。キーコンフィグをa~iにすることで動作する。コードを書き換えて望みのキーにしても良い。
6. ボタンとarduinoの接続
制作した枠にarduinoを取り付ける。天板を切り抜いた時のものの上にarduinoを載せ、ねじで固定した。
ボタンをはめると以下のようになる。
arduinoの2~10ピンにマイクロスイッチの真ん中と接続したジャンパーワイヤーを接続し、下と接続したジャンパーワイヤをGNDに接続する。
GNDの数には限りがあるため、GND用のジャンパーワイヤーは2,3個にまとめておいた方が良い。
マイクロスイッチをボタンにつける。
arduinoにソースコードを書き込み、蓋をすれば完成である。
蓋は開けるように蝶番をつけた。
7. 塗装
塗装しなくても問題なく動くが、見た目を良くする事とMDFは水に弱い事から塗装を行う。塗装は専門のサイトを参考にした方が良いので、どのようにしたらどのようなものになったかを確かめる程度にしてほしい。 サンディングシーラーを表面に塗り乾いたら塗るを3,4回繰り返す。
#400番程度のサンドぺーパーで表面を軽く磨き整えた後、スプレーを表面に吹きかける。
スプレーも乾いたら吹きかけを3,4回繰り返す。

完全に乾かす。

枠に色をつけるため、マスキングテープを貼る。
金のスプレーを吹きかけ、マスキングテープを剥がし乾かす。
乾いたらニスを塗り乾いたらまた塗るを数回繰り返し、#1000番程度のサンドペーパーで表面を整えたら完成である。
8. 思ったこと
作ったコントローラはACと同じようにうまく動作した、しかし自分は47までしかクリアできないため、発狂でもうまく動くかは上級者に確かめてもらう必要がある。ポプコンは非常に高いが、自作すれば1万以内に収まるので作る価値はあると思う。
また、iidxやボルテと違いボタンのみであるため、制作も簡単である。
ただ、木材を切り抜く作業や多数のはんだ付けなどがかなり大変であった。
天板や枠を釘で止めたため、隙間が空き、ボタンを叩いた時に音が大きくなったりコントローラ自体が揺れることがあった。
そのため、天板と枠は釘と接着剤で隙間なく接着した方が良いと思った。