スプラトゥーン3で使えるドット打ち自動化ツール(windows+ArduinoUNO3)

locodolinfo

概要

スプラ3でも動作するものを探して導入した手順の備忘録です。実際に手を動かしたことは1から100まで書いて残そうとおもいます。

結論

投稿できました。複数有志の手で改良が進められているため使用したリポジトリを気が向いたときに追加していきます。

  • Loloweb / Switch-Fightstick | GitHub
    shinyquagsire23さんのリポジトリのフォークです。スプラ3にも対応していますがbin2c.pyとpng2c.pyに修正が必要です。これを使用する場合はpng2c.pyを開いてfor i in range~の部分を次のように変更してください

//この1行をコメントアウトする
#for i in range(0320*120) / 8): 

//この1行を追加する
for i in range(04800):
  • https://github.com/Sp4rkR4t/splat3draw
    shinyquagsire23氏のリポジトリのフォークです。Loloweb氏のbin2c.py、png2c.pyで発生していたエラーを修正済です。自分は初回これを導入しました。

参考

実際の手順やトラブルシューティングの際非常に助かりました。感謝します。

また必要ソフトウェアの導入やマイコン環境構築そのものに関してはこちらを参考にしました。

必要品

・ハードウェア

  • switch本体(Lite含む)

  • windowsPC

  • Arduino UNO R3(マイコンボード、自分はポケモンで使ってるものを流用)

  • USB2.0ケーブル  A-Bタイプ(データ転送用)

  • USB-typeCハブ(USB Type-CポートとUSB 3.0ポートが存在するもの)

自分が使用しているピンチケArduinoのリンクはこれです。USBケーブルも同梱で2500円以下とアドです。amazonレビューにある通りハズレ個体引くリスクはあります。

ELEGOO Arduino用UNO R3コントロールボード ATmega328P +USBケーブル

スイッチサイエンスで買える正規品はこっち(初めてswitch自動化用のマイコンを導入したりポケモン・モンハン等いろいろ流用したいなら正規品のほうが保証もついてておすすめです。

SWITCHSCIENCE Arduino Uno R3

基盤むき出しが嫌なので自分はケースも買いました。組立時に小さいナット回すのが若干ダルいです。

Arduino UNO R3 透明 アクリル エンクロージャー ケース 薄型 コンパクト

ソフトウェア

  • splatoon3

  • Switch-Fightsitck

  • AVR

  • Git for windows

  • python2.7

  • LUFA

  • dfu-programmer

  • Arduino IDE

  • テキストエディタ

  • 画像編集ソフト(クリスタ、無料ならGIMP等)

導入

■下準備

1.WinAVRのインストール

  1. sourceforgeから最新版をダウンロードする。インストールはデフォルト設定のまま連打でいい。

  2. WinAVRのpower.hを開く
    [WinAVRインストール先]\avr\include\avr\power.h
    WinAVRのデフォルトのインストール先はC:\WinAVR-20100110

  3. このファイル内を clock_div_1 = 0 で検索
    ファイル内の検索の仕方はエディタごとに異なるが大体"Ctrlキー"と"Fキー"の同時押し

  4. そのすぐ上にある #if defined(__AVR_AT90CAN32__) から始まる部分に次の行を追加
    || defined(__AVR_ATmega16U2__) \

追加する行はどこでもいい自分は一番上に追加した

2~4の手順を忘れるとatmega16u2宛てにmakeするとエラーが返されるので必ず行ってください。自分は忘れて苦労しました。

2.Git for windowsのインストール

  1. 公式サイトからインストーラをダウンロードする。downloadを押せば32bit版か64bit版か自動で判別してDLが始まります。こちらもインストール時はnext連打でOKです。設定に関しては参考先の方が丁寧に解説なさっています。

3.python2.7のインストール

  1. 公式サイトからOSが64bit版ならWindows x86-64 MSI installer、32bit版ならWindows x86 MSI installerをダウンロードする。インストール時のカスタム設定でAdd python.exe to Pathにチェックを入れてインストールする。

  2. Git Bashで以下のコマンドを実行してPillow(Pythonの画像処理ライブラリ)をインストール

pip install Pillow

インストール出来たか確認するには以下のコマンドを実行します。

pip list
こんな感じの結果が表示されていればOK(画像はcmdでpip listを実行したもの)

■作業

1.必要リポジトリを入れる

Git Bashを起動して作業していきます。C直下に新規でディレクトリを作成しそこに必要なリポジトリを入れていきます。

//新規ディレクトリ作成

cd /c
mkdir spla3

//作成したディレクトリに移動
cd spla3

LUFAライブラリとSwitch-Fightstickを作成したディレクトリにクローンします。

//LUFAライブラリとSwitch-Fightstickをクローン

git clone https://github.com/abcminiuser/lufa.git LUFA
git clone https://github.com/Sp4rkR4t/splat3draw.git

//クローン先に移動

cd splat3draw

Switch-Fightstick が1つ上の階層のLUFAディレクトリ(大文字)を参照するので、/c/spla3/以下にSwitch-Fightstickディレクトリ とLUFAディレクトリ が存在している状態にします。

ライブラリをLUFA公式からZIPで入手した場合ファイルを大文字にリネームするのを忘れないこと

2.用意した画像をドット絵に変換する

用意した画像(例としてika3.png)をSwitch-Fightstickフォルダに入れておく。以下のコマンドで用意したika3.pngからimage.cファイルを作成する。なお画像は自分でクリスタなりGIMPなりで編集して縦横320*120pxの2値化済のものを用意する方が仕上がりは綺麗になる。

python png2c.py ika3.png //用意した画像がpng形式の場合

python bin2c.py ika3.data //用意した画像がraw形式の場合

python png2c.py -p ika3.png //変換後のika3.pngのプレビュー

3.MCUの変更

Switch-Fightstickフォルダ中にあるmakefileをテキストエディタで開き、14行目付近のMCU = at90usb1286の部分を以下のように変更しておく。

# Set the MCU accordingly to your device (e.g. at90usb1286 for a Teensy 2.0++, or atmega16u2 for an Arduino UNO R3)
MCU          = atmega16u2

4.ビルドする

Git bashに戻って作業する。
正常にビルドが完了するとjoystick.hexというファイルが作成される。

make

5.ドライバのインストール

  1. こちらからdfu-programmer-win-0.7.0.zipをダウンロード&解凍し、
    dfu-programmer.exeをコピーしてjoystick.hexと同じフォルダに貼り付けておきます。

  2. PCとマイコンをUSBで接続しマイコンをDFUモードに移行させます。
    DFUモードはPCとマイコンを接続後、RSTとGNDのピン(購入リンクを貼った上述の2つのボードはUSB端子に一番近い2つのピン)をジャンパワイヤ、ダルい場合ははさみ、イヤホンジャック等金属で短絡させると移行できます。

  3. デバイスマネージャーを開いて不明なデバイスを右クリック→ドライバの更新を選ぶ。コンピューターを参照してドライバソフトウェアを検索を選択し、参照先にdfu-programmer-win-0.7.0のフォルダを指定。最下層のファイルを指定しなくても自動で適切なドライバがインストールされる。
    ATmega16U2のドライバがインストールされ、デバイスに表示されれば成功。

DFUモードへ移行するには赤丸で囲んだ2つのピンの間を短絡させる
ドライバインストール後

6.Arduinoへの書き込み

PowerShellを開き、joystick.hexが存在するディレクトリへ移動しマイコンに書き込まれていたプログラムを消去・上書きを実行する。

//joystick.hexが存在するディレクトリへ移動

cd c:\spla3\splat3draw

//既にマイコンに書き込まれているプログラムの消去

.\dfu-programmer.exe ATmega16U2 erase

//joystick.hexの書き込み

.\dfu-programmer.exe ATmega16U2 flash Joystick.hex

実際にgit bashでコマンド打ち込むと以下のような出力が得られると思います。

joystick.hexのビルドができるまで

上記の画像の通りにビルド出来たらpowershellでマイコンに書き込んでいきます。たぶんこんな感じになると思います。

checking memoryでエラー吐いているけど動く

以下実際にマイコンをswitchに挿して動作させた結果を示す。

元画像:TVアニメ"普通の女子高生が【ろこどる】やってみた。12話より
png2.cに変換をすべて任せた場合
画像編集ソフトでいじる
実行 ハードのラグかドット打ちがズレる箇所が出るので修正する。


BAND- MAID MV “Unleash!!!!!”より GIMPで2値化
第一回フェス投稿用 ウマ娘からスペちゃん こっちはクリスタで減色→それっぽい範囲をトーンブラシで塗り潰し→いい感じにいじって完成