無線版のご利用について
概要
本ページでは、無線版Hapbeat(Duo/Band Wireless)の利用方法の概要を紹介します。詳しい実装方法については下部の実装例やファームウェアでの公開コードをご覧ください。
基本的な利用イメージ(ESP-NOWの場合)https://gyazo.com/2b0e8bb8626ff333b214cca5d94a1b6c
1. Hapbeat 側に振動再生用の音源データ(.wav)を書き込む
2. Hapbeatと連携させるアプリケーション側(Unity, Python などで作成)で、PC等とUSB接続した送信機にテキストコマンド(例:'0,0,0,0,50,50,0')を振動させたいタイミングでシリアル通信(効果音を挿入するイメージ)
3. 送信データに基づき、該当するHapbeat内保存データを再生(再生ボリュームや受信するHapbeatの個体を別々に分けるなどの変更可能)
参考
無線接続方法
特徴:低遅延(近距離で2ms程度)でブロードキャスト可能で実装が容易。
用途:リアルタイム性の高い、ゲームアプリやイベント・施設での利用
注意事項:下記の送信機が別途必要となります。
Wi-Fi(2.4GHzのみ)
特徴:施設の無線ルーターに接続することで、広範囲での接続が可能です。公式ではMQTTを用いたサンプルを提供しています。 用途:センサーと連携した遠隔通知システムなど
※Bluetooth機能は原則サポート致しません。業務用途でBluetooth機能がどうしても必要な場合はContactよりご相談ください。 アプリケーション実装例(Unity)
再生するタイミングでシリアル通信でカンマ区切りのメッセージを送ることで実現できます。
概要説明
SerialHanderオブジェクト(SerialHandler.cs 含)をシーンに配置
https://gyazo.com/aa21766ef4aa04d794a5aa69a2f1039c
SerialHander.cs 内でアクション名、データ名、再生部位、再生ボリュームなどを指定
任意のゲームオブジェクト内でSerialHandlerをStartで呼び出し、
code:cs
void Start(){
_SerialHandler = GameObject.Find("SerialHandler").GetComponent<SerialHandler>();
}
任意の箇所で下記のように各パラメータを指定して実行。
code:cs
_SerialHandler.SendSerial("shotblaster", "wrist_L", "oneshot");
_SerialHandler.SendSerial("shotblaster", "neck", "oneshot");
_SerialHandler.SendSerial("landing", "neck", "oneshot", interpolatedValue);
※SendSerialでは以下のようなパラメータ設定が可能(振動の強さを動的に変えたい場合は呼び出し元で変数を第4,5引数に指定)
code:cs
SendSerial(
string action,
string devicePos,
string playType = "oneshot",
float leftPower = -1f,
float rightPower = -1f
)
送信機について(ESP-NOW)
送信側マイコンモジュール例:
※シリアル通信の安定性の観点からesp32s3系統のモジュール(UART変換はmcu内蔵)ではなく、UART変換チップを別に載せたesp32c3系統のモジュールがおすすめです。esp32s3でも基本問題ありませんが、短いインターバルで連続駆動すると動作が不安定になる場合があります。
対応デバイス
Duo/Band Wireless へのソフトウェアの書き込み環境の構築—書き込みテストまで
ファームウェア