PS5 コントローラー は Bluetooth を用いて通信を行いますが、ロボコン会場には WiFi や Bluetooth が多く存在するため、混線する可能性があります。そこで 920MHz 帯を用いて通信します。小規模なロボットや、混線が置きにくいような環境下では Bluetooth を用いて構成することも可能です。
メインマイコン側のドキュメントは こちら にあります。
flowchart LR
subgraph 操縦者側
subgraph 送信基板
コントローラ --USB--> USBホストシールド --SPI--> 送信側マイコン[マイコン] --UART等--> 送信側モジュール[無線モジュール]
end
end
subgraph ロボット側
subgraph メイン基板
送信側モジュール[無線モジュール] -.920MHz.-> 受信側モジュール[無線モジュール] --UART等--> メイン側マイコン[マイコン]
end
end
flowchart LR
subgraph 操縦者側
subgraph 送信基板
コントローラ --USB--> USBホストシールド --SPI--> 送信側マイコン[マイコン] --UART等--> 送信側モジュール[無線モジュール]
end
end
subgraph ロボット側
subgraph 受信基板
送信側モジュール[無線モジュール] -.920MHz.-> 受信側モジュール[無線モジュール] --UART等--> 受信側マイコン[マイコン]
end
subgraph メイン基板
受信側マイコン[マイコン] --CAN等--> メイン側マイコン[マイコン]
end
end
flowchart LR
subgraph 操縦者側
コントローラ
end
subgraph ロボット側
subgraph メイン基板
コントローラ -.Bluetooth.-> Bluetoothドングル --USB--> USBホストシールド--SPI--> メイン側マイコン[マイコン]
end
end
flowchart LR
subgraph 操縦者側
コントローラ
end
subgraph ロボット側
subgraph 受信基板
コントローラ -.Bluetooth.-> Bluetoothドングル --USB--> USBホストシールド--SPI--> 受信側マイコン[マイコン]
end
subgraph メイン基板
受信側マイコン[マイコン] --CAN等--> メイン側マイコン[マイコン]
end
end
flowchart LR
subgraph 操縦者側
コントローラ
end
subgraph ロボット側
subgraph メイン基板
コントローラ --USB--> USBホストシールド--SPI--> メイン側マイコン[マイコン]
end
end
USB ホストシールドからコントローラの情報を受け取り、無線モジュールへ Udon::Message::PadPS5 型オブジェクトの転送を行います。
Udon::PadPS5USB クラスを用いることで、USB ホストシールドから Udon::Message::PadPS5 型オブジェクトを取得できます。getMessage() で取得出来ます。
コントローラに内蔵されている LED や、バイブレーションを動作させられます。
無線モジュールから取得した Udon::Message::PadPS5 型オブジェクトをメインマイコンへ転送します。
USB ホストシールドからコントローラの情報を受け取り、Udon::Message::PadPS5 型オブジェクトをメインマイコンへ転送します。
あらかじめコントローラと Bluetooth ドングルがペアリングされている必要があります。ペアリング方法ペアリング方法
PadPS5BT.hpp を個別にインクルードし、Udon::PadPS5BT クラスを用います。使い方は PadPS5USB クラスと同じです。
PadPS5USB クラスと同じく、コントローラに内蔵されている LED や、バイブレーションを動作させられます。
Bluetooth を使用してコントローラのデータを取得する場合、USB ドングルとのペアリングが必要です。一度ペアリングすると以降はペアリングする必要ありません。
PadPS5BT のコンストラクタに PAIR を指定し書き込むことで USB ドングルがペアリングモードで起動します。
クリエイトボタン、PS ボタンを長押しすることで、コントローラ側もペアリングモードになります。ペアリングモードへ移行するとライトバーが点滅します。
ペアリングは通常数秒で終わります。ペアリングが成功するとライトバーが点灯します。
ペアリングに時間がかかる場合、マイコンをリセットすることで大抵つながります。またホストシールドは電源電圧に敏感であるため、電圧値が正常か確認してください。