今回は、MEMS マイクロフォン を使って、スピーカーから流れる音を直接拾い、モールス信号の解読を試してみました。
スピーカーの音を直接拾って解読する
これまでのようにオーディオケーブルで信号を取り込む方法に加え、今回は MEMS マイクロフォン(AIスピーカーなどにも使われている小型マイク)を使って、スピーカーから出た音をそのまま拾い、解読できるようにしてみました。

約300円ほどで購入したもので、例によって AliExpress で入手しました。
毎度のことながら、どこまで本物なのかはさておき、まずは実験用としては十分です。

今回使った ADMP401 の MEMS マイクボード は、端子が 3本だけ というシンプルな構成です。このボードは 3.3V仕様 なので、M5Stack 側もそれに合わせて 3.3V端子 に接続します。
また、マイク出力の AUD端子はアナログ信号 なので、M5Stack 側では アナログ入力端子(35ピン) に接続し、A/Dコンバータの値としてプログラムから読み取ります。

マイク出力のアナログ値は、Arduino 系ではおなじみの analogRead() 関数 を使って取得しました。
実際に解読を試してみる
今回は、拙作の 「Learning Morse」 を使い、パソコンから流した 数字(1〜0)の連続モールス を解読させてみました。この条件で試すのは前回の投稿以来ですが、その間、プログラム自体にはまったく手を加えていません。
その結果、20wpm を超えたあたりから誤字が目立つ ようになり、思っていたほどきれいには解読できませんでした。まだまだ改善の余地がありそうです。
今後は、このあたりの原因を探りながら、引き続き試行錯誤を続けていきたいと思います。
ちなみに、Arduino Nano では 30 wpm でも比較的きちんと解読できていただけに、この結果は少し意外でもありました。
M5Stack ならではの難しさもあるのかもしれない
M5Stack は、処理性能そのものでは Arduino と比べものにならないほど高性能です。ただ、その一方で LCD やスイッチなど多くの機能が最初から組み込まれているため、内部のファームウェア処理や周辺機能の制御で、思わぬ負荷がかかっている可能性もありそうです。
とはいえ、こうした試行錯誤もまた電子工作の面白さのひとつです。M5Stack にはまだまだいろいろな可能性がありそうなので、これからも工夫を重ねながら、その力を引き出していきたいと思います。