🔧

マクロコンを自作してNintendo Switchをブラウザから操作する【導入編】

12 min read

🚀 はじめに

【10/14追記】Windowsでのドライバ設定について

みなさん、Nintendo Switchのゲームライフを楽しんでいますか?

本記事では、人類に無限の快楽を与えてくれるNintendo Switchをブラウザから動かすツールPhantomHandの導入手順を説明します。

本ツールを導入すれば、RPGのレベル上げ、ポケモンの孵化作業、スマブラの2Pコントローラーの操作など、あらゆるSwitchのゲームアクションを自動化できます。

「Arduino」や「マイコン」などの聞き慣れない単語が出てきますが、何も考えず説明通りに上から実行すればPCに詳しくない人でも問題なく導入できるはずです。

本記事の内容には改造ファームウェアのアップロードなどの違法行為は含まれておりませんが、Nintendo Switch利用規約 第1条第5項の「任天堂の許諾を受けていない本ゲーム機の周辺機器を使用しないこと」には該当するおそれがあります。ご利用は必ず自己責任でお願いいたします。

💡 機能

C0010_5

  • ブラウザの画面でSwitchを操作
  • 一連の操作をコマンドとして保存(マクロ機能)
  • 保存したコマンドを呼び出して再現(マクロ再生機能)
  • コマンドをTwitterでフォロワーに共有
    などの機能をGoogle Cromeで実行できます。

💻 動作環境

  • Google Chrome (Windows / macOS / Linux)
    • スマホ・タブレットは非対応です(Androidなら動くかもしれませんがテストしてません)
  • Nintendo Switch (v13.0)

📦 必要なデバイス

以下のデバイスが必要です。

  • Atmega32u4搭載マイコン
  • シリアル通信モジュール
  • ジャンパワイヤ オスーメス

Atmega32u4搭載マイコン(いずれか1個)

Switchに接続するデバイスです。コントローラーの代わりの役割を果たします。予算にこだわりがなければ純正がオススメです。

Arduino Leonard 純正(3000円前後)

https://www.amazon.co.jp/gp/product/B008A36R2Y/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1

HiLetgo Leonardo R3 Pro(1000円前後)

動作確認してませんが、多分これでも動きます

https://www.amazon.co.jp/HiLetgo®-Leonardo-ATmega32U4-Arduinoと互換-ケーブル付き/dp/B013QV2BB0

シリアル通信モジュール(いずれか1個)

上記のマイコンとPCを通信させるためのモジュールです。
無線接続は安定しないので、できるだけ有線モジュールを購入してください。

FT232(有線モジュール) 【推奨!】

有線接続なので、PCとSwitchが物理的に近くにある必要があります。無線に比べて操作感は良好です。PCとSwitchの定位置が近くなのであれば、有線接続がおすすめです。

https://www.amazon.co.jp/gp/product/B085NM1M48/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1

CC2640R2F(無線モジュール)

無線接続なので、PCとSwitchが物理的に離れていても使えますが、一方で有線に比べて微妙に遅延があり動作も不安定なので推奨しません。

https://www.amazon.co.jp/gp/product/B07N1FWQYP/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1

ジャンパワイヤ オスーメス (2本または4本)

マイコンと通信モジュールを電気で物理的に繋げるための導線です。はんだ付けなどは不要で、それぞれにプスッと刺すだけでOKです。
無線の場合は4本、有線の場合は2本あれば十分なのですが、Amazonにはセット売りしかないようです。

https://www.amazon.co.jp/dp/B072N2WR5N/?coliid=IF0SPBXJA3TB3&colid=3AVMKRBQHUM2K&psc=1&ref_=lv_ov_lig_dp_it

💿 マイコンにプログラムを書き込む

工業出荷状態のマイコンにはプログラムが書き込まれていませんので、PCソフト「Arduino IDE」を使ってプログラムを書き込む必要があります。

まずは、Arduino IDEを公式サイトからインストールしてください。

https://www.arduino.cc/en/software

Arduino IDEのインストール

selectOS
自分のOSに合ったバージョンをダウンロードします。
download
macOSの場合はアプリケーションフォルダに移動させておきましょう。
app
アプリを起動すると、このような画面になります。
launch

プログラムのダウンロード

続いてマイコンに書き込むプログラムをダウンロードします。

https://github.com/noov-smash/PhantomHand-Arduino
上記のページにアクセスして、Download Zipをクリックします。
code

Arduino IDEの設定画面を開きます
performance
この画面の、スケッチブックの保存場所をメモします。
path
Finderまたはエクスプローラーでメモした場所まで移動します。多くの場合は以下のパスになっていると思います。
macOS: /Users/Documents/{YourUserName}/Arduino
Windows: C:\Users\{YourUserName}\Documents\Arduino\
arduinofolder
先程ダウンロードしたzipを解凍し、スケッチブックの保存場所に記されていたArduinoフォルダ中に移動します。
Librariesフォルダが既にある場合は、中身だけ移動してください。
move

ここまで完了したら、一度Arduino IDEを終了させましょう。

書き込み設定

Arduinoにプログラムを書き込む準備ができました。次に、Arduinoのボード設定を行います。

あらゆるUSBデバイスには製造元を表すVendorIDと、製品を表すProductIDが割り当てられています。ArduinoのIDをそのまま使用すると、SwitchがArduinoをコントローラーとして認識しません。Arduinoに割り当てられたIDをポッ拳DXプロパッドと同じIDに書き換えると、SwitchがArduinoをコントローラーとして認識します。

以下ではその書き換え作業を行います。

Arduino IDEが終了していることを改めて確認してください

macOS

アプリケーションフォルダ内のArduinoを右クリックし、パッケージの内容を表示を選択します。
arduino
以下のフォルダにあるboards.txtというファイルをテキストエディタ等で開きます。
/Contents/Java/hardware/arduino/avr/
boardspath

Windows

以下のフォルダにあるboards.txtというファイルをテキストエディタ等で開きます。
C:\Users\<YourUserName>\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.13
1.8.13の部分は、インストールしたArduino IDEのバージョンが入ります

boards.txtの編集 (macOS/Windows)

以下の4箇所の値を書き換えて保存します。変更箇所を間違えないように気をつけてください。

key 変更前の値 変更後の値
285 leonardo.vid.1 0x2341 => 0x0f0d
286 leonardo.pid.1 0x8036 => 0x0092
311 leonardo.build.vid 0x2341 => 0x0f0d
312 leonardo.build.pid 0x8036 => 0x0092

boards.txt

編集後、忘れずに保存してくだい

プログラムを書き込む

準備が整ったので、Arduinoにプログラムを書き込みましょう。
ArduinoをUSBでPCに接続します。正常に接続できると、LEDが点灯します。
arduino

先程ファイルを移動したArduinoフォルダに戻ります。
入手したシリアル通信モジュールが FT232(有線モジュール) の場合はFT232CC2640R2F(無線モジュール) の場合はCC2640R2Fの中身を開きます。
folder
file
ツール→ボードを開き、Arduino Leonardoを選択します。
baord
ツール→シリアルポートを開き、usbという文字列が含まれたものを選択します。
*多くの場合はusbが含まれるポートは1つしかないと思いますが、複数あった場合は上から順に選択して以下の工程が成功するまで試してください。
port
左上のチェックボタンをクリックして、プロフラムをコンパイルします。
画面下部に「コンパイルが完了しました」と表示されればOKです。
compile
最後に、矢印ボタンをクリックして、スケッチの書き込みを行います。
画面下部に「ボードへの書き込みが完了しました」と表示されればついにフィニッシュです。お疲れ様でした。
upload

🔌 デバイスの接続

FT232(有線モジュール) の場合

ジャンパワイヤを使ってArduinoとFT232を接続します。RXピンとTXピンが交差するようにワイヤーを刺します。

Arduino FT232
TX1 <=> RX
RX1 <=> TX

小さくて見づらいですが、ピンの近くに名称が書いてあります。
ft232
ジャンパワイヤの色は好きなものを使ってください。
rxtx
ArduinoをSwitchのドックに接続します。
arduino-switch
FT232はPCに接続します。
ft232-pc
最終的に、以下のように全体が接続されたことを確認してください。
sketch

CC2640R2F(無線モジュール) の場合

Arduino CC2640R2F
TX1 <=> RX
RX1 <=> TX
5V <=> VCC
GND <=> GND

PC側には何も接続する必要はありません。

🌎 Google Chromeの設定

GoogleChromeでArduinoと通信するために、設定を有効にします。
以下を一つひとつアドレスバーに入力し、全ての項目をEnabledに設定してください。
chrome://flags/#enable-javascript-harmony
chrome://flags/#enable-experimental-web-platform-features

CC2640R2F(無線モジュール) を使用する場合は以下の項目もEnabledに設定してください。
chrome://flags/#enable-web-bluetooth-new-permissions-backend

chrome

🪟 Windowsのドライバ設定 (10/14追記)

どうやらChromeのWebUSB APIはWindowsではOSでシステムドライバが用意されるデバイス(FT232)はWebUSBの使用ができないようです。
Windowsでご利用の方にはご迷惑をおかけしました🙇‍♂️

Windows10においては、以下の設定で解決することができました。

  • Zadigをインストール
  • 以下の設定でReplace Driverをする
    windows

手順やリスクについてはこちらの記事が詳しかったです。設定変更は自己責任でお願いします。

https://qiita.com/frameair/items/abcaebbd654c304a0906

🎉 準備が整いました!

これで準備は完了です!
PhantomHandの使い方を説明します。
まずはサイトにアクセスしてください。

https://phantom-hand.web.app/

紫色のボタンをクリックします
home

PhantomHandでコントロールしたいゲームソフトを選んでください。なければ適当に選んでください。(ゲームソフトの追加リクエストがあれば、DMをください🤲 )
projects
コントローラーの画面に遷移したら、左上のUSBアイコンをクリックし、Search Deviceを選択します。
*CC2640R2F(無線モジュール)を使用する場合はBluetoothアイコンをクリックします。
search
ポップアップウィンドウが表示されたら、デバイスを選択して「接続」をクリックします。
connect

ここまで完了すれば、ブラウザからSwitchを操作できるはずです。
GUIコントローラーを操作して、Switchの画面が反応するか確認しましょう!
demo

動かない場合はArduinoのリセットボタンを押してみてください。LEDの点滅が始まり、5~10秒で再起動が完了します。
それでも動かない場合は、接続に問題がある可能性が高いです。全ての接続を確認してください。
(RXピンとTXピンの接続ミスはよくあることです)
reset

📖 使い方

ここまで来れた方は説明しなくても分かると思いますが、念のため簡単に説明します。

gui

サイドメニュー

プリセットのコマンドを選択できます。そのゲームでよく使うコマンドはサイドメニューに保存されています。
現在サイドメニューを編集できるのは開発者のみです。登録してほしいコマンドがあれば、それをTwitterでシェアすれば開発者の目に留まる可能性があります。

ゲームパッド

画面中央に表示されたゲームパッドは、クリックやドラッグで操作できます。デバイスを接続していれば、操作はSwitchに反映されます。
PCにプロコンを接続していた場合、このゲームパッドと連動します。
gamepad

マクロ

右上のコントロールボタンで、マクロコマンドの作成再生リピートシェアを行えます。

シェア

作成したコマンドの保存機能は現在一般に開放していませんが、代わりにURLを通じてコマンドをシェアできます。シェアボタンを押すと、URLが発行されます。そのURLにアクセスすれば、いつでも作成したコマンドをワンクリックで再生できます。
share

✅ さいごに

PhantomHandの導入方法、マクロコンの自作方法については以上です。

より技術的な内容を知りたい方はNintendo Switchをブラウザから操作する【技術編】をご覧ください。

Discussion

ログインするとコメントできます