93
76

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ArduinoでNintendo Switchの自動化環境作成する(Mac環境)

Last updated at Posted at 2020-01-20

ポケモン剣盾か発売から2ヶ月ほど経ちましたが育成やっていますか:smiling_imp:

今作ではレイドバトルが導入され育成に必要なものが少し増えました。
ダイマックスレベルをあげるためのダイマックス飴が登場し、わざマシンはレコードという形で4世代までの消耗品扱いに逆戻りしてしまいました。

剣盾では様々な効率化方法が公開されていますが、今回は自動ワット収集プログラムとArduinoを使って環境構築する手順を確認していきます。

Arduinoの環境周りはWindowsの情報が多いですが今回はMacを使用します。
ワット稼ぎだけならHomebrewを使ったソフトウェアのインストールだけなので、動作させるまではとても簡単です。
(Macはドライバ不要)

#目的
自動「ワット」収集プログラムをArduinoに書き込みSwitchを自動化プログラムを動かす。ArduinoをSwitchに挿すと自動化プログラムが動く仕組みを作ります。
チップにhexファイルを書き込むことで別の自動化プログラムを動作できる状態にします。

無限ワットの裏技を使った方法なので剣盾本体が修正されるとできなくなる可能性があります。

ダウンロード (1).gif

#環境・用意するもの
Mac Mojave 10.14.6 ※Catalina(10.15.0)以降では動作しない可能性があります
Arduino UNO R3
71bYEHhPo8L.SX679.jpg
・Mac、Switchと接続するためのケーブルやハブ。どちらも繋げるTypeB-TypeCが便利。
51Sun8EocgL.SX679.jpg

・ジャンパワイヤ(メス-メス)あれば

下記のGitHubリポジトリや記事を参考にしています。
GitHub -無限ワット自動化
GitHub -ゼルダBoWの雪転がし
GitHub -スプラトゥーン2自動ドット打ち
Qiita -Splatoon2 イラスト投稿の自動ドット打ちをAruduino UNO R3 + macOS High Sierra環境でおこなう手順
Qiita -Arduino Uno R3 で作るESC専用USBキーボード
dfu-programmer で Arduino UNO の ATmega16U2 に Windows から書き込む

#手順
##1.Arduino書き込み用ツールのインストール
Homebrewを使ってArduinoのツールをインストールします。
Homebrewが入っていない場合はここの手順でインストールします。

brewコマンドでインストール状態を確認

Terminal
brew -v
Homebrew 2.2.2

Arduinoに書き込むためにcrosspack-avrをインストール

Terminal
brew cask install crosspack-avr
export PATH=$PATH:/usr/local/CrossPack-AVR/bin/ # にパスを通す

コマンドラインツールdfu-programmerをインストール

Terminal
brew install dfu-programmer

##2.ワット自動取得プログラムを取得
自動ワット収集リポジトリからzipファイルをダウンロードする。もうひとつlufaのリポジトリからも取得します。

自動ワット収集のディレクトリにlufaという空のフォルダがあるので、ダウンロードしたlufaのファイル一式をそこにコピーします。

ディレクトリ構造
Config
lufa
 -Bootloaders
 -BuildTests
 -Demos
 -LUFA
  ....

makefileファイルのMCUの設定値をArduino UNO R3のチップatmega16u2に書き換えます。
始めからatmega16u2ならそのままで。

makefile
MCU          = atmega16u2

自動ワット収集リポジトリのディレクトリ(makefileが置いてある場所)に移動した後、makeコマンドでC言語ソースをビルドしJoystick.hexファイルを生成します。
このhexファイルをチップへと書き込むことでArduinoで動作するプログラムが変更します。

Terminal
make

##3.チップへの書き込み
DFUモードにするため写真のようにArduinoをジャンパワイヤでショートさせた状態でPCと接続します。DFUモードとはチップのソフトウェアを書き込みできる状態のことです。

ジャンパワイヤがなければドライバー等で電気的に繋げてからPCと接続すればいけるはずです。

3109_0.jpg

接続した後に点灯し始めるのでジャンプワイヤを抜きます。
これでDFUを使える状態になったのでターミナルのコマンドでチップにHexファイルを書き込んでいきます。

まずは削除

Terminal
sudo dfu-programmer atmega16u2 erase

// 以下出力
Checking memory from 0x0 to 0x2FFF...  Not blank at 0x1.
Erasing flash...  Success

次に書き込み

Terminal
sudo dfu-programmer atmega16u2 flash Joystick.hex

// 以下出力
hecking memory from 0x0 to 0xF7F...  Empty.
Validating...  Success
0xF80 bytes written into 0x3000 bytes memory (32.29%).

そしてリセット

Terminal
sudo dfu-programmer atmega16u2 reset

これで書き込みが完了しました。Switchに接続すれば自動でボタン入力が行われるはずです。
自動ワット収集リポジトリでは柱が出た状態の巣穴の前からスタートして無限にワットの自動回収を行います。

動作を変更したい場合は、Cソースファイルを修正して、hexファイルを作って、チップに書き込めばOKです!IDくじの自動化とかはすぐできそうです。

スプラトゥーンの自動ドットは今回の手順に加えてPython3のインストールなどが必要です。こちら記事の通りにすれば動作しました。(Python2.x系と3.x系ではコマンドが違うので注意)
Qiita -Splatoon2 イラスト投稿の自動ドット打ちをAruduino UNO R3 + macOS High Sierra環境でおこなう手順

先日発表されたPS5の新ロゴを自動でドット入力しているところ
ps5.gif

今回はボタン入力を手順化しているだけなのでポケモンだけではなく他のソフトでも手順部分を変更すればすぐに対応可能です。
高度な自動化をしようとなると画像認識を使った方法がありますが別途キャプチャボードが必要です。
参考 -Switch版DEAD OR ALIVE Xtreme3 Scarlet (DOAX3S) 自動プレイ

##共に働くWebエンジニアを募集しています!
不動産SHOPナカジツでは自社サービスを作っていく仲間を募集しています。
詳しくはWantedlyからお問い合わせください。

93
76
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
93
76

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?