第5回 超音波通信ライブラリ作成

これまでに超音波の送信、受信、解析と紹介してきました。これらの技術を応用して、超音波でデータ通信を行なうライブラリを紹介します。

データ送受信の仕組み

今回紹介するのは、「データ送信ライブラリ」と、「データ受信ライブラリ」の2つです。これら2つのライブラリをそれぞれ送信側アプリと受信側アプリに組み込むことで、超音波によるデータの送受信が可能となります。まずは実際に動作を見てみましょう。

 

お分かりいただけましたでしょうか?送信側アプリ(左)で入力したデータが、受信側アプリ(右)で表示されていますね。これは、送信側アプリから「0(LOW)」と「1(HIGH)」の信号で構成されたデータを超音波で送信し、受信側アプリでその音波からデータを作り出すことで実現しています。

送信側・受信側の両者に必要な情報は、「ターゲット周波数」と「基本周期」になります。「ターゲット周波数」は、通信に使う周波数のことで、「基本周期」とは、「0/1」信号1つ分の時間的な間隔を意味します。分かりやすく図で見てみましょう。

ターゲット周波数の音波パターン

上の図のように、ターゲット周波数の音波が発生している間は、基本周期ごとに信号「1」が送信されているものとし、逆に発生していない間は、基本周期ごとに信号「0」が送信されているものとします。このルールに従って、送信側アプリはデータから音波を生成し、受信側アプリはその音波から元のデータを生成すればよいわけです。

ここからは、送信側アプリで使用している「データ送信ライブラリ」と、受信側アプリで使用している「データ受信ライブラリ」に分けて説明していきます。

 

データ送信ライブラリ

まずは、送信側アプリで使用する「データ送信ライブラリ」から説明していきます。データ送信ライブラリは、パラメータで設定される「ターゲット周波数」、「基本周期」、「信号パターン」から波形データを生成して発信します。

 

 

データ受信クラス

「データ受信クラス」は基本周期ごとに音波を解析し、受信データを通知するクラスです。ただし、単純に基本周期ごとに音声データを解析してしまうと、送信側アプリの音波送信タイミングと、受信側アプリの音波受信タイミングが合わなければ、誤った解釈をしてしまうことになります。

そこで、まず基本周期よりも短い「受信周期」を決めておき、受信周期ごとに音波を解析します。そして、基本周期内で発生したターゲット周波数の音波の割合を計算し、この結果によって「0」か「1」かを判断するように実装します。

 

 

まとめ

今回は超音波送受信による簡単なデータ送受信の仕組みを作りましたが、いかがでしたでしょうか?うまく送受信はできていますがまだまだ以下のような課題があります。

■データ送信ライブラリで音波を発生させるとき、小さく「プチッ」というノイズが発生する

AudioTrackを使用して超音波を発生させた場合、信号「0」から信号「1」の切り替わりの際にこのノイズが発生してしまうようです。

■データ送受信の速度が低い

今回は紹介した動画では200msで1つの信号で検証しましたが、これでは大きなデータを送ろうとすると長時間かかってしまいます。速度を高めるには、さらに短い間隔で音波を受信する必要がありますが、そうすると今度は解析対象のバッファサイズが小さくなるため、FFTの精度が低くなってしまいます。そのため、データ受信に影響が出ないよう注意する必要があります。

 

今回は解決にまで至りませんでしたが、興味のある方はぜひとも挑戦してみてください。

次回は、いよいよ最終回です。今回作ったライブラリを使用して便利なアプリを作ってみたいと思います。お楽しみに!!

One comment

  • 失礼します。
    動画と同じようなアプリを作ろうと試みているのですがなかなかうまくいきません。
    もし可能であればこのライブラリを使用して実装したコードを共有して頂きたいのですが可能でしょうか?

Leave a Reply

メールアドレスが公開されることはありません。