構成を考える
PS5 コントローラー は Bluetooth を用いて通信を行いますが、ロボコン会場には WiFi や Bluetooth が多く存在するため、混線する可能性があります。そこで 920MHz 帯を用いて通信します。小規模なロボットや、混線が置きにくいような環境下では Bluetooth を用いて構成することも可能です。
メインマイコン側のドキュメントは こちら にあります。
■ 920MHz 経由 / 無線モジュールがメイン基板にある場合 (推奨)
flowchart LR
subgraph 操縦者側
subgraph 送信基板
コントローラ --USB--> USBホストシールド --SPI--> 送信側マイコン[マイコン] --UART等--> 送信側モジュール[無線モジュール]
end
end
subgraph ロボット側
subgraph メイン基板
送信側モジュール[無線モジュール] -.920MHz.-> 受信側モジュール[無線モジュール] --UART等--> メイン側マイコン[マイコン]
end
end
■ 920MHz 経由 / 無線モジュールとメイン基板が別々の場合 (推奨)
flowchart LR
subgraph 操縦者側
subgraph 送信基板
コントローラ --USB--> USBホストシールド --SPI--> 送信側マイコン[マイコン] --UART等--> 送信側モジュール[無線モジュール]
end
end
subgraph ロボット側
subgraph 受信基板
送信側モジュール[無線モジュール] -.920MHz.-> 受信側モジュール[無線モジュール] --UART等--> 受信側マイコン[マイコン]
end
subgraph メイン基板
受信側マイコン[マイコン] --CAN等--> メイン側マイコン[マイコン]
end
end
■ Bluetooth 経由 / USB ホストシールドがメイン基板にある場合
flowchart LR
subgraph 操縦者側
コントローラ
end
subgraph ロボット側
subgraph メイン基板
コントローラ -.Bluetooth.-> Bluetoothドングル --USB--> USBホストシールド--SPI--> メイン側マイコン[マイコン]
end
end
■ Bluetooth 経由 / USB ホストシールドとメイン基板が別々の場合
flowchart LR
subgraph 操縦者側
コントローラ
end
subgraph ロボット側
subgraph 受信基板
コントローラ -.Bluetooth.-> Bluetoothドングル --USB--> USBホストシールド--SPI--> 受信側マイコン[マイコン]
end
subgraph メイン基板
受信側マイコン[マイコン] --CAN等--> メイン側マイコン[マイコン]
end
end
■ USB 経由
flowchart LR
subgraph 操縦者側
コントローラ
end
subgraph ロボット側
subgraph メイン基板
コントローラ --USB--> USBホストシールド--SPI--> メイン側マイコン[マイコン]
end
end
送信側マイコン用クラス
USB ホストシールドからコントローラの情報を受け取り、無線モジュールへ Udon::Message::PadPS5
型オブジェクトの転送を行います。
Udon::PadPS5USB
クラスを用いることで、USB ホストシールドから Udon::Message::PadPS5
型オブジェクトを取得できます。getMessage()
で取得出来ます。
.serial = Serial1,
.m0 = 2,
.m1 = 3,
.aux = 4,
.channel = 0,
});
void setup()
{
lora.begin();
}
void loop()
{
lora.setMessage(message);
delay(1);
}
E220 送信クラス
Definition E220Writer.hpp:20
有線USB経由PS5コントローラークラス
Definition PadPS5USB.hpp:32
bool begin()
コントローラーと通信開始
Definition PadPS5USB.hpp:48
Message::PadPS5 getMessage() const
Message::PadPS5型のメッセージを取得する
Definition PadPS5USB.hpp:108
void update()
更新
Definition PadPS5USB.hpp:61
PS5コントローラーのボタン情報
Definition PadPS5.hpp:21
コントローラに内蔵されている LED や、バイブレーションを動作させられます。
void setLightBar(const Udon::RGB &color)
ライトバーの色を設定する
Definition PadPS5USB.hpp:115
void setPlayerLamp(uint8_t mask=0b011)
5つのプレイヤーのランプの点灯を設定する
Definition PadPS5USB.hpp:125
void vibrate(uint8_t big=100, uint8_t small=100)
バイブレーション
Definition PadPS5USB.hpp:140
void setMicLed(bool on=true)
マイクのLEDの点灯を設定する
Definition PadPS5USB.hpp:132
受信側マイコン用クラス
無線モジュールから取得した Udon::Message::PadPS5
型オブジェクトをメインマイコンへ転送します。
.serial = Serial1,
.m0 = 2,
.m1 = 3,
.aux = 4,
.channel = 0,
});
void setup()
{
lora.begin();
}
void loop()
{
bus.update();
if (const auto message = lora.getMessage())
{
writer.setMessage(*message);
}
else
{
writer.setMessage({});
}
delay(1);
}
Teensy用 CANバスクラス
Definition CanBusTeensy.hpp:31
CAN通信 送信クラス
Definition CanWriter.hpp:23
E220 受信クラス
Definition E220Reader.hpp:22
void begin() noexcept
受信開始
Definition E220Reader.hpp:42
Bluetooth 使用時の受信側マイコン用クラス
USB ホストシールドからコントローラの情報を受け取り、Udon::Message::PadPS5
型オブジェクトをメインマイコンへ転送します。
あらかじめコントローラと Bluetooth ドングルがペアリングされている必要があります。ペアリング方法
PadPS5BT.hpp
を個別にインクルードし、Udon::PadPS5BT
クラスを用います。使い方は PadPS5USB
クラスと同じです。
void setup()
{
}
void loop()
{
}
void update()
バス更新
Definition CanBusTeensy.hpp:89
void begin()
通信開始
Definition CanBusTeensy.hpp:37
Bluetooth経由PS5コントローラークラス
Definition PadPS5BT.hpp:31
void update()
更新
Definition PadPS5BT.hpp:66
Message::PadPS5 getMessage() const
Message::PadPS5型のメッセージを取得する
Definition PadPS5BT.hpp:118
bool begin()
コントローラーと通信開始
Definition PadPS5BT.hpp:53
PadPS5USB
クラスと同じく、コントローラに内蔵されている LED や、バイブレーションを動作させられます。
void setPlayerLamp(uint8_t mask=0b011)
5つのプレイヤーのランプの点灯を設定する
Definition PadPS5BT.hpp:135
void vibrate(uint8_t big=100, uint8_t small=100)
バイブレーション
Definition PadPS5BT.hpp:150
void setLightBar(const Udon::RGB &color)
ライトバーの色を設定する
Definition PadPS5BT.hpp:125
void setMicLed(bool on=true)
マイクのLEDの点灯を設定する
Definition PadPS5BT.hpp:142
Bluetooth ドングルとのペアリング
Bluetooth を使用してコントローラのデータを取得する場合、USB ドングルとのペアリングが必要です。一度ペアリングすると以降はペアリングする必要ありません。
PadPS5BT
のコンストラクタに PAIR
を指定し書き込むことで USB ドングルがペアリングモードで起動します。
void setup()
{
}
void loop()
{
}
クリエイトボタン、PS ボタンを長押しすることで、コントローラ側もペアリングモードになります。ペアリングモードへ移行するとライトバーが点滅します。
ペアリングは通常数秒で終わります。ペアリングが成功するとライトバーが点灯します。
ペアリングに時間がかかる場合、マイコンをリセットすることで大抵つながります。またホストシールドは電源電圧に敏感であるため、電圧値が正常か確認してください。