コラボイヤホンが届かないので自作する

この記事はLa prière Advent Calendar 2024 1日目の記事です。
今年も完走目指して頑張りましょう!

はじめに

こんぷりえ~る!!のぱふぃるです。
突然ですが皆さんは、La prièreの3人で親指担当、人差し指担当、中指担当を決めるとしたら誰がどれだと思いますか?考えておいてください。

さて、昨年のLa prière Advent Calendar 2023では、らぷりげーむExtremeという記事を投稿しました。
今年はらぷりコラボイヤホンの比較レビューをやろうかなと思います。

限定100個の先着版

2022年夏に予約販売されていたLa prièreコラボレーションイヤフォンをご存じでしょうか?私は先着版と受注生産版、どちらも購入しました!
いろいろトラブルもありましたが、受注生産版も2024年上旬発送見込みで決着したということで、この記事は12/1公開なので、一安心です。

今となってはいい思い出ですね

先着版はZeeny Artistで、受注生産版はZeeny Light3なので、機種が違うんですよね。
どれくらい差があるのでしょうか?早速聴き比べてみましょう!

お、Zeenyさんが11/30 18:09にツイートしていますね。なんでしょうか?

https://x.com/nain_jp/status/1862786035798982782
https://x.gd/2RQa7

ほよ……?

宇宙なくらげ
見つめ合うなくらげ
上から見た見つめ合うなくらげ
下から見た見つめ合うなくらげ

記事公開まであと6時間ないんですけど!!!!
もうこうなったら…………自分で作りましょう。

この記事でやること

フランスのSF作家のジュール・ヴェルヌは、「人間が想像できることは、 人間が必ず実現できる」と言いました。また、日本の政治家の小泉進次郎は、「人間が実現できることは、人間が必ず実現できる」と言うかもしれません。至言ですね。

コラボ音声入りBluetoothイヤホンは既に人間が実現できたものである以上、同じ人間の僕にも必ず実現できるはずです(見切り発車)

イヤホンだとデモンストレーション上音量が小さく困るのと、部品の小型化を検討する必要があるので、スピーカーを作ることにしましょう。
以下の機能を完成させることをゴールにします。

  1. スピーカーから音を鳴らす

  2. Bluetooth通信を実現する

  3. iPhone上の音楽をストリーミング再生する

  4. ボタンを押すことで、あらかじめmp3で保存した音声ファイルを再生する

4までできれば、トリガーと音声ファイルを差し替え、スピーカー部品をイヤホン部品に置き換えるだけで、推しのコラボ音声入りイヤホンを実現できるのでOKです。

①スピーカーから音を鳴らす

Arduino Uno Rev3とブレッドボード

マイコンを用いた開発

マイクロコントローラ(マイコン)を用いて開発します。マイコンはCPU, メモリ, I/Oポートなどを内蔵する小さなコンピュータであり、プログラムの書き換えが可能です。マイコンに電子部品電子回路を接続することで、極めて多様かつ高度な電子制御システムが実現されています。
すなわち、プログラミング電子工作によって、ペンライトやペースメーカーのような小型のものから洗濯機や人工衛星のような大型のものまで、森羅万象を創造することができます。

また、今回のような試作や概念実証の段階では、ブレッドボードという、ハンダ付けでなくピンやワイヤーの差し込みで回路を組むことのできる基板が好んで用いられます。簡単に素早く回路を組み替えることができ便利です。

圧電スピーカー

さて、音を鳴らしたいです。
電気エネルギーを何らかの方法で音、つまり空気の振動変換する必要がありますね。
方法はいくつもありますが、例えばピエゾ技術によって所望の変換を達成できます。ある種の物質は、物質に圧力を加えると結晶内部に電荷が発生して電圧が生じ(圧電効果)、逆に電圧を加えると結晶が変形します(逆圧電効果)。このような材料を圧電素子と呼びます。
圧電素子に交互に正負の電圧を加えることで、素子は伸縮を繰り返します。さらに素子に接着させた振動板を通じて、空気に疎密波が作り出されます。このような原理で音を鳴らすスピーカーを圧電スピーカーと言います。秋月電子などで1個40円くらいで購入することができます。

蝸牛鼓膜の内側にある部分で、音を感知する役割を果たします。
蝸牛は、音の高低を「蝸牛のどの位置と共鳴したか」で識別できるような物理的構造を持っています。鼓膜に近い部位は硬く狭いため高周波数(高い音)と共鳴し、鼓膜から遠い部位は柔らかく広いため、低周波数(低い音)と共鳴します。これにより、音の高さによって蝸牛内の異なる有毛細胞が刺激されます。刺激を感知した有毛細胞が、聴覚神経に伝える電気信号に変換するという仕組みですね。

せっかく電気エネルギーを力学的エネルギーに変換したのに、また電気信号になるわけです。

さて、圧電素子に加える電圧の切り替え速度次第で信号の周波数(つまり音の高さ)を調整でき、電圧を加える総時間で音が鳴る時間の長さを調整できるので、原理的には音楽を演奏することができます。
音の高さと鳴らす時間はプログラム中で指定し、マイコンに書き込めばよいです。
実際にFlyby Anomalyのサビを鳴らしてみました。

らドカレ2023でも、23日目のヤケノハラさんが圧電スピーカーでTime Lapse Lightsを鳴らしていました。

ダイナミックスピーカー

ところで圧電スピーカーは単純なブザー音の再生が主な用途であり、音楽用途には向きません。意図的にチップチューンよりも更に簡素な演奏をやる分には面白いのですが、一般的な音楽再生用のスピーカーに使うには音質面で大きな問題があります。

ここからは代わりに、ダイナミックスピーカーを用います。
ダイナミックスピーカーは電磁気学の知見を用いて、電気エネルギーを空気の振動に変換します。
ドーナツ型の永久磁石の中に、鉄芯とコイルを入れ、ドーナツに鉄板でフタをするような構造をしています。このスピーカーに対して適切な方向に電流を流すことで、フレミングの左手の法則に従ってコイルに力が加わり動き、鉄板が振動することで音が鳴るという原理です。
圧電スピーカーよりも(特に低音に)幅広く正確な音を鳴らせるため、音楽用途にはこちらが適しています。圧電スピーカーよりは高価ですが、今回使用するものであれば100~300円くらいで買えます。

ここで冒頭の話題なのですが、フレミングの左手の法則においてローレンツ力は赤色、磁界は水色、電流は黄色で塗られがちなので、親指がnayutaさん、人差し指がなくるさん、中指がいつきさんの解釈でした。一致しましたか?

一致者の回答理由

事前アンケートでは「中指立ててそう」という理由でいつきんくるが中指に置かれがちでした。

今回使用する電子部品

PCM5102AというチップをAudio Converter & Amplifierとして用います。持っていたので音質向上のために使いますが、本筋ではないのでなくても良いです。

②Bluetooth通信を実現する

デジタル機器用の無線通信規格はいろいろありますが、今回はBluetoothイヤホンの再実装が目的なので、Bluetoothを使います。
物理的にはBluetoothの規格に沿って電波の送受信ができればよく、特定の周波数の電気信号をアンテナから空間に放射できればよいわけです。とはいえBluetooth規格は複雑で高度ですし、自作した電波装置を技術基準適合証明(技適)を取得せずに使用すると電波法に違反します。

ということで、Bluetooth機能を既に内蔵していて技適も取得済みのマイコンESP32を使います。

ESP32-WROVER CAMボード(Freenove FNK0060)

ここではPCからマイコンにBluetooth接続し、マイコン上のLEDを操作する接続テストをしておきます。

↓マイコンに書き込むプログラム

#include <BluetoothSerial.h>

BluetoothSerial SerialBT;
const int ledPin = 18;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(115200);
  SerialBT.begin("ESP32_LED_Control"); 
}

void loop() {
  if(!SerialBT.available()) return;
  char command = SerialBT.read();    // マスターから受信したコマンド
  if(command == '1') {
    digitalWrite(ledPin, HIGH);      // LEDを点灯する
    SerialBT.println("LED is ON");   // マスターにメッセージを送信
  } else if(command == '0') {
    digitalWrite(ledPin, LOW);       // LEDを消灯する
    SerialBT.println("LED is OFF");  // マスターにメッセージを送信
  }
}

↓マスター側。Windows上のTera Termを使ってマイコンにBluetooth接続し、コマンド送信することでマイコン上のLEDの点滅をコントロールします。また、マイコンから送信された「LED is ON」「LED is OFF」というメッセージを受信し、出力しています。

Tera Term

Bluetoothには、ワイヤレスマウスやヘルスケア機器などから大規模IoTシステムのスマートセンサまで多様な用途があり、いくつかの方式やプロファイルが存在します。ここではSerial Port Profile(SPP)というプロファイルを使用してシリアル通信をしています。また、今回はWindowsからTera Termを使いましたが、例えばAndroidからBluetooth接続してSerial Bluetooth Terminalなどのアプリを用いて、プログラムを変更することなく全く同じように通信可能です。

③iPhone上の音楽をストリーミング再生する

オーディオデータをストリーミング配信するためのプロファイル「Advanced Audio Distribution Profile (A2DP)」や、再生停止などのリモコン操作を行うための「Audio/Video Remote Control Profile (AVRCP)」など、いくつかのプロファイルに従うことになります。
実際の開発ではゼロから再実装する必要はなく、ESP32開発者向けのライブラリが整備されているのでこれを活用します。

④ボタンを押すことで、予めmp3で保存した音声を再生する

何らかの方法で音声再生イベントを監視して、イベントがトリガーされたら設定された音声を再生するようにプログラムします。
例えば電源ONボタンなら、ボタンがプッシュされて電気的に回路が繋がるのがトリガーかもしれません。あるいはバッテリー残量低下なら、リチウム電池の端子電圧が閾値を下回るのがトリガーかもしれません。

音声再生は、mp3などからパルス符号変調データに変換し、それをアナログ信号に変換するというような方法を学べば自作できそうですが、こちらも通常は再実装不要です。
例えばESP32の場合、SDカードやフラッシュメモリに保存してmp3ファイルを再生できます。

④単体はライブラリを使えばとても簡単なのですが、③④組み合わせると意外と困ります。
「でもESP32はデュアルコアで、OSも内蔵されているから、Bluetooth音声と内蔵音声再生の2つのタスクがあってもよしなにやってくれるでしょうw」と舐めていたらハマりました。スピーカーに音楽データを転送する箇所が競合するので、ライブラリ相性などで排他制御がバグりがちです。気合いで頑張ります。

完成

これで「コラボ音声入りBluetoothイヤホン」は実現できることが分かりました。
では、当初の予定通り、先着版自作版を比較します!

  • 音質:先着版の勝ち

  • サイズ:先着版の勝ち

  • デザイン:先着版の勝ち

  • 機能:先着版の勝ち

  • 安定性:先着版の勝ち

  • コラボボイス:先着版の勝ち

いかがでしたか?参考になれば幸いです。

さて、今回は機能面の模倣でしたが、実際にはイヤホンサイズに小型化しながら、高音質も実現するまでにハードルがあります。それも利益を出しながら大量生産する必要があるのが商業製品開発です。
受注から材料調達に2年半掛かる気持ちも分かr……ん、いや……まぁそれはどうかな……。
ともかく、来年こそ届くのを楽しみに待っています!!
本当に2025年こそは……!!
お願いします!!!

La prière配信「納期守れビーム」タイムスタンプまとめ

6月新曲振り返り&マスコットキャラ制作企画【#らぷりえーる】(50:34)
7月新曲振り返り【#らぷりえーる】(33:56)
【告知あり】9月新曲振り返り&待望のアレがついに…!【#らぷりえーる】(36:19)
11月新曲振り返り&冬コミ当選したえ~る!【#らぷりえーる】(56:48)
12月新曲振り返り&らぷり旅行編!?【#らぷりえーる】(35:05)
2月新曲振り返り&らぷりウェブポンは明日まで!【#らぷりえーる】(39:57)

結論

操作音入り通話可能Bluetoothイヤホンを1000円で売ってるダイソーさんは偉大すぎる。

おわり

2日目は milmaさんのらぷりの夏、最高の夏。です!


いいなと思ったら応援しよう!