モールス信号デコーダーの考察

テレビを見ていると、よく 「行列の出来る店」なんて言う特集をやっている。盆は、 都内が空くので、狙い目とか。

待ち行列の長さが、旨さに比例するのだろうか? 単に店のステータスに利用されてる だけと、うがった見方をしたくなっちゃうぞ。

おいらは、3時間待ちなんて、金を貰ってもやだね。ああ、バイトで、2000円ぐらいの時給をくれるなら、考えてもいいか。勿論、貰った分しか、注文しないけど。それって、ただで、食事にありつこうという、さもしい根性じゃねぇかい?

さて、ハムフェアであるが、入場までどのくらい待つのだろう? 結構、混みそうな予感がしたので、チケットを先周りして買ってきた。これで、どのぐらい時間短縮が出来るかは不明だけど、対策しないよりはましかな?

Windows版 モールス復号機を試してみる(WIN_CW編)

レトロな雰囲気のWindow構成が、俺的には好印象。Windows 3.1時代を彷彿させる、のっぺらぼうな画面を見ると、おうご同輩と声をかけたくなるぞ。だって、おいらが普段使ってるFreeBSDでは、twmなんだもの。

肝心の性能はどうかと言うと、まず、おいらは、耳(受信機)を持ってないので、マイクから、モールス信号を入力した。モールス発信機は、このシリーズで作ったHaskell製のやつだ。電波も音波も空間を伝搬してくれるから、こういう時は非常にありがたい。

マイクゲインが結構高いので、スピーカーに近づけすぎると、すぐにオーバー入力の赤インジケータが点灯する。なかなか、最適レベルにするのは、難しかった。

勿論、奇麗にコードを復号してくれたよ。ドットとスペースの周期をプログラム上は、100msに設定してるのだけど、表示では、92msとなっていた。説明書によると、この表示は、大雑把なものですとなっていたけど、ひょっとして、フィルターで信号のエッジが削られてしまっているのかも知れないな。

手軽に使えるので、縦振り電鍵の練習には最適と思いました。

DSCW編

よくぞここまで機能を充実させたなあと、感心する出来栄えのソフトだ。送受信に対応 するばかりか、交信記録簿ソフトとも連係出来るので、実戦向けだ。

オシロとスペアナが付いていて、技術者魂をくすぐられる。音波を飛ばして、復号 させて見たけど、誤字脱字なく受信してくれた。

ちょいと、お遊びで、口モールスも叩いて(喋って)みた。ト とか ト・ト とかの 短点系や、ツー とか ツー・ツー は、旨く叩けたけど、ツー・ト・ツー・ツー みたい なのは、なかなか難しい。オー・ト・ト・ト は、日頃鍛えているせいか、奇麗に打てたぞ。(笑)

なお、口モールスの場合、中心周波数を、最低に設定しないと復号してくれなかった。 フィルター、良く効いているなと、実感した次第。こういう、おいらは、低音の魅力?

参考資料として、トランジスタ技術が載っていたけど、きっと、FFTの参考にされたんだろうな。あの雑誌、電子工作から、ソフトまで、電子立国を支える影の立役者だからなぁ。CQ出版頑張れ。そして、なによりもこのソフトの作者さんである、JA3CLM さん、これからも、楽しんで、ソフトを改良していってください。

Happy Hacking with Digital Sound CW !!

復号システムの考察

上記2つのソフト共、入力は受信機からのオーディオ信号だ。このため、ソフトの構造が複雑になっているはずだ。

受信機とパソコンの間に、何かハードをかませると、ソフトの作りがずっと単純になると思われる。

たとえば、オーディオ信号を、コンパレータ経由で、リトリガブル・ワンショットIC(たとえば、SN74123)に接続する。出力は、ディジタルなモールス符合になるので、RS232の適当な端子に接続すればOK。スレッショルドは、コンパレータの比較電圧を調整する事になる。IC 2個ぐらいで、実現出来るだろう。

パソコン側は、エッジを検出して、それぞれのエッジ間の時間を測定すれば、ドット、ダッシュ等が判定出来る。

この方法だと、ソフトは簡単になるけど、ノイズに弱いな。調整出来る箇所は、コンパレータのレベルだけだもの。それに、決定的な弱点は、間にハードが入る事だ。普通の人には、特殊なハードなんて、難しいもの。

やっぱり、Windowsで標準になった、Plug and Play じゃなきゃ、受け入れてもらえないよ。 そうなると、上のハード部分を、ソフトで実現する必要が出てくる。

でも、ソフトで実現するなら、信号処理技術の恩恵を最大限受けられるように考慮した方がいいな。ソフトは複雑になるけど。

サウンドカードに載っているコーディク(A/D)によって、信号をディジタル化。FIRフィルターを通して、目的とするモールス信号のみ抽出。これで、S/Nが向上するはず。

次は、FFTして、目的信号の断続を検出した後、その時間間隔を計時。それを元にドット、ダッシュの判定。こんな流れを想像した。

これだけの事を全部ソフトでやると、結構処理が重くなるはずだけど、DSCW動かしてる時に、Windowsの負荷グラフを見た限りでは、そんなでも無かった。 徹底的に必要スペックを検討して、負荷が軽くなるように設計されているに違いない。 (例えば、FIRフィルターの段数は、Qとの兼ね合いを考慮して、なるべく小さくするとか、FFTのポイント数も、周波数分解能を考慮して、小さくするとか)

資料集め

上記の考察を元に、モールス信号復号機を FreeBSDで実現する時に必要であろう、資料を集めておく。

まずは、コーディク(A/D)の制御かな。IO直接叩きをせざるを得ないだろう。

Wavefile録音と言う事で、ハード叩きの例

PCMのコントロールつ事で、ioctlのための資料

Pythonでは、どう抽象化してるかも見ておくか マルチメィデアサービス

後は、FreeBSDの兄弟であるOpenBSDからの資料も。

Direct X の本には、かなわないはずだけど、何とかする鹿。

さて、もう一つの難関は、FFTとかフィルター関係か。 信号処理のJava例 ここの、ウェーブレット変換が使えたら、面白いと思うんだけど、どうだろうか?

手持ちの本としては、オーム社の「C言語ではじめる 音のプログラミング」があるな。

FreeBSD でも、man sound とか man rtprio とかが、副資料。それに何と言っても、これ以上は無いと言う 福資料として、すべての source。

これぞ、Open Source Softwareの醍醐味!