This page looks best with JavaScript enabled

Arduino で Nintendo Switch コントローラをつくる

 ·  ☕ 4 min read  ·  🐶 odanny · 👀... views

「毎日たった5分操作をするだけ」で「毎日100万ゼニー以上稼げる」!

モンハン史上最高のビジネスで毎日多額のゼニーが振り込まれる方法をあなたは知りたくはありませんか?

お金と時間をかけずに毎日100万ゼニーを稼ぐ仕組みを作りました。これであなたも億万長者!?・・・

冗談はここまでにして本題に移ろう。


完成したもの

Switch に差しておくと所定のボタンを操作するデバイス ができた(LEDが明るすぎて撮れない…)。

on

このままだとあやしいので、おもちゃの箱に入れて誤魔化した。

camouflage

※本記事では操作をしている様子やゲーム動画はありません。Nintendo Switch 利用規約第1条(5)などに抵触するかもしれないので、デバイス制作の推奨はしません。ただ面白い内容なので、最後まで読んでもらえると楽しんでもらえると思います。


3行まとめ

  • Switch は指定のメーカIDとデバイスIDを持つコントローラしか接続できない。
  • Arduino leonardo系は、メーカIDやデバイスIDを変更したデバイスをつくれる。
  • ゲーム内でお金持ちになれる。

開発環境

  • Windows 10 Education
  • Arduino IDE 1.8.13

デバイスは Arduino pro micro 互換機を使用した。

VKLSVAN Pro Micro USB ATmega32U4 5V/16MHz - Amazon


実装

実装にあたって以下のサイトにとてもお世話になった。Arduino microを Nintendo Switch に接続するためのすべてが書かれていると言っても過言ではないのでぜひ見てほしい。

【Arduino自動化01】Arduino開発環境の導入 - ますたーの忘備録

流れは次のようになる。

  1. Arduino AVR boards 1.8.2 のインストール
  2. ライブラリの導入
    1. ArduinoSTL
    2. SwitchControlLibrary ver 1.0.0
  3. VIDとPIDを変更(boards.txtの書き換え)
  4. スケッチを記述し、Arduinoに書き込む

1〜3までは、先述のサイトを参考にやってほしい。スケッチは次のようにした。基本はAボタンを連打するだけだが、ボタンを押すタイミングを目で確認するために Arduino付属のLEDを光らせるようにした。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <SwitchControlLibrary.h>

// 標準搭載のLED
const int LED_PIN = 13;

void setup() {
	// put your setup code here, to run once:
	pinMode(LED_PIN, OUTPUT);
}

void loop() {
    // put your main code here, to run repeatedly:
    // Aを連打
    digitalWrite(LED_PIN, HIGH);
    SwitchControlLibrary().PressButtonA();
    delay(30);
    SwitchControlLibrary().ReleaseButtonA();
    digitalWrite(LED_PIN, LOW);
    delay(200);
    }

補足

boards.txt書き換えがうまく行っているか確認する方法を記述しておくVIDはVender ID、PIDはProduct IDを表していて、これらはArduino IDEのボード情報から確認できる。

VIDとPIDは購入後そのままの状態では以下のようになっていた。

before

VID, PIDが分かれば作成元もわかるUSB ID Database::Vendor ID and Product ID list - the sz development で検索してみた。すると「Arduino SA、Leonardo (CDC ACM, HID)」と登録されていた。互換品ではあるものの、VIDとPIDは純正品と同じになっているようだ(この辺の権利関係はわからない)。

次にboards.txtの書き換えがうまく行くと、PIDとVIDは以下のように変更された。

after

検索してみると、このVIDは「HORI CO., LTD.」のようだ。PIDは検索に出てこなかったが、ホリといえばNintendo Switch互換コントローラを制作している会社なので、そのいずれかの製品に化けていることがわかる。

この辺りの話は先述のサイトにも記述がある。

なお、ネットで拾ってきた情報だと↓のような騙し方があるようです。
プログラミングやエンジニアリングに興味のある方は色々と調べてみると面白いかもしれません。VID,PID → 対応するコントローラー
0x0f0d, 0x00c1 → HORI HORIPAD for Nintendo Switch
0x0f0d, 0x0092→ HORI Pokken Tournament DX Pro Pad(今回擬態したもの)
0x057e, 0x2009 → Nintendo Switch Pro Controller
0x057e, 0x2007 → Nintendo Switch Joy-Con (Right)
0x057e, 0x2006 → Nintendo Switch Joy-Con (Left)
ちなみにVID=0x057Eは「Nintendo Co., Ltd」と登録されていた。

どうやって解析しているのか気になる。


最後に

VIDとPIDの書き換えは個人利用にとどめながら、快適なゲームライフを送ろう!

PS. とある狩人のゲームでは、時間経過で無限湧きする鉱石を延々と掘ることができるらしいですよ。ぼくはこれでお金持ちになりました。


参考文献

【Arduino自動化01】Arduino開発環境の導入 - ますたーの忘備録

celclow/SwitchControlLibrary GitHub

【MHRise】放置でお金稼ぐ方法 モンハンライズ 自動化|晴レ男|note


Share on

odanny
WRITTEN BY
odanny
自作キーボードはまり中