ちょっと調べもの:ESP32C3とBluetoothの規格

はじめに

 このホームページでは、度々ESP32とPS4のコントローラ(DUALSHOCK4)をBluetoothで接続する方法についてまとめています。今回の記事は、ESP32C3でもPS4のコントローラと接続したくて調べてみたという話です。

▼これがESP32C3。小型でありながら、BluetoothやWiFiに対応しています。

 

 ひとまずESP32で使っていたPS4Controller.hで、ESP32C3用にコンパイルしてみたらエラーが出ました。GitHubではIssuesのところに問題が報告されるのですが、同じようなエラーが出ていました。

▼こちらと大体同じでした。

 https://github.com/aed3/PS4-esp32/issues/52

 他にもGitHub上にIssueがあったのですが、その中にPS4のコントローラとESP32C3ではBluetoothの規格が違っていたはずという意見がありました。

▼こちらのIssueです。

 https://github.com/aed3/PS4-esp32/issues/32

 そもそもハードウェア的に接続できないなら無理だろうということで、Bluetoothの規格について調べることにしました。

▼以前の記事

ESP32を使って、PS4コントローラとBluetooth接続する

はじめに  今回はESP32を使って、PS4のコントローラとのBluetooth接続をしました。ロボコンで使っているところを見たことがあります。最近はSwitchのコントローラで操作…

ESP32を使って、PS4コントローラとBluetooth接続する:ライブラリ修正編 その1

はじめに  以前の記事で、ESP32とPS4コントローラのBluetooth接続をしました。コンパイルエラーが多発して結構苦労しました。  ライブラリに問題があって、そのままだと…

ESP32C3について

 ESP32C3は、ESP32系のマイコンでも比較的新しいものです。

 ESP32C3を使いたかったのは、これまで使っていたESP32よりも小型だったからです。Arduinoでもそうですが、そんなにピンをたくさん使わないので小型で良いんですよね。

 また、ESP32C3にはバッテリー用の端子があります。しかもバッテリーチャージャー機能付きです。バッテリーを充電するためのモジュールは販売されていますが、それも不要になるので小型化に適していると思います。

 C3にもいくつか種類があって、私が購入したのは「Seeed Studio XIAO ESP32C3」です。ちなみにArduino IDEでのボードの指定が、XIAO以外のESP32C3だと書き込めなかったので注意が必要です。

▼ESP32とESP32C3を並べるとこんな感じ。C3はアンテナ付きです。

 配線が伸びているのは、ピンでバッテリーの電圧を測定するためです。Seeed Studioのフォーラムで紹介されていました。

▼こちらの投稿です。

 https://forum.seeedstudio.com/t/battery-voltage-monitor-and-ad-conversion-for-xiao-esp32c/267535

▼見よう見まねではんだ付けしてみました。こういう不安定な配置ではんだ付けするのは怖いですね...

▼データシートはこちら

 https://www.espressif.com/sites/default/files/documentation/esp32-c3_datasheet_en.pdf

Bluetoothの規格について

 Bluetoothにもバージョンがあります。特に問題なのは互換性が無いものがあるということです。

Bluetooth4.0以降と、Bluetooth3.0以前では互換性がありません

 http://qa.elecom.co.jp/faq_detail.html?id=4055

 普段Bluetoothの機器を使っていても気にしないことではないでしょうか。古い規格にも対応している製品が多いのだと思います。

 なおBluetooth 4.0以降はBluetooth Low Energy(BLE)、3.0以前はBluetooth Classicとも呼ばれるそうです。

▼Bluetooth ClassicとBLEの違いは、こちらが分かりやすいです。BLEではデバイスの存在や距離、方向まで特定できるのだとか。低消費電力動作でありながら、面白い機能を持っていますね。マイコンでも活用できるのでしょうか。

 Bluetooth 技術概要|Bluetooth® Technology Website

 https://www.tjsys.co.jp/focuson/clme-bluetooth/bt-difference.htm

▼現時点での最新バージョンはBluetooth 5.4みたいです。

https://www.silabs.com/blog/the-new-bluetooth-5-4-what-you-should-know-first

▼Arduino IDEのBLE Libraryについても触れているページ

 http://marchan.e5.valueserver.jp/cabin/comp/jbox/arc212/doc21201.html#sect6

ESP32C3のBluetooth

 データシートには、「Bluetooth LE: Bluetooth 5, Bluetooth mesh」と書かれています。

▼ESP32のシリーズ比較。こちらだとC3はBluetooth 5.0のみに対応しているようですね。ESP32の欄にあるBR/EDRはBluetooth Classicの別名です。

 https://docs.espressif.com/projects/esp-idf/en/v4.3/esp32c3/hw-reference/chip-series-comparison.html

PS4のコントローラのBluetooth

 Sonyの技術仕様に関するページでは、「Bluetooth Ver2.1+EDR準拠」と書かれていました。意外と古いバージョンみたいですね。

▼PS4の本体は「Bluetooth v4.0」と書かれていますが、暗黙的にClassicにも対応しているのでしょうか。

 https://www.playstation.com/ja-jp/ps4/tech-specs/

▼コントローラのデータ形式について詳しく書かれているページがありました。

 https://www.psdevwiki.com/ps4/DS4-BT#Bluetooth_Addressing

最後に

 まとめると、

  • ESP32C3はBluetooth 5.0のみに対応
  • PS4のコントローラはBluetooth Classic
  • Bluetooth ClassicとBluetooth5.0には互換性が無い

ということで、C3とDUALSHOCK4では通信できなさそうです。

 特にBluetoothについて詳しいわけではないですし、間違っている所があるかもしれません。もし接続できる方法があれば、教えていただけると助かります。

 ちなみに、PS5のコントローラ(DualSense)はBluetooth 5.1だそうです。ライブラリがあれば、C3とも接続できるかもしれませんね。自分でライブラリを作成するのはやりたくないです...

▼iPhone8以降はBluetooth 5.0が搭載されているそうです。実際、C3とiPhoneのアプリで通信できました。別の記事にまとめる予定です。

 https://time-space.kddi.com/ict-keywords/20190909/2738

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です