見出し画像

Poke-Controller導入 with Raspberry Pi Pico


はじめに

本手順はWindowsにPoke-Controller with raspberry pi pico を導入する手順です
多少導入が複雑ですが、上級者以上で安く済ませたい方にお勧めの構成です
試行錯誤しながら導入しましたので、picoの手順が抜けている可能性があります(コメントにてご指摘下さい)
(シリアル変換器は中華製で不良品が多少ありそうですが数で勝負する方向け)
初歩的なサポートはしかねますので自己責任での導入をお願いします

機器構成


amazonで執筆時に購入出来る、構成例は下記のとおりです

Raspberry Pi Pico RP2040

Micro USB Type-B(2.0)<-> USB Type-A  1本 通信可能なケーブル(充電専用ではない物)

USBSerial変換器

ジャンパーワイヤー
(20cm♂♀3種混合でもっと安いものがあるかもしれませんので探してみてください)

ブレッドボード

キャプチャーボード
所持済みの物があれば流用可能です

Poke-Controller-Modified/Poke-Controller-Modified-Extensionの導入

下記サイトから、PokeConModInstall.ps1をダウンロードしてC:¥配下に保存します。
https://drive.google.com/file/d/1H639xNnzUu49gv1ymziocR1pJfip-p47/view?usp=sharing

事前にメモ帳等でコードの中身を確認し、自己責任での実行をお願いします

PowerShellを管理者権限で実行します


上記の画像のように管理者権限のPowerShellにて次のコマンドを実行します
コマンド間違えをしないようコピー&ペーストをしてください

Powershell -ExecutionPolicy Bypass -File "C:\PokeConModInstall.ps1"

PokeConフォルダはC:¥配下に作成されます

プロンプトに沿って導入したいPoke-Controllerのバージョン1・2・3を選んでから、インストールするフォルダ名のみ(ドライブ名は除く)を入力します

Poke-Controllerを起動したい場合は、インストールフォルダのPokeCon.cmdをダブルクリックで実行します(管理者として実行は無し)

以上でPoke-Controllerのインストールは完了です

ArduinoIDEの導入

ArduinoIDEをダウンロードします(1.8.19を推奨)Win7 and newer
その他のバージョンは自己責任でのご使用お願いします

https://www.arduino.cc/en/software

ダウンロードしたarduino-1.8.19-windows.exeを実行しインストールします

スタートメニューからArduinoIDEを起動します

ファイルの環境設定を実行します

追加のボードマネージャのURLに次のサイトを入力します

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

ボード情報を取得し、インストールします

picoで検索すると出てきますので3.6.0をインストールします

raspberry pi picoの導入とテスト

下記サイトからpico用のファームウェアをダウンロードします
(執筆時のversionは0.2)

ダウンロードしたファイルのusb_descriptors.cを拡張子usb_descriptors.cppに変更してください

Arduino IDEでPokeControllerForPico.inoを開きます

Raspberry Pi PicoのBOOT SELボタンを押しながらPCと接続します

ツール->ボード->Raspberry Pi RP2040 Board(3.6.0)->Raspberry Pi Picoを選択します

ツール->USB Stack->Adafruit TinyUSBを選択します

ファイル->開くでスケッチ(PokeControllerForPico.ino)を開きます

スケッチ->マイコンボードへ書き込みを実行します

コンパイルエラーが発生する


C:\Users\User\AppData\Local\Temp\arduino_build_453590\libraries\Adafruit_TinyUSB_Library\arduino\Adafruit_USBD_Device.cpp.o: In function `tud_descriptor_device_cb':
C:\Users\User\Documents\Arduino\libraries\Adafruit_TinyUSB_Library\src\arduino/Adafruit_USBD_Device.cpp:371: multiple definition of `tud_descriptor_device_cb'
C:\Users\User\AppData\Local\Temp\arduino_build_453590\sketch\usb_descriptors.cpp.o:C:\Users\User\Desktop\Poke-Controller-master\arduinoIDE\PokeControllerForPico-master\PokeControllerForPico/usb_descriptors.cpp:70: first defined here
collect2.exe: error: ld returned 1 exit status

上記のようなエラーが表示されるはずですので、表示されたエラーメッセージのcppファイルを編集し、extern Cを検索してextern Cの影響範囲をすべて/* */でコメントアウトします
クラスの定義がされているがCでは読めないコンパイルエラーのようなので
CPPファイルに変更したのですが、CPPファイルに変更した場合多重定義になっているようなので力業で編集しました
正確な直し方をご存じの方がいましたらコメントください

下記3つのファイルで競合しますAdafruit_USBD_Device.cpp
hid/Adafruit_USBD_HID.cpp
msc/Adafruit_USBD_MSC.cpp

書き込み完了後下記リンクのHardwareTesterでボード情報を取得し、
POKKEN CONTROLLER VID: 0f0d PID 0092に変わっていることを確認します
問題なければPCから外します

書き込みが終わったら、Raspberry Pi PicoとSwitchを接続します

シリアルアダプターのドライバーの導入

シリアルアダプタをPCに接続します

下記のリンクからドライバーをダウンロードします

ダウンロードしたドライバを解凍し、適当なフォルダにコピーします。
解凍したフォルダの内容です。

デバイスマネージャーを開き、USB Serialにビックリマークがついている場合下記手順を実施します。

USB Serialを右クリックしプロパティを実行します。

ドライバータブでドライバーの更新ボタンを実行します。

ドライバの検索を実行します。

ドライバを解凍したフォルダを参照して次へを実行します。

ドライバーがインストールされます。

USB-Serial CH340が認識され、ポート番号が表示されていることを確認します。

接続図

シリアル通信のつなぎ方

Raspberry Pi PicoのGPIO図

PC USB シリアルアダプタ TXD ⇒ RX  raspberry pi pico GP2番ピン
                 シリアルアダプタ     RXD ⇒ TX  raspberry pi pico GP1番ピン
                 シリアルアダプタ     GND ⇒ GND raspberry pi pico GP3番ピン
GPピンの接続は番号がややこしいので、上記図と照らし合わせて完全に理解してから実施してください(自己責任でお願いします)

HDMIキャプチャーボードの接続

PCのUSBポートに接続してください。
標準ドライバを使用するため、自動でインストールされます。

Poke-Controllerの起動と動作確認

Poke-Controllerの起動はC:¥ポケコン導入フォルダ¥PokeCon.cmdをダブルクリックで実行します

ディスプレイポート番号とシリアルポート番号を設定しreload portを実行しPoke-Controllerが認識することを確認します

仮想コントローラを起動し、Aなどを連打してSwitchが動くことを確認します

Switch本体の設定

□設定->テーマ ベーシックブラックに変更します(使うプログラムによって変更する場合有り)
□設定->テレビ出力->テレビの解像度 720pに変更します
□設定->テレビ出力->画面の大きさを調整 100%に変更します

SwitchとPoke-Controllerの入力テスト

Switchの設定->コントローラーとセンサー->入力デバイスの動作チェック->ボタンの動作チェック画面の状態で、Raspberry Pi PicoをSwitchのドックに接続し、Poke-Controllerのコントローラでボタンが自動で入力されることを確認します

動かない場合の確認事項

□ HardwareTesterでボード情報を取得し、PokkenControllerとして認識している事を確認します
□ USB HUBなどでつなげている場合はPCに直接接続します
□ PCのUSBポートを変更します
□ デバイスマネージャでシリアルアダプタのCOMポートの番号があっていることを確認します
□ シリアルアダプタとRaspberry Pi Picoの接続があっていることを確認します(GPの番号に注意)
□ Switchのドックに電源ケーブルが刺さっていて通電していることを確認します
□ Steamのソフト、NZXT CAMのソフトなどOS起動時に自動実行されるソフトウェアを停止します

2024/01/22 ポケコン導入スクリプトを自作の物に切り替えました

この記事が気に入ったらサポートをしてみませんか?