二月の電子工作「SPRESENSEで音響通信」ー送受信の検討ー [SPRESENSE]
SPRESENSEの弱点である通信を音で実現しようと始めたこのプロジェクト。今回は、その基本方針をたててみました。
■ 通信方法はFSKを採用
通信方法は周波数変調方式のFSKを採用します。FSKは次のように二つの周波数をそれぞれ"0"と"1"に割り当てて、データを送信する方法です。"1"に相当する周波数を"mark"、"0"に相当する周波数を"space"と呼ばれています。
データを送信するには、SPRESENSEからある特定の二つの周波数を生成し出力しなければなりません。BeatBoxのように、正弦波のMP3データを読み込んで再生という方法もありますが、スピードが出そうにないし、そもそも技術的にダサい。。
■ 送信は "AudioOscillator" ライブラリを活用
世の中にはいろいろと達人がいるもので、TomonobuHayakawa氏がSPRESENSEで特定の周波数音を発生させる、"AudioOscillator"というArduinoライブラリをGitHubで提供してくれています。
実はこのライブラリは大分前から目をつけていて、そのうちシンセサイザーを作りたいなと思ったりしています。(ラズパイシンセサイザーかっこいいので、SPRESENSEでも実現したい~)
送信側はこのライブラリを使うことで特定の2つの周波数を生成できそうです。ライブラリの使い方などはまだ良くわかっていませんが、サンプルは簡単に動いたので期待が持てそうです。
■ 受信間隔は周波数変調間隔の1/2以下
データの受信は、マイク入力で音を拾ってFFT解析でピーク周波数を検出することで "0:space" もしくは "1:mark" を検出するようにしたいと思います。でも、送信側の周波数の変調間隔と受信側の音のキャプチャ間隔はよく考える必要がありそう…。
簡単に考察すると、変調間隔と同じ "n msec" で受信間隔をとると、”0” と "1" の周波数が最悪50%ずつ混在してしまい ”mark/space" を判別できなくなりそうです。なので、受信間隔は最低でも "n/2 msec" である必要がありそうです。
これをもとに、送信側の変調間隔と受信側のサンプリング周波数とバッファ数など決めていきたいと思います。”AudioOscillator” と ”FFT” がうまく共存できれば、ループバックで検証ができるところまで行けるかも?
とりあえず、今日はここまで~。
(^^)/~
関連リンク
二月の電子工作「SPRESENSEで音響通信」
https://makers-with-myson.blog.ss-blog.jp/2021-02-02
二月の電子工作「SPRESENSEで音響通信」ー音響ループバックを試すー
https://makers-with-myson.blog.ss-blog.jp/2021-02-14
二月の電子工作「SPRESENSEで音響通信」ーFSKによるループバック・データ通信の実現ー
https://makers-with-myson.blog.ss-blog.jp/2021-02-22
二月の電子工作「SPRESENSEで音響通信」ーPCとSPRESENSE間の音響無線通信の実現!ー
https://makers-with-myson.blog.ss-blog.jp/2021-02-28
SPRESENSE でピンマイクを使えるようにしてみた
https://makers-with-myson.blog.ss-blog.jp/2019-10-05
SPRESENSE にピンマイクをつけて録音してみた!
https://makers-with-myson.blog.ss-blog.jp/2019-10-12
■ 通信方法はFSKを採用
通信方法は周波数変調方式のFSKを採用します。FSKは次のように二つの周波数をそれぞれ"0"と"1"に割り当てて、データを送信する方法です。"1"に相当する周波数を"mark"、"0"に相当する周波数を"space"と呼ばれています。
データを送信するには、SPRESENSEからある特定の二つの周波数を生成し出力しなければなりません。BeatBoxのように、正弦波のMP3データを読み込んで再生という方法もありますが、スピードが出そうにないし、そもそも技術的にダサい。。
■ 送信は "AudioOscillator" ライブラリを活用
世の中にはいろいろと達人がいるもので、TomonobuHayakawa氏がSPRESENSEで特定の周波数音を発生させる、"AudioOscillator"というArduinoライブラリをGitHubで提供してくれています。
TomonobuHayakawa/Spresense-Playground Contribute to TomonobuHayakawa/Spresense-Playground development by creating an account on GitHub. github.com |
実はこのライブラリは大分前から目をつけていて、そのうちシンセサイザーを作りたいなと思ったりしています。(ラズパイシンセサイザーかっこいいので、SPRESENSEでも実現したい~)
送信側はこのライブラリを使うことで特定の2つの周波数を生成できそうです。ライブラリの使い方などはまだ良くわかっていませんが、サンプルは簡単に動いたので期待が持てそうです。
■ 受信間隔は周波数変調間隔の1/2以下
データの受信は、マイク入力で音を拾ってFFT解析でピーク周波数を検出することで "0:space" もしくは "1:mark" を検出するようにしたいと思います。でも、送信側の周波数の変調間隔と受信側の音のキャプチャ間隔はよく考える必要がありそう…。
簡単に考察すると、変調間隔と同じ "n msec" で受信間隔をとると、”0” と "1" の周波数が最悪50%ずつ混在してしまい ”mark/space" を判別できなくなりそうです。なので、受信間隔は最低でも "n/2 msec" である必要がありそうです。
これをもとに、送信側の変調間隔と受信側のサンプリング周波数とバッファ数など決めていきたいと思います。”AudioOscillator” と ”FFT” がうまく共存できれば、ループバックで検証ができるところまで行けるかも?
とりあえず、今日はここまで~。
(^^)/~
関連リンク
二月の電子工作「SPRESENSEで音響通信」
https://makers-with-myson.blog.ss-blog.jp/2021-02-02
二月の電子工作「SPRESENSEで音響通信」ー音響ループバックを試すー
https://makers-with-myson.blog.ss-blog.jp/2021-02-14
二月の電子工作「SPRESENSEで音響通信」ーFSKによるループバック・データ通信の実現ー
https://makers-with-myson.blog.ss-blog.jp/2021-02-22
二月の電子工作「SPRESENSEで音響通信」ーPCとSPRESENSE間の音響無線通信の実現!ー
https://makers-with-myson.blog.ss-blog.jp/2021-02-28
SPRESENSE でピンマイクを使えるようにしてみた
https://makers-with-myson.blog.ss-blog.jp/2019-10-05
SPRESENSE にピンマイクをつけて録音してみた!
https://makers-with-myson.blog.ss-blog.jp/2019-10-12
SONY SPRESENSE メインボード CXD5602PWBMAIN1
- 出版社/メーカー: スプレッセンス(Spresense)
- メディア: Tools & Hardware
SONY SPRESENSE 拡張ボード CXD5602PWBEXT1
- 出版社/メーカー: スプレッセンス(Spresense)
- メディア: Tools & Hardware
コメント 0