【Arduino自動化 番外編】マイコン導入にあたって気をつけるべきと思ったこと【ポケモン自動化 方法調査】

こんにちは。ますたーです。

今回は、ポケモン剣盾の自動化をするにあたってArduinoマイコンの比較と、参考Webサイトについてまとめます。
付け焼き刃な知識ですが、皆様の最初のマイコン選びの一助になると思い、素人なりに一生懸命調べたので、忘備録がてら記します(間違ってたらごめんなさい)。

長いので、忙しい人は「Arduino UNO・Leonardoそれぞれの剣盾自動化」以降を読むと、先駆者のブログ記事にリンク貼っていますので参考になると思います。

 

目次は下記の通りです。

※本ブログに初めてお越しの方は「本ブログについて」もぜひ、ご覧ください。

 

経緯(初心者が陥るマイコン選びの罠)

本当は4本目のポケモン剣盾自動化の記事…にしようかと思ったのですが、初心に立ち返ると、マイコンの購入がすごくハードルが高かったことを思い出しました。

(そりゃ、うまく行かないかもしれないものに3~4000円もかけてボード(互換機なら安いですが)を買うわけですから、うまく行かなかったらやるせない気持ちになるし、もったいない気持ちになりますよね)

 …で、Arduinoでのポケモン自動化を始めようと思った初心者の方々(私も含めて)は、まず、マイコンポケモン剣盾を自動化している、様々な紹介動画や導入記事を見て回ると思います。

そして、「どれも難しそう…」「結局どのマイコン買えばいいの…」「人によって持ってる機械(マイコン)が違う…」など、複雑な印象を受けたはずです。

また、少しプログラムやPC系を噛じった人なら「人によって呼び出している関数が違う…」「人によってArduino UNOがいいとか悪いとか言ってる…」というまばらな印象を持ったはずです。余計に混乱したかもしれません。

 それもそのはず。「マイコンポケモン剣盾を自動化する」という言葉がすごく曖昧なのです。テクニカルな話をしてもしょうがないので、ここではマイコンの種類やArduinoの種類については全く語りませんが、その種類はArduinoだけでも20種類を有に超えます

中には互換機と言って、オリジナルと同等の機能を備えた廉価版のボードもあります。互換機自体は素晴らしいものなのですが、最初のマイコン選びの観点からすると、目的が、ボード(Arduino)を選ぶことから、金額を抑えることに途中ですり替わってしまい何を買えばよいのかわからなくなってしまいます。また、互換機の中には、ボード上の印刷がない場合や、特殊な互換チップが搭載されている場合、ピンが少ない場合など、様々な差異もあるため、比較的上級者向けの商品といえます。

 

なぜArduino UNOかArduino Leonardoなのか

さて、結論を急ぎ、語弊を恐れずに言えば、ポケモン剣盾の自動化という目的に沿った最初のマイコン選び」なら、選択肢はたったの2つです

理由は明白で、日本においてSwitchの自動化についてまとめたブログ記事、日本において配布されているSwitchコントロール用のライブラリ・資料の多くは、ArduinoUNO・Leonardoのいずれかを利用しているからです(互換機を含む)。

ただし、これはあくまでもハードウェアの話です。その実装方法(プログラムの部分)は、これらの間で大きく異なりますし、さらに人によってまばらです。

 

Arduino UNOが持たないHID機能をLeonardoは持つ

ここで一つ余談をはさみます。Arduino UNOとLeonardoの機能的な違いです。
直接は関係ないので、読み飛ばしてもOKです→読み飛ばす

Arduino UNOかArduino Leonardoを使えばポケモン剣盾の自動化ができることは前述の通りですが、その実装方法は大きく異なります。

  • Arduino UNO:最もベーシックなArduino。Joy Conとして認識させる機能(HID機能)が標準で備わっていないためファームウェアも書き換えてJoy Conに擬態させる方法
  • Arduino Leonardo:UNOと違い、HID機能を持つため、ArduinoIDEを使って普通にプログラミング・書き込みを行う方法。ボード情報だけ書き換えることでSwitchの系列コントローラーに擬態させる方法

小難しく書きましたが、要するに、UNOとLeonardoではJoy Conになれるかどうかがそもそも違うのです(UNOはもともとなれない)。LeonardoはUSBのHID(ヒューマン・インターフェース・デバイス)クラスを予め持つため、有線コントローラとして認識する素地があるわけですね。

なので、素人の私からすれば、素直にArduino Leonardo使ったほうが確実なのでは?と思うわけですが、世の中は広いわけで、無いなら「ファームウェアを書き換えればいいじゃない!」となるわけです。マイコンを初めて購入する人には不思議な気がするかもしれませんが、やはり利用者の絶対数が多いArduino UNOならではの発想だと思います。

 

Arduino UNO・Leonardoそれぞれの剣盾自動化

まず、本ブログの導入記事でも扱っている通り、筆者としてはArduino Leonardo」+「SwitchControlLibrary」の組み合わせをおすすめしています。

ただし、先駆者のWebサイトは、駆け出しの当ブログと違い、内容も濃く、しっかりと記載されているため、これらを読んでから納得して選ぶのが妥当かと思います。

便宜上、Arduino UNO・Arduino Leonardoで大きく2つに分けて下記に記載します。
それぞれ、偉大な先駆者様のWebサイトへのリンクを載せますので、是非とも参考にしてください。

◆方法1:Arduino UNOを使う場合

Arduino UNOでは、原則としてWindowsPowershellや、Macのターミナルを使ってファームウェアを書き換えてJoy Conとして認識させます。

Arduinoの回路をショートさせたり、ターミナル(ハッカーとかがよくコマンドをカタカタ入れているアレ)を使う必要があるため、特にCUI初心者にはややハードルが高いのでは?と思います。逆に、少しでもターミナルを触れる人なら簡単に感じられると思います。また、海外を含め、プログラムの投稿数も多いらしいです。また、もとよりArduinoを触ったことがある方はArduinoといえばUNOという人も少なくなく、利用人口が多いというのも特徴です。

 

Arduino UNOの参考Webサイト】

sinonis826.hatenablog.com
blogenist.jp

 

rhapsx.blog.fc2.com

 

◆方法2:Arduino Leonardoを使う場合

前述の通り、Arduino LeonardoはHIDの機能を持っています。これがArduino Leonardoを使う最大の理由と言っても過言じゃないです。要するに、Arduino UNOと比較すると、プログラミングやマイコンに対する知識は少なくて済みます。
ただし、ライブラリが複数有志によって提供されており、これが初心者を混乱させる原因の一つでもあります。

1.ライブラリ「SwitchControlLibrary」を使った方法【本ブログおすすめ】

本ブログで紹介しているライブラリを使った方法です。私が個人的にArduinoの自動化を始めた今年の2月時点で勢いがあると思ったのでこれを採用しました。

ライセンスもMITライセンスとして提供されており、使える関数もそれほど難しく無いので、C言語が分かる人なら無理なくプログラミング・開発も始められます。

(ライブラリ:https://github.com/celclow/SwitchControlLibrary

【参考Webサイト】

qiita.com

 

sinonis826.hatenablog.com

 

2.ライブラリ「NintendoSwitchControll」を使った方法

もう一つ、Switchをコントロールできるライブラリの紹介です。

こちらは、interimadd氏、takeutchi氏、kurimoun氏の3名が合同で提供しているライブラリです。サンプルのソースや配布サイトも充実しており、こちらもおすすめです。

(ライブラリ:https://github.com/interimadd/NintendoSwitchControll

 

【参考Webサイト】

pokemonit.com

 

まとめ

むりやりですが、上述の内容をまとめたのが下図になります。

Arduino UNO・Leonardoで比較すると一長一短の関係になることがわかります。

f:id:tangential_star:20201108205357p:plain

Arduinoポケモン剣盾を自動化」の選択肢。

筆者としては、Arduino UNOには手続きが煩雑になる部分があるため、ポケモン剣盾の自動化だけを目的にするのであればArduino Leonardoを使うのが妥当だと考えます。

ただし、Arduinoを使ったプログラミングを楽しみたい、組み込み系の醍醐味を味わいたい、という方や、今までのバックボーンによっては、やはりコミュニティが活性になるArduino UNOを使うのも選択肢になるのかな、といったところでした。

 

ではではc⌒っ.ω.)っ

 

(宣伝)Arduino Leonardo+SwitchControlLibraryの導入記事:

【Arduino自動化01】Arduino開発環境の導入

 


【2020/11/11追記】続きを書きました。
Arduino Leonardoで使える自動化ソースコードのリンク集としても使えます。

【Arduino自動化 番外編2】NintendoSwitchControllライブラリの導入と、自動化できる作業の一覧【ポケモン剣盾自動化】

【2021/2/6追記】本ブログでおすすめしているArduino Leonardoとその他機器類について纏めました。筆者が使っている周辺機器の購入リンクも載せています。

【Arduino自動化 番外編3】筆者の使用機材一覧【紹介記事】