amiibo(アミーボ)オルゴールを作る

今回は、これまでやってきた一連のArduino工作をまとめ上げて作った、amiiboオルゴールをご紹介したいと思います。

amiiboというのはご存知の方も多いと思いますが、任天堂が販売しているゲーム連動機能を持ったフィギュアシリーズです。中にNFCチップが 入っていて、Wii Uや(New)3DSで情報を読み書きすることで、ゲーム内でいろんな効果を出せるというものです。

前にスーパマリオメーカーを買ったときに、「amiiboに対応してるみたいだし、せっかくだから何か買ってみようかな〜」と思い、試しに大好きなMOTHER2のネスのフィギュアを購入してみました。

これでマリオメーカーの中でファミコン風のネスが出てきてワーイ、となったのですが、以後ネスフィギュアはテレビの前に飾られているただのフィギュアになってしまいました(自分が年に1〜2本しかゲームを買わない、というのもありますが。。。)

任天堂が大好きな自分としては、ネスとかリンクとかリュカとかがフィギュアになっているだけでも嬉しいことは嬉しいのですが、でもなんだかもったいないなあと思ったのも事実です。

もっといろんなことができるんじゃないかなあと思っていたところに、FeliCa リーダー・ライター RC-S620S が自分の電子工作箱(?)の中から出てきて、「あ、これを使えば自分でamiiboを使った何かを作れるかも!」と思って作ってみたのが、今回ご紹介するamiiboオルゴールです。オルゴールの上に乗せるamiiboによって再生される曲が変化する、というものです。

「同じようなことやっている人いるかな?」と思って探してみたところ、やはり海外におられました。

作り方もこちらで公開してくださっています。 ただ、自分のイメージしていたものとは異なるので、参考にさせていただきつつ、改めて自分で作っていきたいと思います。

 

RC-S620SでamiiboのNFC情報を読み取れるかが一番の心配だったのですが、これはhiro99maさんが公開してくださっていたRC-S620S用のArduino向けライブラリでクリアすることができました(←前回記事参照)。本当にありがとうございます。

あとは、これまで自分がやってきたことの組み合わせです(正確には逆で、この最終形ありきで以下の要素に取り組んでいました)。

これらを全部組み合わせたプロトタイプがこちら。

 

th_amiibo-music-box_1

うわあ。。。スパゲッティ。。。

 

一応この状態でソフトウェア的には動作は確認することができました。動作を簡単に説明すると、NFCリーダー(RC-S620S)で識別したamiiboごとに、waveシールドで再生する曲を変化させています。なので、各amiiboごとに再生させる曲は、全て事前にwaveシールドのSDカードに突っ込んでおく必要があります。ここではマリオ、トゥーンリンク、ネスのそれぞれについて、各3曲ずつ+amiibo認識時の効果音1曲ずつを保存しています。

 

あとはこのスパゲッティなプロトタイプをケースに収めれば良いのですが、せっかくなのでゲームボーイっぽくしてみることにチャレンジしてみました。

th_amiibo-music-box_2

電気街に出て、初代ゲームボーイによく似た色のケースを買ってきました。

 

th_amiibo-music-box_5

実家の奥底から出てきた初代ゲームボーイ。これとよく似た雰囲気になるよう頑張ってみます。

 

th_amiibo-music-box_4

 ケースにドリルで穴を開け、ヤスリをかけ、部品を固定してみてコードの長さが足りなければ継ぎ足して、というのを延々やっていたらエラいボリュームになってしまい、「これホントに収まるのか?」と思いましたが。。。

th_amiibo-music-box_17

 

なんとかギリギリ、収まってくれました。良かった。。。

 

th_amiibo-music-box_18

十字キーとセレクトボタンは、先ほどの写真の本物のゲームボーイを分解して、そこから部品を拝借しました。どちらもただの飾りで、押しても何も反応しません。スペースの都合で、右下の穴ではなく十字キーの後ろにモノラルスピーカーを仕込んだので、十字キーには何個か穴を開けています。あんまりうまく開けれなかったのが悔しい。。。あと、右側の曲再生及び曲送りのボタンは、本物でいうA Bボタンっぽく見えるように配置しています。本物でいうディスプレイ部分には、曲番号を示す7セグLEDを埋め込んでいます。

th_amiibo-music-box_19

向かって右側面。本物と似た位置にボリューム調整用のダイヤルが来るようにしました。Waveシールドのダイヤルがそのまま出てきているので、ここでボリューム調整ができます。

th_amiibo-music-box_20

背面。こちらも、本物と同じような位置にスライド式の電源スイッチをつけました。ちなみに電源はアルカリ単四電池x4で、直列6Vにして中のSeeeduino Mega(Arduino Mega)のVinに入力しています。

 th_amiibo-music-box_21

天板部分。ここの裏側には、このときと同じように作成したフルカラーLEDリングと、NFCリーダーのRC-S620Sを固定しています。また、中心部分には、amiiboの接地判定に使えるかなーと思って、照度センサを埋め込んでいます。が、別になくてもなんとかなった気もします。写真をよく見ると一箇所「もやっ」とした部分がありますが、ここは、NFCリーダー固定のための穴あけを蓋の裏側からしていたときに、うっかりドリルを貫通してしまったのを無理やり塞いだ跡です。これが今回の工作の最大のミスです。悔しい。。。

 

th_amiibo-music-box_25

気を取り直して、電源をON。せっかくなので、本物のゲームボーイの起動音を鳴らすようにしました。音が鳴り終わると、天板のLEDリングがゆっくり点滅して、amiibo受付待ちになります。

 th_amiibo-music-box_24

マリオのamiiboを乗せると、LEDリングが黄色く発光してコインをゲットした時の音が鳴ります。その後、ABボタンが赤く発光して音楽再生待ちになります。この状態で左の赤ボタンを押すと再生開始(再生中なら停止)、右の赤ボタンを押すと次の曲に移ります。1曲目が終わると自動的に次の曲が再生され、3曲目まで終わると1曲目にループします。amiiboをどけると、曲の再生は自動的に止まります。

マリオの曲はWiiソフト『スーパーマリオコレクション スペシャルパック』に付属のサントラCDから、以下の3曲を選びました。

  1. 地上BGM(スーパーマリオブラザーズ)
  2. アスレチックBGM(スーパーマリオブラザーズ3)
  3. スライダー(スーパーマリオ64)

自分にとって最も思い出深いマリオからそれぞれ選びました。

 

th_amiibo-music-box_26

トゥーンリンクを乗せると、LEDリングが緑に発光して謎解き音がなります(ごまだれ音ではなく)。ゼルダの曲は、『風のタクト HD 』の購入者特典で付いてきたサントラCDから、以下の3曲を選びました。

  1. ゼルダ姫のテーマ
  2. 大海原
  3. ガノンドロフ戦

トライフォースの3人のイメージで。「大海原」は、すべてのゼルダのフィールド曲の中で一番好きです。

 

th_amiibo-music-box_27

ネスを乗せると、LEDリングが赤に発光してボス戦闘勝利音が鳴ります。MOTHERの曲については、自分は絶対この3曲にしたいと思っていました。

  1. Eight Melodies(MOTHER)
  2. スマイル アンド ティアーズ(MOTHER2)
  3. MOTHER 3 愛のテーマ(MOTHER3)

『スマイル アンド ティアーズ』だけアンバランスに再生時間が長くなってしまいましたが(←ちょうど良いワンフレーズの「エイトメロディーズ」が手持ちの音源でなかったので。。。)、MOTHER2についてはこれで良いかな、と思っています。

これを作りながら、大学生時代に北海道の小樽オルゴール堂に行った時に、「『エイトメロディーズ』のオルゴールとか売ってたら絶対買うのになー」とか考えていたのを思い出しました。あれから10年経って、機械式ではなくて電子式にはなってしまいましたが、自分が欲しかったものを自分で作り出すことができました。なかなか感慨深いです。

 

自分のスキル不足で作りが荒いところが多々見受けられますが、概ねイメージ通りのものはできたかなと思います。

最後に技術的な話で、今回の工作のキモと言える「amiiboを識別する」というところですが、これは前回書いた記事の通りのやり方で、各NFCチップに固有のUIDを読み取って識別するようにしています。これはつまり、私が所有しているamiiboだけを認識してくれるということで、他の方が持ってきたマリオやリンクやネスのamiiboを持ってきても反応しない、ということです。

これを「誰のamiiboを持ってきてもちゃんとマリオはマリオ、リンクはリンク、というように識別する」というものにしようと思ったら、どうしてもNFCの非公開領域にあるキャラクター識別情報を読みに行く必要が出てきます。実際、それも可能です。ただ、自分としては、任天堂に不利益になる可能性があること(=amiiboの情報解析に繋がること)はしたくないので、今回は敢えてUIDで処理するようにしています。どうせ自分しか使うこともないでしょうし。「UIDなら本当にオーケーなのか」というのは若干不安ですが、これは任天堂が埋め込んだ秘密情報(?)というわけではないハズなので大丈夫。。。と勝手に信じています。

 

ということで、「とりあえずamiibo使ってなんやかんや試してみたい!」という方がおられましたら、前回の記事のサンプルソースを使って、amiiboを読み取ってみてください。それでおそらく各amiibo固有のUIDが読み取れるハズなので、それを使って処理を分けて各amiiboごとに固有の処理を記述すればOKです。

自分の思いとしては、前回の記事と今回の記事で「へー、Arduinoとamiiboで色々できそうじゃん!」と思ってくれる方が少しでも増えて、他にamiiboを使った事例が出てきて、それでamiibo全体がもっと盛り上がればいいなあと思っている次第です。それでほんの少しでも任天堂に貢献できたら、いち任天堂ファンとしては、こんなに嬉しいことはないのです。