フィジカルセンシングを利用したインタラクティブゲームの開発【FUN Advent Calendar 2023】
はじめに
この記事は、FUN Advent Calendar 2023の1日目の記事です。
初日の投稿と言うことで緊張しますね(笑)
投稿がギリギリとなってしまいすみません。
本日Part2の方では、しんぼ先輩が「下宿に4年間住んでみた話」の記事を書いています!私も下宿(?)に住んでいるので共感できる部分が多かったです。
今回のアドカレの内容は、「フィジカルセンシングを利用したインタラクティブゲームの開発」ですが、フィジカルのなにをセンシング(センサ等を使用して状態を取得すること)したのかというと、心拍数と手首の捻りです。
それらを利用して、インタラクティブに操作できるゲームを開発しました。
自己紹介
学部2年のkCatです。ロボットとかやってる人です。
最近はサッカーロボットとP2HACKSに押しつぶされそうですがとても楽しいです。
やりたかったこと
11月初め頃に心拍センサーというものを買いました。電子工作ステーションと言う電子部品のネット通販を見ていたら、かなり手ごろな値段でMAX30102と言う心拍センサーが売っていたので何か作ってみようと思い購入してみました。
これを使ってゲームを作ったら、ハラハラドキドキの面白いインタラクティブゲームになるのではないかと思い立ち今回作ってみました。
やりたかったこととしては、心拍センサを使って心拍数を読み取り、心拍数が高い(ドキドキしている)時ほど難易度が上がり、心拍数が低い(落ち着いている)時ほど難易度が下がるゲームを作ることです。
完成品
完成したのがこちらです。
ブレッドボードにはArduino NanoとGY-521というジャイロセンサが乗っています。これはI2CでArduino Nanoと通信をしています。ミニボードの方に心拍センサを付けていて、ジャンパー線でArduino Nanoと接続して、これもI2Cで通信をしています。
本来はユニバーサル基盤できれいに回路を作り、マジックテープのついたバンドなどで腕に装着できるようにしたかったのですが、今回は時間の都合で、ブレッドボード、ミニボードごとマスキングテープで腕に固定することにしました。
以下が装着している様子です。
このコントローラーを使って遊ぶゲームはFlappy Birdと呼ばれる類のゲームを作成しました。
簡単に説明すると、上下にしか移動できないプレーヤーを操作して、画面上下にあるオブジェクトに当たらないよう隙間をすり抜けるゲームです。
コントローラーでの操作は、手首を右に傾けると下に、左に傾けると上に動きます。心拍数は常にセンシングされており、心拍数に応じてゲームのスクロール速度が自動で変化します。
電子回路の構成
これだけです。ブレッドボードでSDA, SCL, 5V, GNDをそれぞれ繋いでいるだけです。
ゲームの作成について
今回作成したFlappy BirdはProcessingで作成しました。Arduino NanoからSerial通信で送信されたジャイロセンサの角度と心拍センサの心拍数をProcessing側で受け取り、ゲームに反映させています。
Arduinoのコードは基本的にライブラリに頼りました。
以下に作成したソースコードと参考にしたサイトを載せておきます。
(実装は雑に作ったので設計上まずい部分が多々あると思いますが温かい目で見てもらえると幸いです)
心拍数によって正しく速度が変化するのか
これはセンサの性能の話になってしまうので、実装方法でどうにかできる問題ではないのですが、心拍数がある程度正しくとれているのか気になりますよね。そこで、せっかくなので自分を被験体として実験してみました。
まず、落ち着いている状態でゲームを行った場合、スクロール速度は遅くなるはずです。
逆に、心拍数が高い状態でゲームを行えば、スクロール速度は高くなります。
そこで、まずは心拍数を下げるために、リラクゼーションドリンク「CHILLOUT」飲んで、少し経った状態でプレイしてみました。
プレイ前のXiaomi Miスマートバンド6で心拍数を測定した結果はこのようになりました。
結果はこのようになりました。
次に心拍数を高めるために、大学内を少し走ってきました。(外は凍ってて転びそうだったので、周りに人がいないことを確認し、見通しの良い場所で走りました。)
プレイ前のXiaomi Miスマートバンド6で心拍数を測定した結果はこのようになりました。
結果はこのようになりました。
どちらかと言えば、心拍数が高い方が速度が速くなってるんじゃないですかね。ゲーム中頻繁に速度が変わることからそこまで精度が高いわけじゃないものの、ある程度の精度は出てるんじゃないかと思います。
試作品を脱却(追記 12/3)
ユニバーサル基盤で配線を行い、マジックテープで腕に装着できるようにしました。
まとめ
やっぱりマイコンを使った、体を動かす系のゲームは楽しいですね!
思ったよりも手軽な値段で部品が手に入り、ネット上に情報もたくさんあったので、スムーズに開発を進めることができました。
ぜひ皆さんも電子工作始めてみてください!
FUN Advent Calendar 2023明日の予定
Part1:み🦊 さんによる「趣味の話かも」
Part2:yukidqma(8) さんによる「ポーカーで優勝した話」