2021/02/11

【ポケモン×Arduino_01】Arduino Leonardo環境構築~動かしてみる

 ※本記事は、ポケモン剣盾をArduino Leonardoで自動化するための導入方法について書いた記事です。「Arduinoって何?」って方は前回の記事をご覧ください。

本記事は、

・Arduino Leonardoの入手

・Arduinoに書き込むための環境構築

・ライブラリ付属のプログラムを書き込み~実行

についてまとめたものです。

2022.05.23追記:導入に関しての質問などが増えてきており、文章だけだと分かりにくい箇所があるため、導入手順をまとめた動画を公開します。

 

2021/12/11追記:導入などにあたって頻出の質問については別ページにまとめました。コメントなどで質問する前に、こちらを確認してみてください。

 

自動化に必要なもの

前回の記事の復習です。 


 自動化を行うにあたり物理的に必要なものは以下の4つとなります(工具などは要りません)。

・Nintendo Switch(liteも可、ただし下記のケーブルの端子に注意)とポケモン剣盾(ソフト) 

・Arduino Leonardoボード(搭載しているマイコンは「ATmega32U4」)

・PC(執筆者はWindows。Mac等の方は他のサイトの解説も参考にしてください)

・ArduinoとPCをつなぐケーブル(純正ボード等ならmicro USBケーブルが付属。SwitchのドッグのUSB端子に接続する場合はそのままでOK、携帯モードやSwitch liteならTypeA→TypeCへの変換が必要

 

また、PCでArduino用のプログラムを作成、 書き込みをするために

・ Arduino IDE

・Switchコントローラーとして認識させるためのライブラリ

が必要となります(無料で揃います)。


 

 以上の必要なものについて、順に解説します。


Arduino Leonardoの入手

 Arduino Leonardoの特徴を復習します。

・Arduino Leonardoは、最も標準的なモデルであるArduino UNOの廉価版

・LeonardoはHID機能(コントローラーとして認識する機能)が標準搭載。UNOより簡単。

以上の理由から、本ブログではArduino Leonardoを使用します。 

 Arduino Leonardoは、純正のボードの他に、さまざまな互換品が販売されています。どちらを買うべきか、結論から言うと、互換品で問題ないと思います。基本的には純正ボードを買うのが最も確実ですが、買うボードの種類さえ間違えなければ互換品の方が安く買えます。

(私は互換品しかもっていません)

私が持っているのは以下の製品です。

基本的に「Arduino Leonardo(互換)」「ATmega32U4」と書いてある製品で、評価が低くなければ大丈夫かと思います。以下のようなものを選んでください。


Arduino Arduino Leonardo (ピンソケット・ピンヘッダ実装済) 【A000057】



KEYESTUDIO Leonardo R3開発ボード+ USBケーブル for Arduinoと互換


Arduino Arduino Leonardo (ピンソケット・ピンヘッダ実装済) 【A000057】
by カエレバ

 

 

 注意:ATmega328、ATmega16U2などと書かれている製品はLeonardoではありません。おそらくUNOの互換品です。本ブログで紹介するプログラムは使えません。

こちら↓の互換品でも動作を確認しました(Aliexpressで購入しました。小さいですがLeonardo互換品のようです)。正規品と比べてピン(ボタンやセンサーなどのパーツを接続するところ)などが減っている代わりに、ケーブル無しで直接USB TypeAとして挿すことができます。本ブログでは基本的にHID機能のみ使用し、ピンを使うことはないので問題ありません。

執筆者は現在こちら↓を使って自動化しています 。ただし、最初の1台は機能が限定されていない通常の大きさのものをおすすめします。(トラブルの際に原因がわかりにくいため)

 
Aliexpressで購入した互換品についてはこちらで紹介しています。

Arduino IDEの導入

 Arduino IDEとは、Arduino用のプログラムを開発するためのPC用のソフトウェア、統合開発環境(Integrated Development Environment)のことです。

 Arduinoでプログラム(=スケッチと呼びます)を書く→ボードに書き込む

の一連の動作は基本的にこのIDEで完結します。

Windows 10でのインストール手順を解説します。(Mac等も同様かと思います。他のサイトを参考にしてください。)

※注意

以下の手順は2021/02/11時点のものとなります。サイトの表示やバージョン等が異なる場合があります。バージョンは基本的に最新のもので大丈夫です。

Arduino IDEのインストール

 Arduinoの公式ページより、自分のPCに合うインストーラーを選択します。


寄付を求められますが、無料で問題なく使用できます。 

ダウンロードしたファイル(.exe等)からインストールします。

 

ライブラリの導入

ライブラリとは、簡単に言えば便利なプログラムのセットです。頻繁に使う複雑なコードをライブラリにすることで、簡単に使えるようになります。(料理に例えれば、醤油や出汁、砂糖などがコード、それを調合しためんつゆがライブラリです。めんつゆが1本あれば簡単にうどんが作れます。)

Arduinoでは、Nintendo Switchのコントローラーとして認識、使用するためのライブラリが複数の有志の方によって配布されています。

本ブログでは以下のライブラリをお借りして使用しております。

 

上記の記事の通りにライブラリをインストールしてください。

以下では、執筆者自身がつまづいた内容を兼ねて簡単に解説します(上の記事を読んだうえで参考にしてください)。

NintendoSwitchControllライブラリ

GitHubよりライブラリをダウンロードして展開します。


>展開した「NintendoSwitchControll-master」フォルダをArduinoのライブラリのあるディレクトリ(.../Documents/Arduino/librariesなど)に移動する。

これでライブラリがArduino IDEで使えるようになります。

 

 デバイスIDの書き換え

 上記のライブラリを使用してスケッチをArduinoに書き込んでも、そのままではSwitchで反応してくれません。それは、Switch側がコントローラーとして認識してくれないためです。そこで必要なのがデバイスIDの書き換えです。

デバイスIDを書き換えることで、Arduino Leonardoをコントローラー(ここでは有線のホリコン)として認識してもらえるようになります。

 

 Arduino IDEを開き、ファイル>スケッチ例 から適当な(内臓の)スケッチを開きます。


 スケッチ>スケッチのフォルダを表示 します。


開いたフォルダから上へたどっていくと「Arduino」フォルダがあるので、そこからhardware/arduino/avr/boards.txt としてboards.txtを探します。

 

 boards.txtをどこかにバックアップした上で、もう1つtxtをどこか(デスクトップなど)に保存してください。別の場所に保存したtxtをメモ帳以外のテキストエディタ(サクラエディタ等)で開きます(メモ帳だと失敗することがあります)。avrフォルダに入っているtxtを編集しようとしてもアクセス制限がされて保存できないかと思います。

leonardo.vid、pidとついたすべての列について、

leonardo.vid.0=0x0f0d
leonardo.pid.0=0x0092

のように変更してください。少し下の方にある、

leonardo.build.vid なども同様にしてください。最後に保存したboards.txtを置き換えて終了です。


 サンプルスケッチの書き込み

 Arduino IDEやライブラリのインストールが終わったら、実際にスケッチをボードに書き込んでみましょう。

インストールしたライブラリには、サンプルのスケッチが付属しているので、それを開きます。ファイル>スケッチ例>NintendoSwitchController の中から1つ選んで開きます。

それぞれのスケッチについては後述します。

 

PCにUSBでマイコンを接続してください。 ツール>ボード でArduino Leonardoを選択し、すぐ下のシリアルポートで接続したボードを指定してください。ポートがわからない場合は、(Windows)コントロールパネルからハードウェアとサウンド>デバイスマネージャー>ポート で確認できます。

 左上の「検証」(✓マーク)を押すと、ウインドウ下部に コンパイルしています と表示されます。ライブラリがインストールされていて、スケッチに異常がなければ、 完了しました に代わります。その場合、ボードをPCにつなぐことで書き込みができます。「検証」の隣の「マイコンボードに書き込む」を押すことで書き込みが始まります。ボードのランプが光っている間、書き込みが終わるまでは抜かないでください。

 

 書き込みが終わったら、ボードとUSBをPCから抜いてください。

最後に、 Switchに接続(ドックにUSBで接続 or USB TypeCに変換してSwitch (lite)本体に接続)します。うまく書き込めていれば、剣盾の主人公が勝手に動き出すかと思います。

※注意

Switchに別のコントローラーが既に認識されている場合は、Arduinoが2Pコン扱いとなり見かけ上反応していないことがあります。その場合はコントローラーの接続を外し(無線コントローラーの場合は一度Switchの画面を切るなどする)、再度ボードを挿しなおしてみてください。

Switchの設定>コントローラーとセンサー>入力デバイスの動作チェック を選択することでも動作を確認できます。

 

サンプルスケッチ解説

サンプルスケッチの説明はGitHubならびに各スケッチ上に書いてあります。ここでは簡単な説明のみとします。スケッチ等の説明を読んでから使用してください


※注意

2020/12/01に更新されたSwitchのバージョン11.0.0以降では、HOMEメニュー左下に「Nintendo Switch Online」のアイコンが追加されました。これにより、日付変更をする際の操作が1つ多く必要となり、サンプルスケッチの一部は正常に動作しません。

バージョン更新の影響があるサンプルファイルに(※)と記載します。

 

(※)のスケッチでは、以下の変更をすることで正常に使用することができます。

 以下では「auto_gain_watt」を例にします。

日付を変更する操作のうち

    // ホーム画面 > 設定
    pushButton(Button::HOME, 1000);
    pushHatButton(Hat::DOWN, 100);
    pushHatButton(Hat::RIGHT, 100, 4);
    pushButton(Button::A, 1000);
    // 設定 > 本体 > 日付と時刻

 のような部分について、

pushHatButton(Hat::RIGHT, 100, 4); を 

pushHatButton(Hat::RIGHT, 100, 5); に変更してください。


 サンプルスケッチ一覧

・auto_gain_watt 自動ワット稼ぎ(※)

日付変更バグ(時渡り)を利用してワイルドエリア等の巣穴のワットを回収し続けます。

・auto_hatching 自動孵化

ワイルドエリア(ハシノマはらっぱ)の育て屋からタマゴを1個ずつ回収、孵化を繰り返します。

・auto_raid_battle 自動レイドバトル

願いのかたまりを投げ入れてレイドバトル、ポケモン捕獲を繰り返します。

・IDkuji 無限IDくじ(※)

日付変更バグ(時渡り、ランクマッチ利用)を利用してIDくじを引き続けます。

・ransushouhi レイドバトル乱数消費(※)

日付変更バグ(時渡り、ランクマッチ利用)を利用して指定の日数だけレイドバトルの乱数を進めます。

・ release_pokemons自動ポケモン逃がし

1ボックス分のポケモンを逃がし続けます。


以上のスケッチを利用することで、

・ワットを稼いで金策

・孵化厳選を楽にして色違い入手

・IDくじでポイントアップやマスターボールの入手

などが可能となります。


2022.05.23追記:導入に関しての質問などが増えてきており、文章だけだと分かりにくい箇所があるため、導入手順をまとめた動画を公開します。

次回からは、執筆者が作成、改変したスケッチを公開していきます。

 

27 件のコメント:

  1. デバイスIDの書き換えなのですが、アクセスが拒否されていて書き換えることができません。見当違いかもしれませんが、教えてください。

    返信削除
    返信
    1. 元の位置のtxtを編集していないでしょうか?一度どこか(デスクトップなど)にコピペし、そこのファイルを編集し、最後に編集したtxtをもとのファイルに移動させてください。

      削除
    2. 一度デスクトップに移動させているのですが、戻そうとすると管理者の権限が必要です。と出て移動できません。

      削除
    3. Program files内を編集する場合、どうしても管理者権限は必要となります。
      PCに複数のアカウントがある場合は、管理者権限のあるアカウントでの操作が必要です。
      管理者権限アカウントのはずなのにできない場合は、アクセス許可などの設定が必要かもしれません。

      削除
    4. アカウントは1つです。調べてみます。ありがとうございました。

      削除
    5. 何度もすいません。どこかわかりやすい説明のサイトなどはありませんでしょうか?教えていただけたら幸いです。

      削除
    6. 以下のサイトの質問が参考になるかと思います。
      https://answers.microsoft.com/ja-jp/windows/forum/all/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92/46b9c543-d776-4673-a0ba-6917fd016c0e
      解決しない場合は、「windows 管理者 なのに 管理者権限」などで検索してみてください。

      削除
    7. 横から失礼します。
      同じようにboards.txtを別場所にコピーする→編集→aveフォルダに戻す→管理者権限で戻せない で詰まっています

      こちらのアドバイス先のURLの方法を試してみましたが駄目でした

      可能でしたら動画にしていただきたいのですがいかがでしょうか

      削除
    8. boards.txt編集後、元の位置のファイルを削除→編集後ファイルを置こうとした場合、管理者権限で止まるのは削除の段階でしょうか?置く時でしょうか?
      管理者権限については、こちらの環境で確認できていないので、対処法が分からない状態です。上記サイト以外にも、管理者権限に関して異なる方法で解決しているものがあるかと思いますので、色々と試してみてください。

      削除
    9. 参考程度にお聞きくだされば・・
      私もboards.txtの編集後元のフォルダー配下に戻そうとしたところアクセス権限が無いとのことで戻せませんでした。
      どうやらArduino IDEのインストールしたものが違ったようでWindows appからインストールするとフォルダーパスが変わるようです。
      以下パス記載しておきますので編集できない方はこちらも確認してみてはいかがでしょうか。

      C:\ProgramFiles\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\hardware\arduino\avr
      ↑編集不可

      C:\Program Files (x86)\Arduino\hardware\arduino\avr
      ↑編集可能

      削除
    10. C:\ProgramFiles\WindowsAppsに入っている場合は、再度Arduino IDEのインストール(写真の赤丸から)実施していただくと、C:\Program Files (x86)\Arduino\hardware\arduino\avr 配下にファイルができます。

      削除
  2. スケッチ例にNintendoSwitchControllerが表示されないのですがどのようにしたら表示されますか?

    返信削除
    返信
    1. スケッチ例に表示されていないのであれば、少なくともライブラリのサンプルスケッチが正しく認識されていません。
      正しくDLしたファイル一式がzipを解凍してあり、librariesに入っているか確認してください。

      削除
  3. 質問失礼します
    デバイスIDを書き換えても書き換えたことにならないのですがどうすればいいですかね?

    返信削除
    返信
    1. まずは元の場所にて置き換えたboards.txtを開き、編集したはずの箇所を確認してください。
      編集箇所は1箇所でないので、Ctrl+Fで検索しつつすべて確認、編集してください。

      削除
  4. 質問失礼します。
    開いたフォルダから上へたどっていくと「Arduino」フォルダがあるので、そこからhardware/arduino/avr/boards.txt としてboards.txtを探します。のところなんですけど、Arduinoのファイルがないときは、どうすればよいですか。

    返信削除
    返信
    1. CドライブからProgram Filesなどのフォルダを探してみてください。IDEのインストール場所を任意で設定していない限りは比較的浅いところにあるかと思います。

      削除
  5. はじめまして
    こちらの記事を参考にArduino Leonardo互換ボードを購入して
    色厳選を自動化しよう思っています。

    arduino avr boardsを最新版(1.8.5)にしたところどうしてもうまくいきませんでした。
    boards.txtの変更箇所の行数も変わっていました。
    arduino avr boardsを1.8.4にしたところ上手く動作するようになりました。
    私の環境だけかもしれませんが、ご報告させていただきます。

    現在、絶賛レジエレキの色厳選中です。

    返信削除
  6. はじめまして。
    こちらの記事を参考に自動化に挑戦をしております。
    デバイスIDの書き換えも完了し、サンプルスケッチで稼働することも確認いたしました。

    しかし、ミドリカワセミ様の作成したスケッチを書き込みしたところ動きませんでした。原因がどこにあるかわかりますでしょうか?
    また初歩的な質問で失礼いたしますが、NintendoSwitchControll-master以外の.inoファイルの保存場所は\Documents\Arduino\librariesで合っていますでしょうか?
    よろしくお願いいたします。

    返信削除
    返信
    1. サンプルスケッチでボタンが認識されているのであれば、公開しているプログラムも基本的には動くかと思います(NintendoSwitchControll-master以外のライブラリは使用しておりません)。スケッチの書き込みができているか、書き込み時に何かエラーメッセージ等ないか確認してみてください。
      ライブラリであるNintendoSwitchControll-masterの保存場所は...\Arduino\librariesで大丈夫です。inoファイル、つまりは作成したスケッチの保存場所についてはデスクトップでもどこでも任意の場所で大丈夫です。ライブラリと区別するため、むしろ...\libraries以外の箇所の方が良いかと思います。

      削除
  7. 質問失礼します。コンパイルしようとしたら次のようなエラーメッセージが表示されました。

    次のフォルダのライブラリNintendoSwitchControll-masterバージョン1.0.0を使用中:C:\Users\\Documents\Arduino\libraries\NintendoSwitchControll-master

    次のフォルダのライブラリHIDバージョン1.0を使用中:C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\HID

    どうしたらいいでしょうか?

    返信削除
  8. 初めまして。
    ミドリカワセミ様のブログを拝見しながら、BDSP自動化にチャレンジしています。
    boards.txtでのvid、pidの書き換えがうまくいかず、Switchに接続しても反応しないところでつまづいております。

    使用しているもの
    Windows10
    KEYESTUDIO Leonardo R3開発ボード

    確認したこと
    ①hardware/arduino/avr/boards.txtのテキストをデスクトップにコピーし、サクラエディタで編集したのちavrフォルダ内に戻してファイルを置き換えています。対応する全ての箇所を変更しています。
    ②まれにappdata(?)内にarduinoファイルが作成されている場合があるとの情報を見かけたので確認しましたが、ありませんでした。
    ③スケッチをボードに書き込む際、エラー等は一切出たことはなく、ボードのランプ点灯も正常に見えます。
    ④arduino ide内の「ボード情報を取得」にて何度確認してもvid、pidが変更されないままです。

    arduino ideをアンストしインストールし直したりもしましたが、状況は変わりませんでした。
    マイコンよりもパソコンに問題があるのではと思うのですが、私では原因を特定できず、お知恵をお貸しいただけないでしょうか。

    返信削除
    返信
    1. 読む限りではこちらとしても原因が浮かびません。
      ちなみに、arduino avr boardsのバージョンはいくつでしょうか?ツール>ボード>ボードマネージャーより確認できます。上記にて1.8.5(最新版)だと動かず、1.8.4だと動いたとの報告があります(私は1.8.3です)。

      削除
    2. 更新した場合、boards.txtが元に戻っているかと思うので、もう1度編集してください。

      削除
    3. ミドリカワセミ様、お世話になっております。
      お返事ありがとうございました。
      avr boardsのバージョンは最新版をインストールしておりました。
      アドバイス通りに1.8.4にしてみたところ、appdata内にarduinoのファイルが作られており、その中のboards.txtを編集したところ無事に動いてくれました!
      半分諦めかけていましたが、相談してよかったです。
      助言本当にありがとうございました。
      ダークライとアルセウスのコードをお借りいたします。

      削除
  9. ミドリカワセミ先生、お世話になっております。
    このエラーが出てしまいます。
    マカ錬金回し、隠密隊、交易自動化のデータを検証した結果、下記のメッセージが出てしまいます。
    ご教授頂けますでしょうか。

    mhrsGosekiNoRenkinjutsushi_Ver1.1:38:10: fatal error: auto_command_util.h: No such file or directory
    #include
    ^~~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    exit status 1
    auto_command_util.h: No such file or directory


    返信削除

【ポケモンSV×arduino06】道具プリンター乱数自動化(藍の円盤)

 ※本記事は、ポケモンSVの藍の円盤(DLC)にて、 道具プリンター を決まった日時に起動することで 特定のアイテム、ボールを狙って量産する操作を自動化 するプログラムについて解説した記事です。ポケモンSVの操作をArduino Leonardoで自動化しております。 本記事の内...