M5 ATOM-LiteでDUALSHOCK4を使う [MCU]
小さくて安くてBluetoothもWifiも使えるM5 ATOM-LiteでDUALSHOCK4の接続ができました。
実のところ去年ぐらいにここの記事を参考にやってみてたんですが、いざちゃんと使うにあたっていろいろ難儀したので補足的なメモを。
2022/05/08 追記
最新版ライブラリを使う方法はこちら→[M5ATOMでDUALSHOCK4を使う(2022年版)]
ライブラリの流れとしてはPS3のSixAxisをESP32で使うesp-ps3があり、これをもとにPS4のDUALSHOCK4用に作られたものがPS4-esp32です。
使い方としてはほぼ同じものですが、ESP-IDF環境用だったものをPS4-esp32ではArduino IDEでも使えるよう修正を加えられています(※最新版ではまたESP-IDF用に戻った)。
使い方はPS4-esp32のリポジトリの説明に書いてあることそのままなのですが、先にも書いたとおり最新版ではESP-IDF依存のライブラリに戻ってしまっており、Arduino IDEでは使えません。
Arduino IDEで使うは Feb 13,2021 のコミットをZIPダウンロードする必要があります(下記URL)。
https://github.com/aed3/PS4-esp32/tree/35f2caa258875c1dfa1ad73901f4e2505dfeeccb
次にArduino IDEのファイル→環境設定→設定の「追加のボードマネージャのURL」に以下のjsonを追加してOKボタンをクリック。
ツール→ボード:XXX→ボードマネージャで、フィルターに「esp32」を記入して、Espressif SystemsのESP32ライブラリをインストールします。このときバージョンは1.0.4を選択します。1.0.5以降ではコンパイルでエラーになります。
スケッチ→ライブラリをインクルード→ライブラリを管理で、M5Atom,M5StickCのライブラリを最新版に更新します。その後、ライブラリ→ライブラリをインクルード→.ZIP形式のライブラリをインストールで先ほどダウンロードしたZIPファイルをインストールします。
ESP32 1.0.4のボードマネージャーではM5 ATOM-Liteはまだ登録されていないので、ボードは ESP32 Arduino→M5Stick-Cを選択します。
M5 ATOM-LiteのBluetooth MACの確認や、DUALSHOCK4への書き込みなどは先のQiitaの記事の通りです。
インクルードするヘッダは最新版に更新されていれば <M5Atom.h> が使用可能です。
その他にPS4-esp32からで大きく変わっているのは、ボタンステータスの確認をメンバ変数直接ではなく専用の関数を経由するようになっている点です。
オプジェクトのメンバ変数をそのまま触るのはあまり行儀がよろしくないので、この変更はいいと思いますね。ESP32のパフォーマンスならオーバーヘッドも微々たるものでしょう。
ライブラリのAPIはサンプルを見ればわかると思います。
そんなわけで、DUALSHOCK4のコントローラーアダプタとしてM5 ATOM-Liteが普通に使えました。ググっても先のQiita記事ぐらいしか出てこないので、あんまり流行りでもないのかな?と思ってたりしますが、M5 ATOM-Liteは低価格で入手性抜群ですしI/OピンもUART,I2C,SPIと一通り使える自由度もあるので、ロボットやラジコンの操作用 I/Fとしてお一つどうですか。
実のところ去年ぐらいにここの記事を参考にやってみてたんですが、いざちゃんと使うにあたっていろいろ難儀したので補足的なメモを。
2022/05/08 追記
最新版ライブラリを使う方法はこちら→[M5ATOMでDUALSHOCK4を使う(2022年版)]
ライブラリの流れとしてはPS3のSixAxisをESP32で使うesp-ps3があり、これをもとにPS4のDUALSHOCK4用に作られたものがPS4-esp32です。
使い方としてはほぼ同じものですが、ESP-IDF環境用だったものをPS4-esp32ではArduino IDEでも使えるよう修正を加えられています(※最新版ではまたESP-IDF用に戻った)。
使い方はPS4-esp32のリポジトリの説明に書いてあることそのままなのですが、先にも書いたとおり最新版ではESP-IDF依存のライブラリに戻ってしまっており、Arduino IDEでは使えません。
Arduino IDEで使うは Feb 13,2021 のコミットをZIPダウンロードする必要があります(下記URL)。
https://github.com/aed3/PS4-esp32/tree/35f2caa258875c1dfa1ad73901f4e2505dfeeccb
次にArduino IDEのファイル→環境設定→設定の「追加のボードマネージャのURL」に以下のjsonを追加してOKボタンをクリック。
https://dl.espressif.com/dl/package_esp32_index.json
ツール→ボード:XXX→ボードマネージャで、フィルターに「esp32」を記入して、Espressif SystemsのESP32ライブラリをインストールします。このときバージョンは1.0.4を選択します。1.0.5以降ではコンパイルでエラーになります。
スケッチ→ライブラリをインクルード→ライブラリを管理で、M5Atom,M5StickCのライブラリを最新版に更新します。その後、ライブラリ→ライブラリをインクルード→.ZIP形式のライブラリをインストールで先ほどダウンロードしたZIPファイルをインストールします。
ESP32 1.0.4のボードマネージャーではM5 ATOM-Liteはまだ登録されていないので、ボードは ESP32 Arduino→M5Stick-Cを選択します。
M5 ATOM-LiteのBluetooth MACの確認や、DUALSHOCK4への書き込みなどは先のQiitaの記事の通りです。
インクルードするヘッダは最新版に更新されていれば <M5Atom.h> が使用可能です。
その他にPS4-esp32からで大きく変わっているのは、ボタンステータスの確認をメンバ変数直接ではなく専用の関数を経由するようになっている点です。
オプジェクトのメンバ変数をそのまま触るのはあまり行儀がよろしくないので、この変更はいいと思いますね。ESP32のパフォーマンスならオーバーヘッドも微々たるものでしょう。
ライブラリのAPIはサンプルを見ればわかると思います。
そんなわけで、DUALSHOCK4のコントローラーアダプタとしてM5 ATOM-Liteが普通に使えました。ググっても先のQiita記事ぐらいしか出てこないので、あんまり流行りでもないのかな?と思ってたりしますが、M5 ATOM-Liteは低価格で入手性抜群ですしI/OピンもUART,I2C,SPIと一通り使える自由度もあるので、ロボットやラジコンの操作用 I/Fとしてお一つどうですか。
2022-02-23 22:57