マイコンと呼ばれるものをご存知でしょうか?
Switchに接続するだけで様々な作業を “自動” で行ってくれるというものです。
導入すれば作業が楽になるだけでなく、寝てる間に色々稼ぐこともできちゃう便利なアイテムなわけですね!
ポケモンの孵化作業からレイドバトルに金策、様々な場面で活用できるので、重宝するのは間違いないでしょう。
マイコンについては、既に多くの記事や動画がネット上に公開されていますが、小難しい用語も多く、また環境もWindowsがベースのものが多い印象です。
そこで今回はできるだけわかりやすく、またMacでも環境構築ができたので、その記録を記事にまとめてみることにしました。(基本はMacベースですが、Windowsでも問題なく導入できるかと思います。)
参考にさせて頂いたサイト
この記事を書く際に参考にさせて頂いたサイトを紹介しておきます。
この記事の内容では足りない部分がありましたら、こちらの記事と照らし合わせて見ていただけると幸いです。
はじめにArduino LeonardoをNintendo SwitchのUSBポートに挿すだけで、ボックスに空きがある…
必要なもの
Switchやポケモン剣盾のソフトはもちろんとして、それ以外に用意する必要のあるものが3つほどあります。
- インターネットに繋がったPC(WindowsでもMacでも可)
- Arduino Leonardo
- USBケーブル(Arduino Leonardo と SwitchやPC を接続するのに必要)
マイコンとケーブルを両方とも買うと3000円を超えてしまいますが、その金額で勉強中や仕事中にもポケモンの厳選ができると思えば安いものではないでしょうか?
Arduinoについて
このブログでは、『Arduino Leonardo』という種類のマイコンを使っていきます。
『Arduino』と呼ばれるものにはいくつか種類があるのですが、わからなければリンクから同じものを買ってください。(異なる種類のものではうまく動かないことがあります。)
3つもいらないと思うかもしれませんが、孵化用・レイド用・金策用と別々に用意しておくことで、書き換えの手間もなく楽に運用することができます。
2021年12月13日追記:以下のマイコンも動作確認いたしました。1つで十分という方はこちらもおすすめです。
2023年1月6日追記:以下のマイコンも動作確認できました! こちらはケーブルもセットになっているのでおすすめです!!
USBケーブルについて
USBケーブルに関しては、
- Switchと『Arduino Leonardo』を繋げるもの
- PCと『Arduino Leonardo』を繋げるもの
の2種類が必要になります。
Switchと繋げる場合は2つのモードがあるので、どちらで行うかも考えておくと良いでしょう。
テレビモード用
携帯モード用
PCとの接続はUSBハブなどを経由しても構いませんので、上記のケーブルや手持ちのケーブルをうまくやりくりして繋いでいきましょう!
導入方法
では早速、マイコンを導入していきましょう!
ステップとしては、
- マイコンにコードを書き込むための『Arduino IDE』というソフトをインストールする
- 『Arduino IDE』で『Arduino Leonardo』に書き込むための設定を行う
- PCとマイコンの接続を確認する
- Switchでの汎用的な処理をまとめた『ライブラリ』というものをインストールする
- マイコンをSwitchに認識させるために『boards.txt』のデバイスIDを書き換える
- 実際にコードを書き込み動作テストを行って終了
といった形になります。
Arduino IDEのインストール
まずは『Arduino Leonardo』にコードを書き込むためのソフトである『Arduino IDE』をインストールする必要があります。
公式サイトからインストールしてください。
Open-source electronic prototyping platform enabling users t…
英語のページなので、どこでDLするのかわかりにくいですよね…
以下の画像を参考にしてダウンロードしてみてください。
次のページはお金がかかりそうな雰囲気ですが、「寄付してくれますか?」といった内容なので無料で使うことも可能です。
ダウンロードを終えたらZIPファイルを解凍し、実行してみてください。
実行すると色々と聞かれますが、気にせず実行していきましょう!
『Arduino IDE』のインストールが終わったら、次は設定を見ていきましょう!
Arduino IDEの設定をする
2023年1月6日追記:Arduino AVR Boardsのバージョンについて、より詳細に記載いたしました。
『Arduino IDE』にマイコンを書き込めるようにするための設定をしていきましょう!
『Arduino IDE』を起動した状態で、メニューバーから『ツール』→『ボード』→『Arduino Leonard』を選択してください。
続いて、そのまま『ボードマネージャ』を開いていきます。
検索窓に”Arduino Leonard”と入力すると出てくる「Arduino AVR Boards」が『INSTALLED』になっていなければ、インストールをしてください。
この際、バージョンに指定があります!
Macの方は必ず1.8.3にしてください!!
Windowsの方は1.8.3、または、1.8.2にしてください。(バージョンによって、borads.txtの編集箇所が変わります。)
これで『Arduino IDE』が『Arduino Leonardo』に書き込めるようになったので、次は接続のテストをしていきましょう!
PCとマイコンを接続する
PCにマイコンを認識させていきましょう!
初めてPCにマイコンを繋いだときには、以下のような表示が出ますが、適当に進めてもらえれば使えるようになります。(無視しても問題ないです)
認証できるようになったら『Arduino IDE』を起動した状態で、『ツール』→『シリアルポート』から接続しているマイコンを選択してください。(どれか分からない人は、一度コードを抜いて接続を解除し、接続時に追加されるポートを確認すると良いと思います)
シリアルポートにチェックマークが確認できたらOKです。
『libraries』フォルダのある『Arduino』フォルダにアクセスする
『Arduino IDE』を起動した状態で、メニューバーから『Arduino』→『Preferences』を選択してください。
すると、このような画面が表示されますので、『スケッチブックの保存場所』の中身をコピーしておきます。
続いて、Finderを開き、メニューバーから『移動』→『フォルダへ移動』を選択します。
そうしたら、『フォルダの場所を入力』とあるので、そこに先程の『スケッチブックの保存場所』の内容をコピペして『移動』を押しましょう!
これで、『Arduino』フォルダを開くことができたはずです。
デフォルトでは『libraries』というフォルダのみが置いてある状態となっていますが、『Arduino IDE』で作成したファイルはここに保存されていくので覚えておくと良いでしょう。
もし、「『libraries』フォルダがない!」という方は、新規フォルダで作ってもらっても大丈夫です。
ライブラリのダウンロード
Switchでの汎用的な処理をまとめた『ライブラリ』というものをダウンロードしてきましょう!
※2022年11月15日追記:「NintendoSwitchControlLibrary」が「Arduino IDE」のアプリから直接ダウンロード&インストールできるようになりました! アプリからインストールするとフォルダの場所だったり、解凍(展開)のミスがなくなるため、より簡単で確実に導入することができます。
今後はこちらの方法での導入を推奨する形としますが、中身は基本的に同じであるため以前に導入されている方は入れ直さなくても大丈夫です。
『Arduino IDE』を起動した状態で、メニューバーから『スケッチ』→『ライブラリをインクルード』→『ライブラリを管理』を選択してください。
ライブラリマネージャが開きましたら、検索窓に”NintendoSwitchControlLibrary”と入力して『INSTALLED』となっていなければ、インストールのボタンを押してインストールしましょう。(おそらく検索で引っかかるのは1つだけだと思いますが、もし1つに絞り込めなかった場合は「by lefmarna」と記載のあるものを選ぶようにしてください。)
これでライブラリの導入は完了です。
- 旧導入方法はこちら
- 以下のリンクからダウンロードできます。
GitHub
A library for microcontrollers that uses Arduino to automate…
※2021年2月11日追記:当ブログで使用するライブラリが「NintendoSwitchControlLibrary」へと変わりました。旧ライブラリのリンクも残しておきますが、よほどのことがない限り新しいライブラリをダウンロードして使ってください。
- 旧ライブラリ(NintendoSwitchControll)を使用したい方はこちらをクリック
-
GitHub
Library for control Nintendo Switch with arduino leonardo. -…
【 Code 】をクリックすると表示される【Download ZIP】をクリックすることで、ダウンロードすることが可能です。
ダウンロードを終えたら展開し、先程開いた『Arduino』フォルダの中にある『libraries』フォルダの中にコピーします。
展開を終えたら展開元のzipファイルは削除してしまって構いません。
『libraries』フォルダの中身が画像のような形になっていればOKです。
『readme.txt』というテキストファイルが最初から置いてあったと思いますが、これはただの説明書となります。
マイコンを使う上で、コードには一切関与しないものなので、もし、なかったとしても問題はありません。
次のステップでは『boards.txt』の編集をしていきます。
boards.txtはどこにある?
Switchにマイコンを認証させるには『boards.txt』というものを書き換えておく必要があります。
「この信号は怪しくないですよ〜!」といった接続の権限を与えるようなものだと思ってください。
『boards.txt』は『Arduino』フォルダとは別の場所にあるので、詳しく見ていきましょう!
Windows
2023年1月6日追記:Windows版のboards.txtが見つからない旨の問い合わせが多かったため、改めて調査し追記いたしました。
Windowsの方は「Arduino AVR Boards」バージョンによってboards.txtの場所が異なります。
Arduino AVR Boardsのバージョンを1.8.3にした場合
以下のパスにアクセスしてください。
- C:\Program Files (x86)\Arduino\hardware\arduino\avr
そこに『boards.txt』があると思います。
Arduino AVR Boardsのバージョンを1.8.2にした場合
1.8.2の場合は、候補が2箇所存在します。以下のどちらかにあると思います!(1つ目の場所は隠しフォルダになっているため、隠しファイルを表示できるよう設定した上でご確認ください。)
- C:\Users\ユーザー名\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2
- C:\Users\ユーザー名\OneDrive\ドキュメント\ArduinoData\packages\arduino\hardware\avr\1.8.2
Mac
Macの方は少し面倒なところにあるので、画像と一緒に紹介していきます。
『Arduino.app』を右クリックすると、このような画面が表示されるので『パッケージの内容を表示』を選択してください。
そしたら、『Arduino.app』の中に入ることができました!
ここから『Contents』→『Java』→『hardware』→『arduino』→『avr』と辿っていってください。
無事に『boards.txt』を見つけることができましたね!
boards.txtの編集
早速『boards.txt』を開いて編集していきましょう!
『boards.txt』の編集する箇所は全部で4箇所になります。
285行目:leonardo.vid.1=0x0f0d
286行目:leonardo.pid.1=0x0092
311行目:leonardo.build.vid=0x0f0d
312行目:leonardo.build.pid=0x0092
編集した後は『保存』を忘れないでくださいね!
これでマイコンにコードを書き込む準備が全て完了しました!
テキストファイルを編集するアプリがプログラミング用のコードエディターでない場合、うまくいかないことがあるかもしれません。
そんなときには、Microsoftが無料で提供している『Visual Studio Code』などをインストールして試してみてください。
Visual Studio Code is free and available on your favorite pl…
実際にコードを書き込んでテストしてみよう!
メニュー画面を開いてはぐるぐるして閉じるだけのシンプルなプログラムを用意しましたので、実際に書き込んで動作テストをしていきましょう!
動作テスト用のコード
動作テスト用のコードを作ったので、これをコピペして貼り付けてみてください。
- 旧ライブラリ(NintendoSwitchControll)を使用している方はこちらをクリック
-
// ライブラリを読み込むためのコード #include <auto_command_util.h> // マイコンのセット時に1度だけ行われる処理 void setup(){ // Switchがマイコンを認識するまでは信号を受け付けないため、適当な処理をさせておく pushButton(Button::B, 500, 5); } // ここに記述した内容がループされ続ける void loop(){ pushButton(Button::X, 600); pushHatButton(Hat::RIGHT, 200); pushHatButton(Hat::DOWN, 200); pushHatButton(Hat::LEFT, 200); pushHatButton(Hat::UP, 200); pushButton(Button::X, 600); }
// ライブラリを読み込むためのコード
#include <NintendoSwitchControlLibrary.h>
// マイコンのセット時に1度だけ行われる処理
void setup(){
// Switchがマイコンを認識するまでは信号を受け付けないため、適当な処理をさせておく
pushButton(Button::B, 500, 5);
}
// ここに記述した内容がループされ続ける
void loop(){
pushButton(Button::X, 600);
pushHat(Hat::RIGHT, 200);
pushHat(Hat::DOWN, 200);
pushHat(Hat::LEFT, 200);
pushHat(Hat::UP, 200);
pushButton(Button::X, 600);
}
コードを『検証』してからマイコンに書き込もう!
コードをコピペしたらマイコンに書き込む前に一度『検証』をしましょう!
コードに問題がなければ『コンパイルが完了しました。』と表示されるはずです。
コンパイルが無事に完了したのを確認したら、『マイコンボードに書き込む』を選択しましょう!
もしも、エラーが発生した場合には、タイミングによって原因をある程度は絞り込むことができます。
『検証』のタイミングでエラーが発生した場合には、
- コードが間違っている(うまくコピペできていない)
- ボードの設定がうまくできていない
といったことが考えられます。
一方、『マイコンボードに書き込む』のタイミングでエラーが発生した場合には、
- マイコンの接続がうまくできていない
といった可能性が高いでしょう。
Switchにマイコンをつなごう!
さて、エラーもなく無事に書き込めたら、ポケモン剣盾を起動してSwitchにマイコンを繋いでみてください。
「メニュー画面を開いてはぐるぐるして閉じる」動作になっていれば成功です。
「Switchに繋いだけど何も起こらないよー!」といった方は以下の原因が考えられます。
- 無線のコントローラー(プロコンなど)がSwitchに接続されている
- 『boards.txt』の編集がうまくできていない
無線のコントローラーがつながっている状態だと、そちらが優先されてしまうようで、マイコンからの信号を一切受け付けなくなってしまいます。
一度スリープにしてから携帯モードで起動し、ドックで動かす方はそのままドックに差し込んでからマイコンを接続してみてください。
無事に動作が確認できたところで、マイコンの導入編は終了となります。
具体的には、コードの書き込みまではできるのですが、Switchに挿しても認識してくれない事象でした。これを解消するために以下の5つをフローを試したところ、原因は特定できていないものの無事に動作するようにはなりました。もし同じ事象で悩まれている方の参考になればと思いメモがてら残しておきます。
1. Arduino IDEをアンインストールする
2. 「『libraries』フォルダのある『Arduino』フォルダにアクセスする」の項でアクセスした『Arduino』フォルダを中身も含めてまるごと削除する
3. Arduino IDE1.8.*(当時は1.8.9でした)をインストールする
4. Arduino AVR Boardsのバージョンを1.8.2に下げたあと、1.8.3に戻す
5. 残りの作業はこの記事の通りに行う
今回はここまで
導入の記事と実際のコードの記事はわけたほうがいいかなぁと思ったので、今回の記事は導入のみで終了となります。
言語設定によっては、テキスト送りの際の猶予時間が足りておらず、コードが正常に動作しなくなるものもありますので予めご了承ください。海外ROMでご利用の場合は、適宣ご自身でコードを書き換えていただくようお願いいたします。
2020年9月26日追記:自動孵化の記事を公開しました!
マイコンを使ったポケモン剣盾の自動孵化を最適化したコードを作ってみました。 孵化厳選はレイドや化石ポケモンの自動化とは違い、何千、何万という繰り返しを行うからこそ、少しでも効率的に回したくコンマ単位でかなりこだわったコードに仕上げまし[…]
2020年10月8日追記:自動孵化の記事その2を公開しました!
ポケモンにおける孵化厳選のコード第2弾です。基本的には第1弾のコードが完成されているので、そちらを使うと良いでしょう。 [sitecard subtitle=関連記事 url=https://pokemonit.com/swsh-au[…]
トラブルシューティング
もし、上記の導入で問題が発生するようであれば、解決できる保証はないですが、@lefmarnaまで知らせていただければと思います。
また、質問の際にはポケモニット – 質問フォームにて最後まで答えると質問のテンプレートをコピペできますので、その内容も添えていただくようお願いいたします。