2014年10月5日日曜日

PIC WSPR for TX-136 接続テスト

台風18号が近づき朝から雨模様なので外に出かけず引きこもっていました(笑)

そんなわけでPIC WSPRのプログラムを進め、微小周波数シフト対応(FSK変調)ファームウエア改造済みJUMA TX-136に接続してWSPR送信テストしました。

以前製作した外部コントローラーに使った16F648Aにそのまま換装するため同ピン数で同ピン配置の16F1847を採用、LCDモニター表示と書き換え用のプログラムをWSPRコード生成プログラムと統合して一応使えるレベルまでにしました。

 
ちょっと長めですが、WSPR2で送信。下行の[ ]内はシンボル値、右は残り数です。 

 GLとPower値を変えながら送信
実際の運用中では何回も変更することもなさそうですが、任意の移動地のグリッドローケータと出力をPCなしで変更してWSPRコードを生成できる点は便利だと思うのは自分だけでしょうか^^;

コントローラーとしては、DFCWやQRSSモード未実装でトータルの完成度はまだまだ高くないのですが、WSPRエンコード部分はこれでほぼ問題ないだろうと思います。(拡張モードには非対応ですが)

自分だけで完結するのは勿体ないので、興味のある方に希望があればソースファイルをお渡ししようかと考えています。TX-136コントロール以外にもDDSを直接制御し信号を発生させたり、トーンを発生させAFSKキーヤーに応用するのも良いかもしれません。メールお送りください。

2014年10月3日金曜日

やるなケンウッド

昨日JVCケンウッドのニュースリリースでTS-590シリーズのリファイン版TS-590Gシリーズが発表されていました。

いろいろと機能や回路などの見直しがなされたようですが、LFerとしてはこの2点に注目しました。

 1.VFOが1MHz以下の場合1Hz桁表示が可能になる。
       (FINE機能をオンにすると1Hz桁表示が出てくるらしい)
 2.DRV端子は従来の135kHz帯に加えて475.5kHz帯の0dBm出力が可能になる。

というわけです。

公称受信周波数が0.13MHzからとなっているし、±0.5ppmTCXO標準装備なのでパワーアンプさえ用意すればスローデジタルモードを含めた135kHz帯、475.5kHz帯の運用が手軽にできそうです。

YAESUのFT-1200シリーズと同価格帯なのも魅力ですね。いまのIC-7200Mを置き換えてしまおうかなぁ...

2014年9月25日木曜日

TX-136/500用マルチモードビーコンコントローラ2への一歩

mbed環境から始めて8bitPICの18Fシリーズに移植したWSPRコード生成プログラムを、さらに一つ下のクラスである16F1シリーズに載せて動作させることに成功しました。

4MHz動作ですが、浮動小数点などを使った重い計算は入っていないので速度的にはさほど問題はなさそうです。

右のICが18ピン16Fシリーズ最上位PICの16F1847 3.3V動作
右がTera term上に表示されたPIC WSPR処理結果表示
16F1847はプログラムメモリが14KB(8KW)、RAMが1KBと18ピン16Fシリーズ中最も大容量ですが惜しむらくは秋月や他のパーツ屋では扱っていません。そこで今回はRSオンラインで注文しました。1個215円ですが5個単位からの注文でした。また他にもDigi-KeyやChip One Stopでも扱っているようなのでそれほど入手は難しくないようです(Keyer Mini-V2にも将来使う予定です)。

TX136用のビーコンコントローラは16F648A(4KW, 256B)にアセンブリ言語でプログラムしましたが、WSPR用にあらかじめPCで生成したWSPRコードをEEPROMに納めていたので、移動などによるGLや出力表示の変更がその場では不可能でした。このプログラムを組み込むことによって随時コードの書き換えが出来るので、FBなんじゃなかなぁとひとり悦に入ってますhi

というわけで次はいままでのコントローラーの16F648Aを今回このプログラムを納めたPIC16F1847に換装して実戦投入したいと考えています。(他の部分を改めてCで書きなおさないといけませんが^^;)

2014年9月21日日曜日

PICにWSPRコード生成プログラムを移植(訂正あり)

WSPRコード生成プログラムをmbed環境で組みましたが、今回これを基にして8bitPICにプログラムを移植しました。

PIC18F26K22にレベル変換IC ADM3202の組み合わせでPCと接続
Nucleoに使われているARMプロセッサにくらべてPICはプログラムメモリもRAMも小さいため、とりあえず28ピンPIC18Fシリーズで最強な(笑)18F26K22(プログラムメモリ64KB, RAM1024B)をターゲットにしてMicrochip純正のXC8フリー版でコンパイルしました。コンパイルは通りましたがプログラムメモリが10%前後、RAMも22%程度と比較的大きなサイズになってしまいました。

そこで遊びのRAMを極力減らす(1ビット情報をchar型1つに割り当てず、8ビット分をひとつのchar型に収めるなど)方向でソースを書きなおしました。


プログラムメモリもRAM消費もぐっと減ってFBです。
処理過程と結果はRS232C経由でPCに表示させてます。(中央がPIC Windowsの間違い 右がNucleo 下がPICで生成した結果)

真ん中のコマンドプロンプト内はGENWSPR.EXE 右はmbedによる処理結果
PICによるWSPRコード生成結果をTeraTerm上で表示

表示関係をコメントアウトとしてコンパイルするともっと減ってこんな感じに。


これだけ減れば場合によっては16Fクラスでもいけるかもしれません。

移動場所や送信出力の変更によるコード変更もこれでバッチリいけそうです。

2014年9月17日水曜日

mbedでWSPRコード生成

mbedは対応ハードウエア(NucleoはCortex-M4搭載でも1,500円くらいで購入できる)さえあれば、PCに開発環境を苦労して構築することなく、プログラミングが容易に出来るクラウドな環境です。

先日はDDSのコントロールを試してみましたが、今回はWSPRコード生成プログラムをmbed環境で構築してみました。

PCに繋がるのはUSBケーブル1本のみ 持ち運びに便利でどこでも開発可 hi

WSPRエンコード手順は前の投稿で検証しましたが、流れとしては

    1.文字列の数値化(コールサイン、グリッドローケータ+電力)
    2.数値の畳み込み符号化(k = 32, r = 1/2)
    3.インターリーブ処理
    4.同期シンボルとの併合

となります。

mbedにはCortex-M4のSTM32マイコンを搭載したNucleoボードを使いましたが、STlink/V2ドライバをインストールすると仮想comポート経由でPCとの通信が可能になるため、それぞれの処理結果をprintf()でターミナルソフトに表示させることが出来ます。

処理結果をPC上で確認しながらコーディングが出来るのでとても便利です。

Windowsで動作するWSPRエンコードソフトはいくつかありますが、中でもGENWSPR.EXEは処理過程が表示されるので、これを平行して立ち上げて比較しながらコーディングの修正ができて大きくどつぼに嵌らず一応完成にたどり着きました。

中央はGENWSPR.EXEの処理結果 右が作成したプログラムの結果をターミナルで表示
インターリーブ処理の訳と理解が不十分で少し悩みましたが、他で公開されているソースコードを参考にしながら修正できました。

8ビットPICやTX-136/500で使われているdsPICの16ビットPICにも使えるようにしていきたいと思います。