##ぐぽーんと音がしてモノアイが光るのは男のロマン
ガンダムの色んな作品でよく見かける演出として、
格納庫でスタンバってるMS(モビルスーツ)の目が「ぐぽーん」という音と共に光る
というのがあります。(ザクやドムなどバリエーションも豊富)
この演出、個人的に大好物なんですが、いつかこれをガンプラで再現したいなーと思っています。
今回は100均で見かけたおもちゃとIoT基盤「obniz」を組み合わせてプロトタイプを作ったので記事にしていきます。
##完成品(ぐぽーんとなってモノアイ光るぜ)
実際に作ったものはこんな感じで動きます。
できた!(スピーカーのノイズが凄いとかLEDの赤がカメラ通すとピンクに見えるとかあるけど気にしない)#obniz pic.twitter.com/sQLUUQqyrz
— shoito66 (@shoito66) May 15, 2021
##作り方
###用意する(した)もの
####ハードウェア
■obniz Board 1Y
制御の要となります。
■赤色LED
抵抗内蔵のもの。モノアイに見立てて使います。
■ブレッドボード
配線用。そのままだとLEDからobnizへの配線が厳しかったため。
■Grove_MP3
グポーンという音を出すための装置。obnizから命令を送るとMP3ファイルを再生してくれます。
■スピーカー
Grove_MP3に繋げて音を出してもらいます。今回はダイソーで300円のものを購入。
■Keyestudio_Button
音と光を制御するためのボタン。INPUTになれば良いのでセンサーの類でも代用できます。
■プチブロック ロボットシリーズ
ザクの代わりにするべくダイソーで購入。今回はスナイプをベースにナイトのパーツを少し混ぜてます。
■適当な箱
作ったロボットと各種機器を固定するためのもの。ダイソーで購入。
####ソフトウェア
■Node.js
obnizの制御に使いました。
###組み立て
ロボットはこんな感じで組み立てました。(LEDをモノアイ代わりにするので顔だけちょっと改造しています)
箱に穴をあけてブレッドボードと赤色LEDを取り付けます。
配線は穴を通して裏側へ。
裏側はこんな感じになってます。
(黒く塗りつぶしているのはobniz-IDを隠すためです。)
後は、LEDの位置に顔が来るようにロボットを配置して完了!
制御用プログラムを実行してボタンを押せばぐぽーんという音とともにモノアイが光ります!
###制御用プログラム
obnizの制御用コードは以下の通りです。
起動後、ボタンを押すとMP3の再生とLEDの点灯処理が実行されます。
(LEDは3秒後に消えるようにしています。)
const Obniz = require('obniz');
const obniz = new Obniz('XXXX-XXXX'); // 自分のObniz_ID
const sleep = (msec) => new Promise(res => setTimeout(res, msec));
obniz.onconnect = async function () {
// MP3プレーヤーを利用
const mp3 = obniz.wired("Grove_MP3", { gnd: 0, vcc: 1, mp3_rx: 2, mp3_tx: 3 });
await mp3.initWait();
mp3.setVolume(20);
// 赤色LEDを利用
const led = obniz.wired("LED", { anode: 5, cathode: 6 });
// 入力用にボタンを利用する
const button = obniz.wired("Keyestudio_Button", {signal:9, vcc:10, gnd:11});
// ディスプレイ
obniz.display.clear(); // クリア
obniz.display.print('Ready!');
// ボタンが押されたら処理
button.onchange = async function (pressed) {
if (!button.isPressed) {
//ぐぽーんという音を再生
mp3.play(1);
///モノアイを点灯
led.on();
//3秒経ったらLEDをオフにする。
await sleep(3000); led.off();
}
}
}
###補足(Grove_MP3の使い方)
今回、どうしても「ぐぽーん」が聞きたかったのでobnizでMP3ファイルを再生できる機器を探したところ、
公式ドキュメントで紹介されていたGrove_MP3に行きつきました。
ただ、こいつを使うまでに色々あったので補足しておきます。
####そのままではobnizに接続できない。
Grove_MP3は名前の通り、Grove規格のコネクタを持っています。
当然、付属のケーブルもGrove規格のものなのですが、obnizはGrove規格のソケットを持っていないのでそのままだと接続できません。
なので、ケーブルを別途購入しました。
GROVE - 4ピン - ジャンパオスケーブル(5本セット)
####使用できるのはマイクロSDカード(8GB以下のもの)
obniz公式にSDカードという記載がありますが、実際にはマイクロSDカードを使うことになります。
容量も8GB以下しか使えないのでご注意を。
使用する際はマイクロSDカードに「MP3」というフォルダを作って「0001.mp3」みたいに数字4桁を頭につけたファイル名のMP3ファイルを格納しておけば再生できます。
####プログラムの書き方
プログラム自体は以下のような形で記述します。
※音量は明示的に設定しないと最大値で再生されるので注意
const mp3 = obniz.wired("Grove_MP3", { gnd: 0, vcc: 1, mp3_rx: 2, mp3_tx: 3 });
await mp3.initWait();//初期化
mp3.setVolume(20);//音量設定(0~31)※デフォルトは31
mp3.play(1);//MP3フォルダ内の「0001」から始まるMP3ファイルを再生
##最後に
今回のプロトタイプ作成ではソフトウェアではなくハードウェアに力を入れました。
初心者なりにカッコいいものができたと満足しております。
次は実際にザクのプラモデルにLEDを仕込んで「ぐぽーん」やりたいですね。