2012-01-06 5 views
2

私が取り組んでいるプロジェクトでは、面白い技術的課題があります。1つの波形でバイナリを送信する方法

デジタルデバイスは、マイクジャックソケットを介してiPhoneにデータを送信する必要があります。

マイクロコントローラとiPhoneの両方からインターフェイスをコーディングする必要があります。

この特定の問題に対して確立されたプロトコルはありますか?私はツインクロックとデータライン(ala PS/2プロトコルhttps://en.wikipedia.org/wiki/PS/2_connector)の贅沢はありません。

私はF2F(https://en.wikipedia.org/wiki/Biphase_mark_code)を認識していますが、これはデコードするロイヤルピタです。

帯域幅を最適化するという問題もあります(効率とアルゴリズムの複雑さの間にはある程度のバランスがあります)。 iPhoneのサンプル数は44.1 kHzです。理論的には、各サンプルは、それが高いか低いかに応じて少なくとも1ビットを送信することができます(理論的にはもちろん各サンプルは16ビットですが、実際には帯域幅を理論上の最大値に最適化しようとすると...実際には、すべてのビットが3つのサンプルの長さを使用して、すべてが受信され、ビットが2つの連続するサンプルの間に収まらないことを確認する必要があるかもしれません。

私はこれを行うために持ち上げることができるいくつかのオープンソースコードはありますか?デジタル技術の初期段階からソフトウェアエンジニアがこの問題を解決していると私は考えています。私は本当にここの車輪を再発明したくありません。

答えて

1

AFAIKでは、マイクロフォンを使用してIR受信機からの信号をデコードするアプリケーションでも同様の手法が使用されます。とにかく、マイクロコントローラサイトにDACがあれば、そのようなソフトウェアでデコードできるインパルスを簡単に形成することができます。あなたはWinLIRC:http://winlirc.sourceforge.net/audioreciever.htmlを見ることができます。

2

私はモデムの知識と経験から、効率を達成するには(適切なBERで適切なデータレートで)、アルゴリズムの複雑さとコストを低く抑えることはパイプの夢ではありません。

  • チャネル(例えば部屋)ノイズ:

    ここ

    は、あなたがデータを送信する際に何らかの形で直面しようとしているいくつかのことです。それは信号を歪ませ、復号誤りに寄与する。振幅変調で符号化された情報がここで最も影響を受けます。

  • 複数の信号パス。受信機(マイクロフォン)は室内の物体からの信号反射を拾います。信号がさらに劣化します。
  • 通信チャネル/信号パスを変更します。デバイスが静止していない場合、および/または他のものが室内を移動すると、信号はその特性を経時的に変化し、さらに解読が困難になります(時には不可能)。
  • 送信機と受信機で使用される発振器は、わずかに異なる速度で動作します。さらに、その頻度は時間とともに変動するでしょう。これは、高データレート/長データパケットにおいて追加の同期を必要とする。
  • ハードウェアやソフトウェア、特にiPhone側での歪み、特に非線形で、オーディオチャネルでの高速データ通信を真剣に妨げています。 iPhoneはモデムとして機能するように設計されておらず、モデムの一般的な要件をすべて満たす必要はありませんでした。マイクロホンが非常に非線形で、その周波数範囲が非常に狭く、時折オーディオサンプルが失われたり薄い空気から出たり、送信されたサンプルまたは受信されたサンプルのブロック間でオーディオに顕著なギャップがある等

私は個人的には、非常に簡単で低速なものを実装することを検討することをおすすめします。 ITU-T勧告V.21およびV.23に記述されているものと同様の2-FSKモデムを実装します。 1つの周波数を使用して0を送信し、別の周波数を使用して1を送信します。

最初に、デバイスに統合する前にソフトウェアで1200ビット/秒以下の速度で動作させてください。ホワイトノイズが追加され、エンコーダとデコーダのサンプルレートが多少違う場合は、ソフトウェアで完全に動作するようにしてください(ヒント:ここでサンプルレートコンバータが必要ですが、オーディオエディタによってはWaveファイルをリサンプリングすることができます。手で)。

iPhoneがひどく台無しになっていない限り、モデムを実装できるはずですが、それは簡単な作業ではありません。あなたは現実的でほとんどのコードをオンラインで見つけることはできません即座に仕事をする。

Btwの場合は、dsp.stackexchange.comでこの質問をすることをお勧めします。

編集my answer to a different question and code in itを参照してください。驚くほど高速ではありませんが、ここでは単純なV.23のような1200ビット/秒のモデムが機能します。いくつかの調整を行うことで、より高いデータレートをサポートすることができます。 FSKトランスミッタのコードは、マイクロコントローラに移植するのに十分シンプルです。

3

理論上のデータ転送速度は、同期オーバーヘッド、さまざまな種類の歪み、信号対雑音比によって制限されます。そうしないと、16 * 44100bpsに近いものが可能になります。

実際には、ハムラジオのRTTYまたはPSKのソースコードは、ノイズのあるオーディオ幅のチャンネルよりも若干機能することが知られているため、検索することができます。

関連する問題