Alexa on Raspberry Piで早押しクイズを実装する!

Alexaスキルを自分で作って、Alexa on Raspberry Piで早押しクイズを実装してみました!

早押しクイズの流れ

ゲームのプレイヤーは2人の設定

  1. プレイヤーが早押しクイズを起動する
  2. Alexaがクイズを出す
  3. 正解がわかったプレイヤーはボタンを押す
  4. どのプレイヤーがボタンを押したのかを識別する
  5. ボタンを押したプレイヤーに答えを促す
  6. プレイヤーが回答する
  7. 回答が間違っていれば解答権を渡す、正解であればクイズを終了する

今回難しかったのが手順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ピン
f:id:aym413:20190607221308p:plain

ボタンを押したプレイヤーを識別するためのプログラムを作成する

プレイヤーを識別するプログラムは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

そして、完成したスキルがこちらです!
f:id:aym413:20190607224433p:plain

①ユーザーがスキルを起動したあとの応答
スキルを起動した際の応答を記載します。
f:id:aym413:20190607224625p:plain:w300

②クイズの内容
出題するクイズを記載します。今回はAWSのサービスに関する問題を出すことにします。
f:id:aym413:20190607225238p:plain:w300

③プレイヤーを識別するための設定
player1player2を識別できるようにします。
f:id:aym413:20190607233318p:plain

④プレイヤーを識別して、解答を促す
③のinteractionを使ってプレイヤー名を識別し、解答を促すようにします。
f:id:aym413:20190607234556p:plain:w300

⑤クイズの正解を設定
クイズの正解となる解答を記載します。
f:id:aym413:20190607234855p:plain:w300

⑥不正解だった場合の設定
不正解だった場合は「ブッブー」と鳴らし、他のプレイヤーに解答を促します。
f:id:aym413:20190607235318p:plain:w300

⑦正解だった場合の設定
正解だった場合は「ピンポン、ピンポーン」と鳴らします。
f:id:aym413:20190607235602p:plain:w300

⑧スキルの終了
正解だった場合は、スキルを終了します。
f:id:aym413:20190608001736p:plain:w300

最後にスキル名を設定します。
「Publish」>「Skill Invocation」にスキルを起動するワードを入力します。
今回は「cloud buzzer game」としました。
f:id:aym413:20190608000400p:plain

スキルを作成したら、Alexaにアップロードします。
f:id:aym413:20190608000116p:plain

早押しクイズをやってみる!

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」でもお話させてもらいました!
こちらもご覧いただければと思います^^

www.slideshare.net


今回はサンプルなので、問題を1つしか設定しませんでしたが、Googleスプレッドシートと連携すれば複数の問題を順番に出せるようになると思います。
そちらはまた別の機会に試してみたいと思います!