Nintendo Switchをちょっと楽しくするスイッチ

前回でようやく自分が納得できる形になってきた『Nintendo Switch用のエフェクトーン』改め『Nintendo Switchをちょっと楽しくするスイッチ』(※「エフェクトーン」は株式会社バンプレストの登録商標です)。Nintendo Switch本体をドックに出し入れするときに効果音を鳴らすだけのものですが、鳴らす音声は簡単に差し替えられるので、使う人のアイデア次第ではそれなりに楽しめるものになるのでは、と思っています。

以下、今回の工作の仕上げとして、『Nintendo Switchを(中略)スイッチ』を作るための手順をまとめていこうと思います。また、自分としては初の試みですが、もし必要な方がおられれば、部品あるいは完成品をお売りするということもやってみたいと思います。

1. 具材の準備

th_effectone-pcb_4

必要なものは上の写真のものが全てです。一つずつご説明していきます。

制御基板です。Trinketは通常のArduinoと比べると若干癖がありますが(特にコードの書き込み手順)、ダイレクトにMicro-USB接続できて、かつとても小さいのが良いところです。3.3V版と5V版が存在しますが、ここでは5V版を使用します。

効果音(MP3ファイル)の再生に使用します。DF Playerは安い分、たまーに不良品が混じっていたりしますので、不安であれば何個か買っておいた方がよいと思います。これまで10個ぐらい使ってきましたが、1個だけ動いてくれないものがありました。

また、MP3ファイルの保存にMicro SDカードを使用します。2曲分の容量があればいいだけですし、速度も要求されないので、とにかく使えりゃいいレベルのSDカードで大丈夫です。一応、上で紹介しているSDカードはDFPlayerで動作確認済みです。

それから、次の2つは、どちらか一つがあればOKです。

もしくは

前者の距離センサを使うと、Nintendo Switch本体には特に何も取り付けずに効果音を鳴らすことができます。ただし、価格がやや高めです。後者のリードスイッチを使うと、価格は抑えることができますが、Switch本体に磁石パーツを取り付ける必要があります。

あとは、以下の部品が必要です。

これらは基本的に秋月の通販で手に入ります(各部品のリンクは参考です)。

それから、部品を組み付けていく基板ですが、

th_effectone-pcb_3

これは自前で作成しました。これを作るに至った経緯とどうやって作ったのかは、次回改めて記事に致します

th_effectone-pcb_16

最後に、Nitendo Switch のドックに取り付けるときのカバーです。これは、自分で3Dデータを作って私物の3Dプリンタで出力したものです。

先ほどの基板とカバーについては、追加で作ることが可能ですので、もし必要な方がおられましたら販売することが可能です。これについては、記事の最後でまたご説明致します。

2. ソフトの書き込み

部品を組み立てていく前に、先にTrinketにプログラムを書き込んでおきます。

TrinketはArduino IDEで開発が可能ですが、プログラムを書き込むためにはArduino IDEにパッケージを追加する必要があります。パッケージを追加する方法については、こちらをご参照ください。また、Windowsを利用されている方はドライバーのインストールも必要なようですので、該当の方はこちらもご参照ください。

パッケージを追加した後のArduino IDE上でのボード・書き込みツールの設定方法については、こちらをご参照ください。

それから、書き込みは赤色LEDが点滅しているとき(=USBを挿した後10秒間ぐらい、もしくはTrinket本体のボタンを押した後10秒間ぐらい)しか受け付けてくれないので、注意が必要です。おそらく何度かTry&Errorをする必要があると思います。

書き込むソースコードは以下になります。なお、実行にはDFPlayer Mini用のArduinoライブラリが必要になりますので、必要に応じてこちらからダウンロードしてArduino IDEに追加しておいてください。

#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>

#define IN_SOUND  1
#define OUT_SOUND 2

#define VOLUME_1 10
#define VOLUME_2 15
#define VOLUME_3 20
#define VOLUME_4 25
#define VOLUME_5 30

#define OPEN_CLOSE_PIN 0
#define LED_PIN 1
#define VOLUME_PIN 2
SoftwareSerial mySerial(3,4); // RX, TX

uint8_t last_open_close_state = HIGH;
uint8_t open_close_state      = HIGH;
uint8_t last_volume_state     = HIGH;
uint8_t volume_state          = HIGH;
uint8_t volume = VOLUME_3;

void setup () {  
  mySerial.begin (9600);
  mp3_set_serial (mySerial);
  mp3_set_volume (volume);

  pinMode(OPEN_CLOSE_PIN, INPUT);
  pinMode(VOLUME_PIN, INPUT_PULLUP);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
}

void loop () {        

  open_close_state = digitalRead(OPEN_CLOSE_PIN);
  if(last_open_close_state == HIGH && open_close_state == LOW){
    mp3_play(OUT_SOUND);
  }else if(last_open_close_state == LOW && open_close_state == HIGH){
    mp3_play(IN_SOUND);
  }
  last_open_close_state = open_close_state;

  volume_state = digitalRead(VOLUME_PIN);
  if(last_volume_state == HIGH && volume_state == LOW){
    digitalWrite(LED_PIN, HIGH);
    switch(volume){
    case VOLUME_1: volume = VOLUME_2; break;
    case VOLUME_2: volume = VOLUME_3; break;
    case VOLUME_3: volume = VOLUME_4; break;
    case VOLUME_4: volume = VOLUME_5; break;
    case VOLUME_5: volume = VOLUME_1; break;
    default: volume = VOLUME_3;
    }
    mp3_set_volume (volume);
    delay(100);
    digitalWrite(LED_PIN, LOW);
  }
  last_volume_state = volume_state;

  delay(20);
}

3. 効果音の設定

効果音の設定にArduino IDEは不要で、単にSDカードのトップに”mp3″というフォルダを作成し、その中にSwitch本体がドックにセットされたとき用の音声ファイル(名前”0001_in.mp3″)と、Switch本体がドックから抜かれたとき用の音声ファイル(名前”0002_out.mp3″)を置くだけです。

th_effectone-pcb_15

こんな感じです。ファイル名は必ず”0001_in.mp3″と”0002_out.mp3″にしてください。Switch本体をドックに入れたときだけ、もしくは抜いたときだけ音を鳴らしたいときは、該当する方のMP3ファイルだけを残して、片方を削除してもらえばOKです。

4. 組み付け前動作確認

これで準備は整ったので部品の組み付けに入っても良いのですが、基板への半田付け後に「TrinketやDF Playerが実は不良品でした」となったら部品を取り外すのは大変ですので、ブレッドボードをお持ちの方は、余裕があれば一度ブレッドボード上で部品を配線してみることをオススメします。もちろん、既に使用したことがあって不良品でないことが確認済みの部品を使用する場合は、この手順は不要です。

th_effectone-pcb_17

回路図はこんな感じで、

th_effectone-pcb_10

実際にブレッドボードに配線するとこんな感じになります。距離センサを使う場合は、距離センサのGND, VIN, OUTを、TrinketのGND, USB, #0にそれぞれ繋ぎます。

th_effectone-pcb_5

リードスイッチを使う場合は、リードスイッチの二本の線をTrinketのUSBと#0に接続します。極性は特にありませんので、どちらをどう繋いでも構いません。

それぞれ、TrinketにUSBで給電して、以下のように動作確認ができればOKです。

 

 

なお、動作確認後にブレッドボードから部品を取り外すとき、DF Playerの取り外しには注意が必要です。結構しっかりブレッドボードに挿さってしまっていると思いますので、SDカードをつけたまま、そこに指を引っ掛けて持ち上げようすると、SDカードのソケットの方が先に外れて壊れてしまう可能性があります(壊しました)。

5. 部品の組み付け

あとは、基板上に部品を取り付けて、半田付けしていくだけです。どこに何を配置するかは迷うことは少ないと思いますが、 TrinketとDFPlayerの向きだけは注意してください。

th_effectone-pcb_6

これで概ね完成です。

th_effectone-pcb_7

裏側に出てしまっているピンヘッダの余りは、最後にカットしておきます。

無事に組み付けられたら、動作確認しておきましょう。

 

6. Nintendo Switchへの取り付け

最後に、Nintendo Switchのドックに基板を取り付けます。

th_effectone-pcb_19

ドックに接続しているケーブルは一度全部外して、この位置に基板を置きます。

th_effectone-pcb_20

距離センサを使っているときは、この位置で距離センサをグッと押し込みます。そうすると、少しキツめにはまるハズです。

th_effectone-pcb_21

リードスイッチを使っているときは、Switch本体に貼り付ける磁石の位置も考慮してリードスイッチ側の位置を決め、両面テープで貼り付けます。

th_effectone-pcb_18

距離センサ(リードスイッチ)を取り付けたら、USBケーブルで基板とドックを接続します。USBケーブルはちょっと捻る必要があるかもしれません。

th_effectone-pcb_22

HDMIケーブルを接続する場合は、この段階で接続しておくと良いかと思います。

th_effectone-pcb_23

最後に、ACアダプタ(USB Type C)のケーブルを接続すると、基板にも電力が供給されるようになります。

th_effectone-pcb_24-2

ちょっと見辛いですが、ACアダプタのケーブルを接続したあと、上の写真①の赤色LEDがつきっぱなしになっている場合は、②のボタンを一度押してください。

th_effectone-pcb_25-2

これまた見辛いですが、①の赤色LEDが点灯しなくなればOKです。

この時点で一度Switch本体をドックに抜き差しして、音が鳴るかどうかを確認してください。音量が大きい/小さい場合は、基板上の”VOLUME”と書かれているタクトスイッチを押してください。1(最小)→2→3(デフォルト)→4→5(最大)→1→2→…という順で音量を変えることができます。

th_effectone-pcb_26

音量が決まったら、基板の上にカバーをつけます。一応4本の足が穴の位置に合うようにつくっていますが、この足は3Dプリンタの特性上大変脆くなっているのでご注意ください(折れても一応使えるようにはしています)。

th_effectone-pcb_27

この状態になりましたら、最後にドックの蓋を閉じて、

th_effectone-pcb_28

完成です。お疲れ様でした。

 

では、早速遊んでみましょう。任天堂好きの貴方に。

 

仮面ライダー好きの貴方に。

 

なお、音声を差し替えるためにSDカードを抜き差しするときは、USBケーブルを抜くなどして、必ず基板への通電を切った状態で行うようにしてください。

 

th_effectone-pcb_29

というわけで、『Nintendo Switchをちょっと楽しくするスイッチ』の作り方のご紹介でした。私は任天堂&ライダー好きなので上記のような使い方になっていますが、各自が好きな分野の効果音を好きに入れて好きに使ってもらえれば、自分のSwitchに対して更に愛着がわくのではないかと思います。

【販売について】

自分は普段は一品ものの作品しか作らないのですが、この『Nintendo Switchを(中略)スイッチ』については、

  • 基板はその気になれば簡単に追加生産可能
  • カバーも自分の3Dプリンタで(品質はどうであれ)追加生産可能
  • 効果音のMP3ファイルについては、こちらから提供せずに各自で好きなものを用意してもらえば、特に版権には抵触しない(ハズ。。。?)

という条件が揃いましたので、もし欲しい方がおられれば、有料にはなってしまいますが、お譲りすることが可能です。目安としては、基板+カバーのみで500円、全て組み付け済みの完動品(距離センサ使用)で3,500円になります。

上記の二種類については、こちらのWebショップで販売しておりますので、そちらからご購入頂くことが可能です。在庫切れになっている場合は、コメントやTwitterのダイレクトメッセージなどでご連絡ください。また、「普段使っているフリマアプリで買いたい」「メルカリの匿名配送で買いたい」等のご要望がございましたら、同じくご連絡頂ければ可能な限り対応させて頂きます。さらに、「部品は全て組み付け済みがいいけどSDカードは持っているからいらない」「距離センサじゃなくてリードスイッチでいいから安くしてほしい」等々ありましたら、それもお気軽にご相談いただければ、できる限り柔軟に対応したいと思います。

多分、中国あたりの謎の企業が量産したら1,000円以下で売ってそうなものだよなあという自覚はあるのですが、現状はどうしても一個人の手作業になってしまいますので、ご了承頂けますと幸いです。

(2017/9/30 以下追記)================================

大変ありがたいことにいくつかお問い合わせを頂きまして、追加生産していたところ、どうにも私の3Dプリンタで出力する基板カバーの品質が気になってきました。安定して良い品質で出力するのが難しいのです。

色々3Dプリンタの設定を試行錯誤してだいぶマシなものができるようにはなったものの、やはり一般に流通している製品レベルのものを期待されている方からすると、ちょっとがっかりする品質になっていると思います。そこで、対応策として、DMM.make様の方に3Dデータを登録し、基板カバーのみを高品質な業務用3Dプリンタで出力できるようにしました。

『Nintendo Switchをちょっと楽しくするスイッチ』取付カバー

上記から別途ご注文頂ければ、追加で費用はかかってしまいますが、かなり状態の良いカバーを入手することができます。

th_effectone_dmm_1

上が私の個人向け3Dプリンタで出力した中でかなり状態が良い方のもので、下がDMM.make様に注文して出来上がるものです。そもそもの素材の違い(私のものはPLA、DMM.make様のものはナイロン)もありますが、一目でクオリティの違いがわかります。

th_effectone_dmm_2

裏面です。

th_effectone_dmm_4

横から。積層痕も全然ありません。

th_effectone_dmm_3

Switchドックに取り付けた状態。やっぱり綺麗です。

写真のものは素材にナイロン(ブラック)を指定して出力したもので、注文価格は税込で1,713円になります。他の色も指定でき、ナチュラル(白っぽい色)だけ、ちょっとお安く、1,033円になります。これらの価格は私が設定できるのですが、DMM.make様で用意して頂く素材費および手数料の関係で、私自身の利益をほぼ0円にしても、この価格となってしまっています。申し訳ありませんが、ご了承頂けますと幸いでございます。

(2017/9/30 以上追記)================================

 

th_effectone-pcb_3

ちなみに、今回ご紹介した部品とそっくりそのまま同じ部品を使う必要はもちろんありません。例えば、今回使用しているスピーカーは基板実装用の小型タイプのため、音質は決してよくありません。そこで、少しリード線を伸ばす形にして、別のもう少し良いスピーカーを接続するのも良いと思います。

一応Nintendo Switchに組み込むことを前提に作った基板ではありますが、もちろんNintendo Switchに組み込まず、『センサの変化に応じて音を鳴らすスティック状の何か』として汎用的に使って頂くことも可能です。例えば、入力は結局センサ入力のHIGH/LOWの変化を見ているだけですので、HIGH/LOWを切り替えられるセンサであれば何を使用してもらっても構いません。また、ソフトの書き換えまでしてしまえば、『VOLUME』として用意してあるタクトスイッチすら、音量設定以外の機能に割り振ってもらうことも可能です。

要するに、『TrinketとDFPlayer Miniを組み合わせて何かするのをちょっと便利にする基板』ということですので、ご自身のやりたいことに合わせて自由に使ってもらえればと思います。


「Nintendo Switchをちょっと楽しくするスイッチ」への12件のフィードバック

  1. 記事、楽しく拝見しました!
    全て組み付け済みの完動品(距離センサ使用)、ぜひお譲りいただきたいです。

    1. Darwin様

      お問い合わせ頂きありがとうございます◎ ご記載頂いたメールアドレスに詳細をご連絡させて頂きますので、後ほどご確認を宜しくお願い致します。

    1. 匿名様

      ご要望頂きありがとうございます。先ほど記事をアップ致しました。設計部分の詳細は省略していますが、何から勉強を始め、どういう手順で発注したかをまとめた記事とさせて頂きました。少しでもご参考になれば幸いでございます。

  2. ちょっと前からのブログ追いかけて見ました!
    とても面白そうなので自分もお願いしたいです!

    1. ふぇ様

      ご連絡が遅くなってしまい申し訳ありません。興味を持って頂きありがとうございます◎ 後ほど、お知らせ頂いたメールアドレスにご連絡させて頂きますので、ご確認くださいませ。

  3. 先日、Webショップから基板とカバーを購入させていただきました。
    ブレッドボード上で各パーツの単体テストを行っているのですがTrinketとDFPlayer Miniがうまく動作してくれません。(DFPlayer上のLEDが点滅しません)
    どちらも記事のURLから飛んだ先で購入したものです。
    利用しているライブラリも記事からリンクされているgithub上から落としています。
    試しにDFPlayer MiniのみArduino Leonardoに接続してテストしてみましたが正常に再生が行えました。
    Trinketも手持ちの複数枚で試してましたが同様です。
    何か特別な手順などありましたらお知恵をお貸しください。
    よろしくお願い致します。

    1. eureka様

      この度はご購入いただきありがとうございます。経験的に、DFPlayerがうまく動かない時は、電源供給元に何かしら問題があることが多いのですが、今、DFPlayerの電源はどこからとっていますか? 少なくとも私が数個作成したところでは、マイクロUSBを接続したTrinketの5Vピンから電源を入力すると、動作はしてくれていました。

      もしeureka様さえ宜ければ、先日ご購入頂いた際に私がお送りしたメールに返信する形で、現在eureka様がテストを行なっているブレッドボード上での配線などを写真に撮ってお送りいただければ、少しお時間をいただくかもしれませんが、私の方でも原因を調べさせて頂きます。

  4. 動画と記事を拝見させていただき、是非購入したいと思ったのですが、Webショップが売り切れでしたので、コメントにて失礼します。
    まだ、大丈夫でしたら完動品の方をお売りいただけますでしょうか?

  5. 初めまして。
    とても面白いですね!!
    もし可能でしたら自分も購入希望です。
    普段使っているフリマアプリでの購入を希望したいのですが、一度ご連絡頂けますでしょうか?

  6. はじめまして。
    さきほどyoutubeでたまたま動画を発見し、こちらにたどり着きました。
    感動しつつも「でも自分では作れないしなあ・・・」と記事を拝見していたところ、なんと最後に【販売】の二文字が!
    webショップのほうが売り切れでしたので、私も皆さんのように完動品の発注をお願いしたく存じます。
    お手すきの際にでもご対応いただけますと助かります。
    それでは失礼いたします。

hidaka_hiroji にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>