sophiaの書

なんか書く

もしクラシックマウスから車のエンジン音がしたら

はじめに

この記事はWMMC Advent Calendar 2020 - Adventarの2日目の記事です。

昨日はジャッジ―さんの記事でした。ジャッジ―さんが元気そうで安心しました。

また、ジャッジ―さんは今回のAdvent Calendarの主催者でもあります。主催していただきありがとうございます。

私はあまりサークルに参加できてないのですが、少しはサークル活動しておこうと思いWMMC Advent Calendar 2020に参加してます。

それでは始めます。

卍 卍 卍 卍 卍 卍 卍

もしクラシックマウスから車のエンジン音がしたらどうなるか確かめた。

想像図

想像図

開発経緯

いつのことだったか忘れたが、Twitterを見ていたらトヨタの入社式と思われる動画が流れてきた。会場内で自動車のエンジンをふかして爆音を鳴り響かせていた。いいなと思った。そして私はこう思った。もしクラシックマウスから車のエンジン音がしたらどうなるか、と。

予想

クラシックマウスのような小さい機体から車のエンジン音のような爆音がしたらギャップ萌えしそう。

方針

エンジン音が記録されたオーディオファイルを再生する機能をクラシックマウスに搭載する。ただし音を鳴らしているときにクラシックマウスの走行を妨げないようにする。

必要な部品

・MP3デコーダ

今回は秋月電子通商にあるこちらのMP3デコーダーを使った。

akizukidenshi.com

マイコンと組み合わせて音を鳴らしたいとき、これを使うと私が知る限りで最も簡単に音を鳴らせる。

PCとUSB接続するとリムーバブルメディアとして認識される。鳴らしたい音が記録されたMP3ファイルまたはWAVファイルをコピペでMP3ボイスモジュールに書き込む。UART通信でMP3ボイスモジュールにコマンドを送れば音が再生される。

音の再生はMP3ボイスモジュールが行うので、音の再生中にマイコンではクラシックマウスの走行に関する処理だけを行えばよい。

色々な機能があるが、今回はオーディオファイル1個だけを再生するために必要な機能しか使わない。他の機能も試してみると面白いと思う。他の機能も試してみたい人は秋月電子通商のサイトでMP3ボイスモジュールについて調べることをお勧めする。

注意点が4点ある。1点目。MP3ボイスモジュールに開いているピンヘッダ用の穴の位置が中途半端である。ピンヘッダをはんだ付けしたあとブレッドボードに差し込みたいときは無理矢理押し込む必要がある。2点目。VCCピンとUSBの5V給電の配線が導通している。もしVCCピンに5V以外の電圧をかけているときにMP3ボイスモジュールをPCとつなぐとショートする危険がある。オーディオファイルをPCから書き込みたいときはVCCピンがどこにも導通してないことを確認すべき。3点目。8MBのオーディオファイルを保存できるようだが、実際には約4MBしか書き込めなかった。しかし音質を下げてオーディオファイルのデータ量を減らせば7分以上鳴らしっぱなしにできる。7分間分あればクラシックマウスの競技中に音を流し続けることができる。4点目。MP3ボイスモジュールを買うと一緒に4ピンのコネクタがついてくる。でも2ピンのコネクタはない。Digi-Keyで調べてみたが2ピンのコネクタは見当たらなかった。MP3ボイスモジュールにはピンヘッダが2列、2ピンのコネクタが1個、4ピンのコネクタが1個、USBポートが1個ついている。このうち2ピンのコネクタを利用することはできなさそうだ。でもUSBポートと2列のピンヘッダが使えれば問題なく音を鳴らせる。

・micro USB Type-Bが付いたUSBケーブル

PCとMP3ボイスモジュールを接続するときに使う。

・スピーカー

表面実装可能な小型のスピーカーではエンジン音のような低音を出せない。そのため大きめのスピーカーを使う必要がある。今回は秋月電子通商にあるこちらのスピーカーを使った。

akizukidenshi.com

このスピーカーは人からもらったスピーカーなので本当にこれかは自信がない。でもたぶん合ってる。他にもっといいスピーカーがあるかもしれない。

ステッピングモーターで動くクラシックマウス

ステッピングモーターで動くクラシックマウスは機体重量が少し変わっても制御に影響が出ない。ステッピングモーターで動くマイクロマウスを使ってもよい。今回は私の手元にステッピングモーターで動くクラシックマウスがあったためこれを使った。

理想的にはスピーカー以外から音が出ないほうがいい。でもステッピングモーターから出る音は大きい。でもスピーカーから出る音はもっと大きいので心配ない。

・段ボールとテープ

スピーカーを覆う入れ物を作るために必要。

・配線用の導線

部品を電気的につなぐために使う。

車のエンジン音の用意

YouTubeでエンジン音を流している動画を探す。気に入った動画があれば、そのURLをコピーする。FLVTOという少し怪しげなサイトに動画のURLを張り付ける。そこのサイトで動画の音声をMP3ファイルに変換し、ダウンロードする。

次にダウンロードしたMP3ファイルのデータ量を4MB以内に減らす。Audacityというソフトウェアを使う。Audacityをインストールする。MP3ファイルはステレオである必要がないのでモノラルにしてデータ量を減らす。そして音質を下げてデータ量を減らす。作業の途中でlame_enc.dllがないのでダウンロードしろとAudacityに言われる。Audacityの指示に従ってlame_enc.dllを使えるようにする。

データ量を減らしたMP3ファイルの名前を01.mp3にする。

MP3ボイスモジュールにオーディオファイルを保存

MP3ボイスモジュールをPCとUSB接続する。MP3ボイスモジュールには最初から色々音声ファイルが入っている。これらは今回使わないのでPCなど他の場所に移動する。先ほど用意した01.mp3をMP3ボイスモジュールにコピペする。MP3ボイスモジュールをPCからはずす。

ハードウェア製作手順

電気的な配線は次図のように行う。今回はマイコンから一方的にMP3ボイスモジュールに指示を出すのでUART通信用の配線は1本だけで済む。

配線図

配線図

スピーカーには入れ物が必要だ。入れ物がないと、スピーカーの裏側で鳴った音と表側で鳴った音が打ち消し合って、スカスカな音になってしまう。スピーカーの裏側で鳴った音がスピーカーの表側に回り込まないように入れ物で閉じ込める必要がある。今回は段ボールと両面テープで入れ物を作ってみた。本当はもっと硬い材料で作ったほうがいい。でも今回は製作の簡単さを重視した。段ボールの入れ物であっても結構効果がある。

スピーカー用の入れ物

スピーカー用の入れ物

スピーカー用の入れ物にスピーカーとMP3ボイスモジュールを取り付けて電気的に接続する。今回は接続にジャンパー線を使った。スピーカーは段ボールにテープで固定した。

スピーカーとMP3ボイスモジュールを入れ物に取り付けた様子

スピーカーとMP3ボイスモジュールを入れ物に取り付けた様子

MP3ボイスモジュールをクラシックマウスに電気的に接続する。今回はジャンパー線を使って接続した。

MP3ボイスモジュールをクラシックマウスに接続した様子

MP3ボイスモジュールをクラシックマウスに接続した様子

最後に入れ物をクラシックマウスにかぶせたら完成。

完成!

完成!

入れ物をかぶせたせいでクラシックマウスを操作するためのタクトスイッチを押せなくなってしまった。でも気にしない。また、クラシックマウスについたLEDの光が遮られて見えなくなってしまった。でも気にしない。そのうちなんとかするつもり。

プログラム

音楽再生開始関数play()と音量調整関数volume()を用意する。

void play(uint8_t track) {
  uint8_t play[6] = { 0xAA, 0x07, 0x02, 0x00, track, track + 0xB3 };
  for (int i = 0; i < 6; i++) {
    uart_send_char(play[i]);
  }
}
void volume(uint8_t vol) {
  uint8_t volume[5] = { 0xAA, 0x13, 0x01, vol, vol + 0xBE };
  for (int i = 0; i < 6; i++) {
    uart_send_char(volume[i]);
  }
}

void uart_send_char(char)関数は1バイトずつ送信する自作関数だ。計6バイト送信するようにfor文の部分を各自で書き換えなければならない。ちなみにuint8_tは符号なし8ビット変数の型だ。

次の2行では音量を指定し、1番目のオーディオファイルを再生するように指定している。この2行によって音が流れ始める。あとは放置。MP3ボイスモジュールが指定されたオーディオファイルを読み込んで音を再生してくれる。

volume(0x1E); //Volume settings 0x00-0x1E
play(0x01);

あとはいつも通りにクラシックマウスを走らせればいい。

結果

クラシックマウスから車のエンジン音がしたらとてもうるさい。しかしそのうるささゆえに目立つので、サークルの新歓や学園祭のときに客引きとして役立つかもしれない。もしかすると屋外で鳴らしたら音が散ってうるさくなくなるかもしれない。ちょうどいいうるささなのかもしれない。

小さい機体から爆音がしたらギャップ萌えするかどうかは人による。少なくとも私はギャップ萌えしなかった。うるさいだけだ。

低音を鳴らすのは難しいらしく、ときどき音が割れた。今回はオーディオ機器に関する情報収集が不十分なまま製作したからだ。きれいなエンジン音を聞きたければオーディオ機器に関する情報をもっと集めてスピーカーなどを改善する必要がある。しかし個人的にはこのままの音質でも許容範囲内にあると考えている。

最後に

実は昔からクラシックマウスにMP3デコーダーとスピーカーを取り付けて音を鳴らす人がいた。そのような人たちはおそらく同じ感想を持ったと思う。音が鳴るとテンションが上がるのだ。私もスピーカーからエンジン音を聞いたときテンションが上がった。そしてこれからどんなことができそうか色々考え始めた。低音をきれいに出せるように工夫してみようか。低音を諦める代わりに小型スピーカーを使ってみようか。色んな音楽を鳴らしてみようか。このようにやり方はたくさんある。他の人がどのようにして音を鳴らすか知りたい気がする。みなさんも音を鳴らしてみませんか!

おまけ:ちょっと歴史を振り返ってみる

こちらはWMMCのホームページの作品紹介のページだ。

www.waseda.jp

作品紹介のページを見ると、色々なものが作られてきたことが分かる。私は作品紹介のページを読んでびっくりした。斬新な発想力と、それを可能にしてしまった技術力がすごい。私も発想力と技術力を共に兼ね備えた人になりたい。

昔だけでなくここ数年間でもWMMCでは複数人が色々なものを作り出している。それらを見るたびに私は楽しませてもらっている。

おしまい

明日はぱわぷろ@ラボさんのブログです。この1年で買った物らの紹介とのことですが、何を買ったんでしょう。楽しみですね。