* オーディオデバイスによる PSK 通信 [#gadbec50]

前回の日記から間が空いてしまったけど,おもむろにこんなテーマを掲げてみる.

Linux のオーディオデバイスを使ってデータ通信をしてみた,というおはなし.

** プログラム [#ze3632df]

http://jr0bak.homelinux.net/~imai/linux/psk.tar.gz

何はともあれ,プログラム.
実験用なので,perl でてきとーに書きました.

perl で適当に書いたとは言え,送り側受け側合わせて 200 行足らずで書けてしまったのは,書いた本人もビックリしていたりする.

** PSK とは [#ne8be756]

PSK とは Phase Shift Keying の略.
搬送波の位相を切り替えてデータ通信,つまり 1/0 を送る変調方式である.
今回使った2相PSKだとこんな感じになる.

#ref(BPSK.png,center,50%)

** 変調 [#q1b404f6]

搬送波を sin ωt とすると,2 相 PSK では
- データが 1 の時は sin ωt
- データが 0 の時は sin ( ωt + π ) = -sin ωt
:データが 1 の時|sin ( ωt + 0 ) = sin ωt
:データが 0 の時|sin ( ωt + π ) = -sin ωt

を送ることになる.

つまり
+ 1/0 のデータをデータを +1/-1 に変換して
+ 搬送波と掛け算する

これだけである.

が,これだけだと周波数スペクトルが広がってしまうので,無線通信の場合は,普通はフィルタを付けて帯域制限をかける.
が,スピーカから鳴らす分には問題ないので,今回は広がったスペクトルはそのまま垂れ流すことにする.


** 復調 [#l7e0575e]

PSK の復調は,同期検波を使うのが基本.

方法としては,まず,何らかの方法で受信機側の発信器を sin ωt に(位相を含めて)正確に合わせる.

そしてこの発信器出力を変調波と掛け算すると…三角関数の積和の公式を使って

:信号波が 1 の場合|sin ωt sin ωt = (1/2) * ( 1 + cos 2ωt )
:信号波が -1 の場合|-sin ωt sin ωt = -(1/2) * ( 1 + cos 2ωt )

となる.
cos 2ωt の周波数成分をフィルタでバッサリカットすると,元の信号波が得られることになる.

けど今回は復調側はこの方法を「そのまま」採用していない.
これについては次回.

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS