無線ブログ集
メイン | 簡易ヘッドライン |
Pocke KeyerⅡに表示をつけてみた! (2021/12/22 17:09:52)
FRISKサイズキーヤーの第二世代キーヤーである Pocke KeyerⅡ は、そのソフトにK3NGキーヤーを搭載したことによって様々な機能が実現できており、とても便利になりました。
お陰様で頒布の方もコンスタントにご注文をいただき大変嬉しく思っております。
第一世代でご要望の多かったケース付きにしたことも功を奏しているかと思います。
しかし、FRISKサイズという小さく作ることを目的としたため、K3NGの多くの機能を活かすに至っていませんでした。マイコンのメモリー量の制約もあります。
今回、その中でも簡単に実現できそうな機能として液晶表示があり、その実験をやってみました。
オリジナルはパラレル接続の液晶が選択されており、多くのピンを必要としますが、そこはI2C接続の液晶を接続するためのソフトも何種類か用意されており、当局が保有する液晶にぴったりの物はありませんでしたが、似たようなソフトを書き換えて対応できました。
Pocke KeyerⅡと液晶の接続は、I2Cの2本と、電源とGNDの4本のみです。
液晶は、秋月さんで売っているものが手持ちにあったのでそれを使用しました。
それで何が表示されるかというと、スピードVRを変えた時のスピード表示(wpm)、コマンドボタンを押した時の Command Mode という表示、コマンドを入力した時のコマンド名の表示と、設定した内容、キー入力した文字表示等です。
便利と言えば便利ではありますが、表示があるからできる新しい機能とかは特にありませんでした。
(見つけきれてないだけかもしれませんが)
使い慣れてしまえばなくても困るものではありませんでした。(最初からなしで使用していますが)
ふと思ったのは、キー入力した文字が表示されるということはキー入力文字の認識機能があるということであり、CW解読器(CW DECODER)が作れるのではないかと言うことです。
サイト検索をしながら、ソースコードを見ていると、やはりありました。
2つの CW DECODE機能が用意 されていました。 一つは、単純にCWの長点短点のON/OFF信号を取り込んで、入力された文字の表示をするというものです。この入力に、縦触れ電鍵の信号、またはもう一つのエレキーの出力をつないで文字入力すると、入力した文字が表示されます。しかし、それなりの実用的なものにしようとすると、この信号はトーンデコーダー等を使って綺麗なCW信号にして入力する必要があります。
実は、 当局も20年ほど前にPICを使用してここまでは作った ことがあり、前段にはトーンデコーダーを使用していましたが、 実際には使用に耐えるものでは ありませんでした。
当局的には、それでお仕舞になっていたのですが、今回のソースコードにはもう一つのDECODE機能がありました。
それは Goertzelアルゴリズム というものを使ったマイコンでのDSP処理によってCWを解読させるもののようでした。このアルゴリズムを理解する能力は持ち合わせていないのですが、このアルゴリズムを用いたCE DECODERのオリジナルは、下記のサイトで紹介されています。
http://skovholm.com/cwdecoder
これもArduinoのソフトとして作成されており、当局的には試しやすい環境にありました。
最初は、K3NGキーヤーにそのまま取り込んで機能実現できないかやってみようとしましたが、プログラム量が増えすぎて、メモリーに入りませんでした。
回路的には、アナログポートをバイアスしてCWのオーディオ信号を入力するだけであり、実験は簡単にできそうだったので、Pocke KeyerⅡに液晶を接続した状態で、このデコーダーソフトのみを書き込んでやってみました。
実際に受信したCW信号をデコードしてみると意外とうまく解読してくれています。
再生できない場合、ダウンロードは🎥 こちら
アナログポートに適当な信号を入れてみた状態です。
気をよくして、何とかプログラムが入らないかやってみましたがあと少しの所で入りませんでした。
かといって、キーヤーとデコーダーが別物だと使い勝手が良くないですし、DSP処理でコード率が高くなっているといっても完全に実用的なものとは言えないだろうし、やはりキーヤーにデコーダーが補助的に入っている的なものとして一体型にしたいしと検討してみました。
マイコンは、同じATMega328を搭載したのでは物理的にも脳がありません。そこで8ピンのATTiny85あたりが使えないかやってみました。
まず最初にやったのは、ATTiny85だけでデコーダー機能が動作するかの実験です。ポートが8ピンしかありませんのでI2Cを使用して液晶を接続し、かつ内部クロック(8MHzですが)を使用してデコーダー機能を試してみます。これは、何とかうまくいきました。
しかし、内部クロックは8MHzでオリジナルは外部クロックとして16MHzが使用されています。CW信号のサンプリング周波数は8KHz台が設定されており、クロックを8MHzとしたときのデコード率がどうなるかは想定できなかったので、外部クロック16MHzを使用することにしました。この時点でポートが足らなくなるのですが、デコードしたCW長短点の信号を出力する機能があります。この信号を、先のK3NGキーヤーの最初に記述したCWデコード入力ポートに入れることによってK3NGキーヤーの液晶に表示できないかやってみました。
ピンポンです。
8ピンのATTiny85マイコンをDSP処理によるCWデコード専用機能としてトンツー信号をK3NGキーヤーに入力してデコード文字をうまく表示させることができました。
これで、完全シンプルとはいえないまでも、 シンプルな一体型デコーダーキーヤー が作れそうだと言うことがわかり、完成形を目指すこととしました。
せっかく作るので、もう少しだけK3NGキーヤーの機能を活かしたいと思い、 出力は2つ として切り替えて使用できるようにしました。2台にリグに接続できるようにするのと、CWのオーディオ信号も取り込むので、 オーディオ側は絶縁トランス 、 CW出力はフォトカプラを使用してアースを分離 した設計としました。
また、マイクでもCW信号が拾えるように コンデンサマイクとマイクアンプも内蔵 としました。
リグからの信号を入力するジャックを抜くとマイクに切り替わる使い方です。
Pocke KeyerⅡで搭載したスリープ機能ですが残念ながらメモリ量の関係で入りませんでしたので、電源としては、 単4乾電池2本 としました。単3型のリチウムイオン電池だと1本で済むのですが、入手性と充電の問題があるので汎用的なものとしました。
それで出来上がったプロトが下の写真です。Pocke KeyerⅡと比較しています。
電池は裏側に背負って ます。
入力されたオーディオ信号は、DSPで処理されているのでいらないのかもしれませんが、パルス性のノイズが入ると、E,E,Eとデコードされてしまうので、効くかどうかわかりませんでしたが一応 LCのBPF を入れています。
また、入力するCWのトーン周波数はマイコンであらかじめ設定する必要があるので、 558Hzと744Hzを選択 できるようにしました。これは電源ON時にのみ選択されます。LC BPFのセンター周波数も同時に切り替えることができます。
こうして、出来上がった一体型 デコーダーキーヤーのプロトでデコードしている様子が以下です。
再生できない場合、ダウンロードは🎥 こちら
コールサインがそのまま表示されてますが、クラブ局ということでご了承を!
FT-817の上にのせてスピーカー出力をマイクで拾ってデコードしたのが下の映像です。
再生できない場合、ダウンロードは🎥 こちら
ほぼ同じようにデコードできています。
CWの解読器は過去から色々販売されたりしています。
(自分で作ったのを含めて)最近のリグでは搭載されているのもありますし、キットではQCXにも搭載されています。
しかし、これは凄いという完全なものはないのかなと思っています。
今回の検索で一番参考になったのは、いつも検索で見つかり参考にさせてもらっていることが多い JH1LHV OMの記事です。2015年の記事ですからもう6年も前に試されています。
その後も、ずっと継続してやられており、とても参考になりました。
ありがとうございました。
OMも書かれていますが、万能なCW DECODERはないということです。当局もそう思っています。
しかし補助的に使うとか、送信の練習に使うとか、使い方次第ではないかと。
最近のAI技術を駆使すれば、会話の認識の向上が著しい昨今ですからこれまでよりさらに進歩したデコーダーが出てくるかもしれません。それを楽しみにしながら、とりあえず小さなマイコンの組み合わせでできるCW デコーダーキーヤーを作ってみました。(Pocke DecoKeyer)
execution time : 0.025 sec