超リアルなザクを目指して！obnizでぐぽーんと音がしてモノアイが光るプロトタイプを作成！！

##ぐぽーんと音がしてモノアイが光るのは男のロマン
ガンダムの色んな作品でよく見かける演出として、
**格納庫でスタンバってるMS（モビルスーツ）の目が「ぐぽーん」という音と共に光る**
というのがあります。（ザクやドムなどバリエーションも豊富）

この演出、個人的に大好物なんですが、いつかこれを**ガンプラで再現したい**なーと思っています。

今回は**100均で見かけたおもちゃとIoT基盤「obniz」を組み合わせてプロトタイプを作った**ので記事にしていきます。

##完成品（ぐぽーんとなってモノアイ光るぜ）
実際に作ったものはこんな感じで動きます。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">できた！（スピーカーのノイズが凄いとかLEDの赤がカメラ通すとピンクに見えるとかあるけど気にしない)<a href="https://twitter.com/hashtag/obniz?src=hash&amp;ref_src=twsrc%5Etfw">#obniz</a> <a href="https://t.co/sQLUUQqyrz">pic.twitter.com/sQLUUQqyrz</a></p>&mdash; shoito66 (@shoito66) <a href="https://twitter.com/shoito66/status/1393476216556900353?ref_src=twsrc%5Etfw">May 15, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

##作り方

###用意する（した）もの
####ハードウェア
■[obniz Board 1Y](https://obniz.io/ja/products/obnizboard1y/)
　制御の要となります。
■赤色LED
　抵抗内蔵のもの。モノアイに見立てて使います。
■ブレッドボード
　配線用。そのままだとLEDからobnizへの配線が厳しかったため。
■[Grove_MP3](https://obniz.com/ja/sdk/parts/Grove_MP3/README.md)
　グポーンという音を出すための装置。obnizから命令を送るとMP3ファイルを再生してくれます。
■スピーカー
　Grove_MP3に繋げて音を出してもらいます。今回はダイソーで300円のものを購入。
■[Keyestudio_Button](https://obniz.io/ja/sdk/parts/Keyestudio_Button/README.md)
　音と光を制御するためのボタン。INPUTになれば良いのでセンサーの類でも代用できます。
■[プチブロック ロボットシリーズ](https://www.daiso-sangyo.co.jp/item/8294)
　ザクの代わりにするべくダイソーで購入。今回はスナイプをベースにナイトのパーツを少し混ぜてます。
■適当な箱
　作ったロボットと各種機器を固定するためのもの。ダイソーで購入。

####ソフトウェア
■Node.js
　obnizの制御に使いました。

###組み立て
![robo.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1264471/00ec8627-bc5d-0385-bddb-53f49be4df20.jpeg)
ロボットはこんな感じで組み立てました。（LEDをモノアイ代わりにするので顔だけちょっと改造しています）

![box.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1264471/09b8a647-6efc-4d9a-17d8-4a6c06d98b3a.jpeg)
箱に穴をあけてブレッドボードと赤色LEDを取り付けます。
配線は穴を通して裏側へ。

![ura.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1264471/ec19808a-57db-7da8-81b8-9983d58b0569.jpeg)
裏側はこんな感じになってます。
（黒く塗りつぶしているのはobniz-IDを隠すためです。）

![20210515_165415.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1264471/eb9e8630-a008-98a8-b112-d7a20dfb216a.jpeg)
後は、LEDの位置に顔が来るようにロボットを配置して完了！
制御用プログラムを実行してボタンを押せばぐぽーんという音とともにモノアイが光ります！

###制御用プログラム
obnizの制御用コードは以下の通りです。
起動後、ボタンを押すとMP3の再生とLEDの点灯処理が実行されます。
（LEDは3秒後に消えるようにしています。）

```JavaScript
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本セット）](https://www.switch-science.com/catalog/6245/)

####使用できるのはマイクロSDカード（8GB以下のもの）
obniz公式にSDカードという記載がありますが、実際にはマイクロSDカードを使うことになります。
容量も8GB以下しか使えないのでご注意を。

使用する際はマイクロSDカードに「MP3」というフォルダを作って「0001.mp3」みたいに数字4桁を頭につけたファイル名のMP3ファイルを格納しておけば再生できます。

####プログラムの書き方
プログラム自体は以下のような形で記述します。
※音量は明示的に設定しないと最大値で再生されるので注意

```JavaScript
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を仕込んで「ぐぽーん」やりたいですね。**