3)で刀からのセンサデータを受信するサーバを作ります。ラズパイの役割は、刀(加速度センサ+ESP32)が送信するモーションの指令値を受信し、PCへキー入力を行なうArduinoに伝達することです。ArduinoとラズパイはGPIOピンで接続するため、無線信号の受信処理とGPIO制御が同時に行なえるNode.jsを使ってサーバプログラムを作っていきます。Node.jsはサーバとして簡単にプログラムを記述でき、またGPIOの制御が容易です。v4.4にはNode.jsがプリインストールされていました。今回必要なのはESP32からPOSTされたデータを判定してGPIO出力するプログラムです。PiとNode.jsでLチカ(LEDをチカチカ)させてみよう!)を参考にしました。“/sys/class/gpio”にある各ピンに対応したファイルに文字列を書き込んでGPIOピンの入出力を制御します。GPIOの24番ピンをHighにしたい場合は、以下のようなJavaScriptコードを実行します。24);”を記述してピンを開放しましょう。/sys/class/gpio/unexport“を実行することで手動でピンを(この例では24番ピン)リリースすることができます。これでGPIOをNode.js上で制御する準備ができました。続いてPOSTを受け付けるHTTPサーバを作ります。GPIO処理を組み込んだプログラムがこちらになります。「0」というデータがPOSTされた場合にはGPIO24番ピンをHighに、「1」というデータがPOSTされた場合にはGPIO24番ピンをLowにするプログラムです。'192.168.###.###');このプログラムに合わせて、前回のESP32側のPOSTプログラムを作り直します(こちらのプログラムは外部ライブラリを使用しないバージョンです)。ESP32のIO4ピンを入力として、スイッチが押されるたびに「0」と「1」を交互にPOSTするプログラムです。Serial.println("connected");}実際に動作させるとこんな感じになります。https://sameno.dev/wp-content/uploads/MOV_2941m.mp4JavaScriptで物が動くってすごい!送信側のスイッチ押下から受信側のLED点灯までほぼラグがなく、連続で押しても受信側で入力を受け付けてくれています。Pi(画面に映ってる黒画面)]の通信が確認できました。PiからPS4にキーボード入力する方法を実装できているので、これで刀入力システムの準備がすべて整いました。残りは刀の動きを取得するセンサの実装となります。次回は侍のアクションの動作(モーション)解析と加速度の対応を検討します。モーションセンサ編に続く記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。名前メールアドレス(公開はされません。)上に表示された文字を入力してください。Authorsumisameすみさめといいます。Policy当サイトのプライバシーポリシーについてはこちらのページをご確認ください。