M5StickC で超音波通信を堪能

お父ちゃん  2019.11.3 
Home > IoT > M5StickC で超音波通信を堪能
すき 1
うんこ 0

以前、Chirpというプラットフォームを使用して可聴帯域での音声通信を試してみました。

音声による信号通信 Chirp -M5StickC編-

今回は超音波での通信を試してみます。

スマホやスピーカなど音が出せれば通信ができますのでBLEやWiFiのように事前の接続設定や特別な環境準備は必要ないので非常に手軽です。
また超音波を使用すれば聴こえないのも魅力です。

 

構成

ここではM5StickCにLEDテープを接続して、超音波で色信号を送って光らせてみます。

部品

  • M5StickC

     
  • フルカラーテープLED Neopixel

Arduinoコード

Arduino IDEでコーディングしました。Arduino IDEでのM5StickC環境の詳細は以下を参照ください。

M5StickCの内蔵マイクを使用しますので以下のマイクのサンプルコードを参考にコーディングしました。
 https://github.com/m5stack/M5StickC/blob/master/examples/Basics/Micophone/Micophone.ino

音声信号の周波数解析のために以下のFFTライブラリを使用しました。
 https://github.com/kosme/arduinoFFT

Neopixel用のライブラリは以下を使用しました。
 https://github.com/adafruit/Adafruit_NeoPixel

マイクで受信した音声をFFTして周波数解析します。

以下の周波数信号を受信することでLEDの各色を点灯させます。
 15kHz:赤
 16kHz:緑
 17kHz:青

M5StickCのディスプレイもLEDと同様に色を変更しました。RGB888をRGB565に変換して色指定しています。

参考

 

動作

スマホから音声を再生させて通信動作を確認しています。

Androidアプリの周波数ジェネレータを使用して正弦波を再生しています。

15kHzの再生で赤、16kHz:緑、17kHz:青とフルカラーLEDが点灯しています。
3つ再生でLEDは白く発光します。

私は14kHz以上の音は聴こえないので超音波通信と銘打っておりますが、若い人には聴こえてしまうかもしれません。。。あしからず。

マイクのサンプリング周波数を44.1kHzとしていますので22kHzまで信号として使用できるはずです。

 

音楽再生への応用

音楽に超音波信号を仕込めば遠隔でのライティングも可能です。

DAWで15kHz、16kHz、17kHzの正弦波を貼って再生してみました。

 

このようにシーケンサに事前に仕込んでもいいですし、MIDIパッドでリアルタイムに通信してもいいですし色々応用可能です。

M5StickCならコンパクトですし音声なので複数台の同期も可能でセッティング時間もかからないので、手軽にライブでのライディング演出が実現できそうですね。

ライブしたいなぁ。

「M5StickC で超音波通信を堪能」への1件のフィードバック

  1. はじめまして。Arduinoで超音波(スピーカーからの音)を拾って周波数を表示したいと、こちらのページを拝見しました。
    M5StickCはマイクも液晶も搭載しているので、とても参考になりました。
    マイクの周波数帯が関係する以外で超音波(できれば市販されている害獣除け製品)がしっかりと超音波をだしているのか?疑問に思ったためです。
    *20000Hz~40000Hz程度
    LEDを点灯する形で制作されている部分で、液晶に拾った周波数を表示するようなスケッチなど無理でしょうか?
    失礼をお詫びして、お聞かせください。m(__)m

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください