A Life Less Ordinary

Webエンジニアのポエム

ウルトラクイズのハットと早押しシステムを自作する

有名な某クイズ番組で使用されていたハットと早押しクイズのシステムを、AruduinoとRubyを組み合わせて作った際の記録です。

f:id:ya_ma:20170611223332p:plain

なぜ作ったのか

同僚の結婚式二次会の余興のためです。Web系のシステムなら明るい自分ですが、こういったハードウェアみたいなのも作ってみたいと思い手をつけてみました。

ハットをつくる

まずはガワとなるハットの作成。以下のサイトを参考にさせてもらいました。
mechatro-life.com

サイトでは0.5mmのアルミ板を使っていますが、0.2mmのものを使用しました。
理由は単純で近くのホームセンターにはこの厚さしか売っていなかったためです。
ただ、この厚さでも十分の強度が保てました。サイズは400mmx600mm。
f:id:ya_ma:20170311230544j:plain

手順に倣い、まずは型の作成。寸法はわからないので勘です。
f:id:ya_ma:20170311230513j:plain

その後は
外側の部分

蓋部分

つば部分
の順で切り抜き、それぞれをくっつけます。

接着の方法は「ガムテープ」です。普通は接着剤なんでしょうけど、買うの忘れてたので、、
あと、塗装するしいいっかなーと。(塗装してもガムテ部分が目立ったんですけどね
f:id:ya_ma:20170319004952j:plain
f:id:ya_ma:20170319005014j:plain

そして、スプレーで塗装して、乾いたら星の形に切り抜いた厚紙を貼って完了。
f:id:ya_ma:20170323075808j:plain

ボタンのスイッチ

発案者の意向で、最も重要視してこだわったのはスイッチ部分。
マイクロスイッチの中から、押した感覚が気持ちがよく、ボタンに色がついているタイプを選びました。
f:id:ya_ma:20170611231312p:plain(実際は赤と緑のボタン)

サーボモーターでポップアップ

次に重要なのが、ボタンを押した時に「?」マークが起き上がる仕組み。
ぬるっと起き上がると多少の残念感が発生してしまうため、機敏な動きが求められます。
ただし、機敏さを求めて大きいにすると、ハットの上に乗せると重くなって被りにくくなるので、ある程度の小ささは必要。
いろいろ悩んだ挙句、選んだものはサーボモーター「SG92R」にしました。
akizukidenshi.com

パワーが不安でしたが、思いの外機敏に動いてくれました。

スイッチとポップアップの連携

このシステムを実現するための要件は、
・ボタンを押した時にポップアップする
・ボタンを押した時に音を鳴らす
・片方がポップアップしているとき、もう片方を押されても反応しないようにする
・何らかのきっかけでボップアップを元に戻す
・「正解」と「間違い」と「シンキングタイム」の時、音を鳴らす
です。

ボタンを押してポップアップするだけならArduino単体でいけますが、音を鳴らすのをどうするか。
いろいろ方法を考えましたが、もっともコストが低いやり方としてArduinoとPCを繋ぎ、PC側はRubyを使ったプログラムで連携させました。

Arduino
・ボタンを押したら、その情報をシリアルポートに書き込む
・ボタンを押したらサーボモーターを90度回転させる
・片方がポップアップしていたらもう片方は反応させない
・シリアルポートにリセット情報があれば、サーボモーターを元に戻す

PC(Ruby)側
・シリアルポートを読み込み、ボタンを押された情報があればスピーカーから音を鳴らす
・キーボード入力を検知し、「正解」「間違い」「シンキングタイム」用の音を鳴らす
・キーボード入力を検知し、シリアルポートにリセット情報を書き込む

完成

f:id:ya_ma:20170612004046g:plain

まとめ

課題としては、スイッチやモータとArduinoをいかに簡単に繋げるか。各パーツ、+と-とコントローラーの3つのケーブルがあるため、(スイッチ2+モーター2) x 3 = 12本のケーブルとなり、セットアップするのが地味に大変。
また、ピンを固定していないため少しでも強く引っ張ると外れるので、はんだ付けをしないといけません。

とはいえ、見てくれは雑な感じですが思いの外周りの反応がよくて嬉しかったです。