ねんどろいど伊401に時報を喋らせるガジェットを作ってみた

この記事は RECRUIT MARKETING PARTNERS Advent Calendar 2015 の投稿記事です。こんにちは。2015年新卒フロントエンジニアの萬成です。RaspberryPi や Arduino はとても扱いやすく便利ですが、端末自体の大きさや電源の問題からどうしてもガジェットが大きくなってしまうのが実情です。そこで今回は、小さくてボタン電池でも駆動できる PIC を使い、ねんどろいど伊401に時報を実装してみました。

背景

ブラウザゲーム「艦隊これくしょん -艦これ-」には一部のキャラクターに時報が実装されています。時報とはゲームのホーム画面で毎時0分を迎えた時、キャラクターのボイスで現在時刻と、その時間に関するセリフを喋ってくれる便利な機能です。ただ、ゲームのホーム画面を開いていないと時報が聞けないのがネックです。ある日「ねんどろいどが時報を喋ったらテンション上がるんじゃね?」というインスピレーションが湧いたので、作ることにしました。1時間毎に24個ある時報音声を順番に再生するガジェットです。この手の工作は RaspberryPi や Arduino などを使うのが普通ですが、これでは喋ってる感が出せません。ねんどろいどの頭部は各辺2.5cmほどの空間があり、その中にガジェットを入れたほうが喋ってる感が出てテンションが上ります。そこで、この空間に入る大きさのデバイスを RaspberryPi などより圧倒的に小さい PIC を使って実装することにしました。

bad good
RaspberryPi で実装した場合。機能は豊富だがデカい PIC で実装した場合。頭部パーツに収まるほど小さく実装できる

課題と解決策

昨日のアドベントカレンダーの記事「PICで作るへぇボタン」では、PIC に書き込むプログラムに音声データを持たせることで音声を再生しました。では今回も同じ方法で出来るかというと、そうは行きません。前回のへぇ音はたかだか2秒程度の音声だったのに対し、今回の時報は数秒間の時報音が24個あり、どうしても PIC に書き込めない容量になってしまいます。そこで、音声を micro SD カードに入れ、PIC から micro SD カードの中に入っている音声ファイルをストリーミングで再生する構成にしました。

音声の置き場所の違い
音声ファイルの置き場所の違い

デモ

PIC で SD カードから音声ファイルを再生する

ここから PIC を使って SD カードに入ってる音声ファイルを再生する方法を説明します。これを応用すれば、SD カードを使った iPod shuffle のようなものなどを作ることが出来ます。

PIC と SD カードの接続

今回使用する PIC は前回と同じく PIC16F1705 です。この PIC には SPI が内蔵されているので、これを使って SD カードとやりとりをします。SPI とはプロトコルのようなもので、SPI の仕様に準拠して実装されたデバイス同士で通信をすることができます。SD カードにも通信方式の一つとして SPI が実装されており、SPI 経由でデータの読み書きが出来るようになっています。SPI を使う場合、SD カードに8本ある端子のうちの6本を使います。

SDカードの端子(SPIモード時)
micro SD カードの端子(SPIモード使用時)。SD をデバイスに繋いだ時に電源に繋がる GND と VCC が先に接続されるように他の端子より前に飛び出ている

これらの端子を以下のように PIC または電源に接続します。

SD カード PIC16F1705 16F1705 ピンアサイン
DO SDI (RC1)
GND VSS (電源)
CLK SCK (RC0)※

続きを読む ねんどろいど伊401に時報を喋らせるガジェットを作ってみた