Alexa on Raspberry Piで早押しクイズを実装する!
Alexaスキルを自分で作って、Alexa on Raspberry Piで早押しクイズを実装してみました!
早押しクイズの流れ
ゲームのプレイヤーは2人の設定
- プレイヤーが早押しクイズを起動する
- Alexaがクイズを出す
- 正解がわかったプレイヤーはボタンを押す
- どのプレイヤーがボタンを押したのかを識別する
- ボタンを押したプレイヤーに答えを促す
- プレイヤーが回答する
- 回答が間違っていれば解答権を渡す、正解であればクイズを終了する
今回難しかったのが手順4「どのプレイヤーがボタンを押したのかを識別する」の部分です。
どのプレイヤーがボタンを押したのかをどうやってAlexaに送信するのかが思いつきませんでした。
なので今回はプレイヤーがボタンを押したら、プレイヤー名を音声出力して、Alexaに認識させるようにしました。
早押しクイズを実装する
Raspberry PiをAlexa対応デバイスにする
Raspberry PiにAlexa Voice Serviceを導入し、Alexaとして動かすところまではこちらの記事をご覧ください。
coxcox.hatenablog.com
Raspberry Piにボタンを繋げる
下記の回路図を参考にブレッドボードとボタンを繋げます。
青いボタンが6番のGNDピン
と12番のGPIO18ピン
赤いボタンが39番のGNDピン
と22番のGPIO25ピン
ボタンを押したプレイヤーを識別するためのプログラムを作成する
プレイヤーを識別するプログラムはGitHubに置いているのでこちらをRaspberry Piにダウンロードします。
$ git clone https://github.com/ayumi-k/avs-raspberrypi-buzzer-game.git
上記のコードはC++で書かれていますので、コンパイルします。
$ gcc -o player_indentified player_indentified.c -lwiringPi
このプログラムで青いボタンが押されたらplayer1
を、赤いボタンが押されたらplayer2
を音声出力するようにできます。
Alexaスキルの作成
今回はVoiceflowというノンコーディングでAlexaスキルを作れるサービスを使いました。
www.voiceflow.com
細かいvoiceflowの使い方はこちらを参照させてもらいました。
vf-handson-01.netlify.com
そして、完成したスキルがこちらです!
①ユーザーがスキルを起動したあとの応答
スキルを起動した際の応答を記載します。
②クイズの内容
出題するクイズを記載します。今回はAWSのサービスに関する問題を出すことにします。
③プレイヤーを識別するための設定
player1
とplayer2
を識別できるようにします。
④プレイヤーを識別して、解答を促す
③のinteractionを使ってプレイヤー名を識別し、解答を促すようにします。
⑤クイズの正解を設定
クイズの正解となる解答を記載します。
⑥不正解だった場合の設定
不正解だった場合は「ブッブー」と鳴らし、他のプレイヤーに解答を促します。
⑦正解だった場合の設定
正解だった場合は「ピンポン、ピンポーン」と鳴らします。
⑧スキルの終了
正解だった場合は、スキルを終了します。
最後にスキル名を設定します。
「Publish」>「Skill Invocation」にスキルを起動するワードを入力します。
今回は「cloud buzzer game」としました。
スキルを作成したら、Alexaにアップロードします。
早押しクイズをやってみる!
Alexa Voice Serviceのサンプルアプリを起動します。
$ sudo bash startsample.sh
また、別ターミナルでプレイヤーを識別するプログラムを起動します。
$ ./player_indentified
いよいよ、早押しクイズをやってみます!
Alexa, start cloud buzzer game
と話かけてみましょう〜
早押しクイズをやってみた動画がこちらになります↓
youtu.be
おまけ
本記事は先日行われた「AWS Asian Woman's Association - Transcend to The World! Power of IT Women」でもお話させてもらいました!
こちらもご覧いただければと思います^^
今回はサンプルなので、問題を1つしか設定しませんでしたが、Googleスプレッドシートと連携すれば複数の問題を順番に出せるようになると思います。
そちらはまた別の機会に試してみたいと思います!