DCF39/DCF49パケットパケット通信、基礎の基礎 |
![]() |
EFR TeleswitchEFR Teleswitchは広域の電力系システムをリモートコントロールするための無線システムです。ドイツ(DCF39, DCF49)とハンガリー(HGA22)に送信所があり、日本で直接受信することは困難ですが、WebSDR経由でモニターできます。 |
![]() |
PROTOCOL国際規格「IEC 60870-5」をベースに「DIN 19244」に規定されているようです。EFR公式資料 Klaus Betke氏資料 シンプルなプロトコルです。これを題材にしてパケット通信の基礎を勉強しましょう! |
PACKET PARSER / ANALYZERArduinoで受信プログラムを作成してみました。10秒ごとにタイムパケット、必要に応じて機器に対するコマンドが送信されています。 ユーザーデータ領域はあくまでバイナリデータですが、稀にアスキー文字で"DCF39 TEST"のようにコールサインを送出することがあるようです。 |
|
![]() |
CODEv1.38 DOWNLOAD(.zip)![]() パケットの処理は初めての領域で「たぶんこんな感じだろう」という自己流ですが、市販ソフト以上の機能を盛り込むことができたので満足です。 |
![]() |
SYSTEM※デモジュレータはNE565Nを使ったもの |
![]() |
MASK & SHIFTプログラミングの超初歩の確認!1バイトに複数の情報があって切り分ける必要があるとします。そんな時は「ビット演算子」である「マスク」や「シフト」を使って加工します。 |
![]() |
PARITY & CHECKSUM通信理論の超初歩の確認!ざっくり図のような検算を送信側・受信側双方で行うことによってエラーを検出します。BAUDOTのRTTYには出てこない概念ですね。 |
![]() |
MSB & LSB
通信理論の超初歩の確認! |
![]() |
電波時計LCDにタイムパケットを表示して電波時計風に。 |
![]() |
CSV FILE OUTPUTファイル出力をすれば統計をとって分析することもできます。参考コード |
![]() |
DCF49 24H ANALYSISDCF49を24時間記録して分析してみました。取得ログ(.csv) ※2020年現在、アスキー文字でのコールサイン送出はやっていないようですね。 |
PACKET SENDER
フレームがシンプルなので送信側も簡単に作れます。送受信して遊びましょう! |
|
![]() |
CODEv0.6 DOWNLOAD(.zip) |
SSDVの基礎実験
デジタル伝送なら文字、音声、画像データは本質的に同じものなので、同じプラットフォームで送ることができます。 |
|
![]() |
SSDVの基礎実験1.8inch液晶表示もできました。32x32px程度なら200Baudも出せばいい感じです。160x120pxは300Baudでも激遅でした^^少しでも実用性を考慮するならしっかりしたモデムを使って1200Baud以上で。 参考コード テストパターン(32x32) カメラ画像(160x120) SSDVの話はまたいずれ別の項目を作って載せたいと思います。 |
RS-FECの基礎実験
QRコードでお馴染みリードソロモン符号によるエラー訂正の実験をしてみました。 |
|
![]() |
RS-FECの基礎理論多くのサイトや動画でリードソロモン符号の原理が解説されていますが、数学が得意ではない私は「ガロア体」なる言葉が出てきた瞬間にそっ閉じする訳です。なんか雰囲気だけでも掴める解説はないんかね?と探し回ってみると、都城高専の中村博文先生が「小学生でもわかるように解説してやんよ。」というレポートを出しておられまして、それがこちら、 小学校の剰余計算の学習のみを前提とするリード・ソロモン符号 ... これでもまだ難しい私は情報を極限まで切り詰めて整理しました。(左画像) 要するに付加データを含めた全データが2つの多項式を構成していて、受け側で計算するとエラーの「大きさ」と「位置」を割り出せるという話です。 こんな感じで合ってます?ほんと数学は苦手でいつも苦労します^^ |
AX.25の基礎実験
AX.25はAPRS(自動位置情報通知)やアマチュア衛星でよく使われているプロトコルです。元は商用の「X.25」でそれをアマチュア無線用に改良したものです。 |
|
![]() |
DCF39/49の知識は使えない。DCF39/49パケットをスピードアップして制御信号をちょこっと変更すれば「はいAX.25完成!」とはいかないんですね。残念!同期の取り方が全く異なり、NRZI符号化という新しい概念も出てきます。商用プロトコルの中では逆にメジャーで必須の項目なので勉強しておきましょう。 SONODA Takehiko氏の日本語解説がこちら |
![]() |
CODEv1.31 DOWNLOAD(.zip)LINUXにも標準インストールされているプロトコルですし、優秀なライブラリもすぐに見つかるでしょうが、ここは勉強のために自分で書いてみました。 理論は複雑ではないですが、それをどうやってコードに落とし込むかはかなり試行錯誤しました。結果、十分安定動作するものが出来たのでよかったです。 |