CW Decoder
2018.05.19
手持ちのATMEGA328P-PUと表示器LCD1602の組み合わせで欧文/和文対応CW Decoderを作ってみました。

当初はJH7UBC局のトーン検出に567Dを使用したもの及びスケッチを利用させて頂き作成しました。
トーン検出性能の問題なのか入力レベルの大小、周波数、ノイズ等の影響なのか解読率が今一つでした。

中華製でAliExpress等にて1K円程度で売られているPIC16F+567Dの組み合わせのCW Decoderも解読率が悪く実用に耐えないと聞いています。
(トーン検出の前段にフイルタアンプ等を組み込めば改善されるかも?)


そこで今回は解読率アップを狙いOZ1JHM局のアナログ入力FFT方式、和文対応スケッチを採用してみました。

OZ1JHM局サイト
http://skovholm.com/cwdecoder
欧文スケッチ
https://github.com/SkillfulHacking/arduino-cwdecoder
和文対応スケッチ
http://www.skovholm.com/decoder_kh.ino  (JA9MAT局が和文対応)

回路は簡単で外付け部品も少なくArduino UNO (nanoも可)を利用すれば簡単に作成出来ます。
サイトの図面でArduinoのD13に接続している発光ダイオードの向きは逆になっていますので修正して下さい。

和文対応スケッチで強制的に和文/欧文切り換えを行う場合はArduinoのD2及びD3に押しボタンスイッチ追加が必要です。
D2/D3に電圧がかかってい無くプルアップしないとD2/D3をスイッチでアースに落としても切り換え出来ませんでした。(アースに落とすのではなく+5vをスイッチ経由で入力すればOK? )

又、D13はDigital信号ON/OFF表示で使用していますので欧文/和文切り換え表示はD4に変更しました。LCDにモードが表示されますのでD4に接続するLEDは必要ないですが当初作成Dcoderでモート表示に使用していましたのでそのまま流用しました。

----------------------スケッチ112行目付近の修正---------------------
void setup() {
pinMode(2,INPUT) ; //スイッチに接続ピンをデジタル入力に設定
pinMode(3,INPUT) ; //スイッチに接続ピンD4をデジタル入力に設定
digitalWrite(2,HIGH); //D2プルアップ
digitalWrite(3,HIGH); //D3プルアップ
// pinMode(13,OUTPUT) ; //LEDに接続ピンをデジタル出力に設定
pinMode(4,OUTPUT) ; //LEDに接続ピンD4をデジタル出力に設定

---------------------スケッチ160行目付近の修正-----------------------
if (digitalRead(2) == LOW) { //スイッチの状態を調べる ORG:HIGH
// digitalWrite(13,HIGH) ; //和文スイッチが押されているならLEDを点灯
digitalWrite(4,HIGH) ; //和文スイッチが押されたならLEDを点灯
sw = 1; //和文に強制的に切り替える
}
if (digitalRead(3) == LOW) { //スイッチの状態を調べる ORG:HIGH
// digitalWrite(13,HIGH) ; //欧文スイッチが押されているならLEDを点灯
digitalWrite(4,LOW) ; //欧文スイッチが押されたならLEDを消灯
sw = 0; //欧文に強制的に切り替える
}

--------------------------------------------------------------------------

スケッチはTone検出周波数:744Hz / BandWidth:140Hz設定にてコンパイルしました。

OZ1JHM局のFFT方式は解読率は良く入力レベル変動、ノイズ等の影響は少ないようです。
スピードも10~30wpmの範囲内で若干タイムラグがありますが自動追従で解読出来ました。

後日、20x4の表示器に取り換え及びスイッチ等でTone検出周波数/BandWidthを変更出来る様に改良、ケースに入れたいと考えています。




567Dトーン検出方式からアナログ入力FFT方式に変更、回路はそのまま残しています。
写真右側中央付近の8Pソケットが567D用です。567Dを取付け、スケッチを変更すればトーン検出方式でも動きます。



LCD1602を取付けた写真です。表示エリアが狭いためLCD2004を使用した方が良いです。

---------追記-------------------
サイトURL https://k2jji.org/2014/09/18/arduino-base-cw-decoder/ を参考にAroduino(Atmega328P)のA0~A3の入力でTone検出周波数/BandWidthを各々4通りに設定、及び設定値をLCDに表示出来る様にスケッチを変更しました。
LCD2004(送料込み300円)はAliExpressに注文しましたので到着後交換予定です。


2018.05.19 10:55 | 固定リンク | 電子工作

- CafeNote -