スケッチの修正箇所

修正するファイル :keyer_features_and_options.h

次の 3つをアンコメントする。(先頭にある”//”を削除する。
#define FEATURE_COMMAND_BUTTONS
#define FEATURE_MEMORIES
#define FEATURE_POTENTIOMETER

修正するファイル :keyer_pin_settings.h
#define command_mode_active_led
10
コマンドモードになっている時、D10に接続されているLEDが点灯する。

 

Arduino UNOやArduino nanoはその基板に電源回路やプログラムを書き込むためのUSBシリアル変換回路などが組み込まれています。スケッチを開発する場面ではこれらの機能は必須なのですが、実際の動作場面では、AVRマイコンが動作すればよい場合が多いと思います。
そこで、これらの回路を省いた最小構成のAruduino基板が販売されています。Antendoから出されている「あちゃんでいいの」です。この基板には水晶発振子の発振回路とリセット回路など最小構成の機能が組み込まれています。
左の写真がその基板に部品を実装したものです。大変コンパクトで、入出力ピンがそのまま、端子として出ていますので、これを組み込むことで機器を構成することができます。

K3NG keyerにLCDを付加する

スケッチの修正箇所

修正するファイル :keyer_features_and_options.h

次の 2つをアンコメントする。(先頭にある”//”を削除する。
#define FEATURE_COMMAND_BUTTONS
#define FEATURE_MEMORIES

シンプルArduinoを使って
スケッチの修正

①ライブラリの導入をします。
ArduinoIDEのLibraryの中にK3NG_PS2Keyboardというフォルダーを作成し、その中に
K3NG_PS2Keyboard.h
K3NG_PS2Keyboard.cpp
というファイルを収納します。(注*)
これらのファイルはGitHubで見つけられます。
keyer_features_and_opsions.hの中にある
#define FEATURE_PS2_KEYBOARD
のラインをアンコメントします。(先頭の//を削除する)

55×40×20のケースに収めました。コントロール部は1つの基板に纏めケースの上面に張り付けています。
リチウムポリマー電池は150mAhの容量ですが、17.5×32×4.3という小ささです。充電モジュールも組み込むことができました。


消費電流を減らすためのアイディアを7L4WVUさんからもらいました。
速度設定用のVRに接続する電源をピンから供給するというものです。スリープモードに入った時の電流を減らすことができます。


私の場合、使っていないD3から取っています。
スケッチ本体のvoid setup()の中に

pinMode(3, OUTPUT);    // D3ピンを出力に設定
digitalWrite(3, HIGH);     // D3ピンをHIGHに設定


を挿入しました。
また、"keyer_settings.h"の中の"sleep_inactivity_time"を5に変更しました。



リチウム電池は入手が難しく、メンテナンスも気を付けなくてはなりません。手軽に使えるものとして、単三電池3本を電源としたキーヤーを作りました。電池4本用のスイッチ付きケースを使います。電池1本分のスペースにシンプルArduinoの回路を組み込みました。
コマンドボタンとメモリー選択ボタン5個をつけています。

keyer_settings.h の中の次の項目を変更します。
#define analog_buttons_number_of_buttons
5
この設定では、コマンドボタン1個とメモリー4個の計5個を使うようになっています。そこでメモリーを1個増やして、合計
6と修正します。

電池の消耗を少なくしようと、
keyer_features_and_options.h の
#define FEATURES SLEEP  をアンコメントしてみたのですが、動作が不安定になってしまいました。この機能について調べましたがよくわかりません。どなたかお教えください。

追記:いろいろな製作で使いまわしていたスケッチだったので設定に齟齬があったようです。改めてスケッチをダウンロードしてやり直したら正常に動作しました。

Blog

メモリー入力
コマンドモードに入り、P1を押す。
記憶させたい符号を入力
入力が終了したらコマンドボタンを押す
入力した符号列がサイドトーンで出力される
再度コマンドボタンを押して通常モードへ
メモリーの送出
メモリーボタン1~4を押す
TX出力の切り替え
メモリー1またはメモリー2のボタンを長押しすると、
TX出力が選択され、”TX1”または”TX2"とアナウンスされます。

ここで使ったタカチのSW-130(W40×H25×D130)というケースにどうやら組み込めることがわかりましたので、通常のパドルを組み込んでみることにしました。
お手軽パドルで紹介したアクリル板を使ったものです。ちょうど片手で握ることができ、操作しやすいと思います。

ケースの蓋の部分に、お手軽パドルの機構を取り付ける。

キーボード入力に特化したK3NG Keyre

パドルも省いてしまい、キーボードですべての操作をするキーヤーにしました。
TXへの接続は keyer_pin_settings.h の
#define_tx_key_line_1 11 //high=key down/tx on
#define_tx_key_line_2 12
#define_tx_key_line_3 13
の部分を修正する必要があるかもしれません。

また、ポテンションメーターは使いませんので
keyer_features_and_opsions.hの中にある
#define FEATURE_POTENTIOMETER
はコメントアウトします。

アクリル板でケースを作り収めました。
送信機への出力部に手を加えました。通常はトランジスタで駆動できるのですが、リグによってはうまく動作しないことがあります。そこで、TX2の出力でリレーを駆動し、その接点をトランジスタ出力と並列に接続しました。通常はTX1の出力で使用しますが、うまく駆動できない場合にはCh2のボタンを長押しするとTX2に切り替わり、リレーでの出力になる仕組みです。あまり使わないかも知れませんが、予備機能として組み込みました。
コマンドモードに入ったことを表示するD10に接続していたLEDは、LCDでの表示がありますので削除しました。
コマンドモードに入ったことはLCDに表示され、どのコマンドを入力したのかも表示されます。しかし、コマンドモードになっているという状況はLCDには表示されません。そのため、コマンドモードである状況を表示するためにD10に接続されているLEDが必要でした。

電池は単三4本のケースにダミーを1本入れて使っています。

上蓋にコマンドボタンと4つのチャンネルボタンを置いています。

上記のようにしてスケッチを書き込んだシンプルArduinoでCW DrillCW Decoderを構成しました。
シンプルArduino基板は小さいのですが、裏面に水晶発振子を装着していますので、穴あき基板に密着させることができません。ピンヘッダとピンフレームを使ったのが、左のCW Decorderです。穴あき基板に直接リード線で配線したのが右のCW Drillです。
大変コンパクトに作ることが出来ました。
Arduino UNOなどを活用して、開発を行い、スケッチが決まったら、このようなシンプルArduinoで機器を作るのがよいように思います。

これに搭載するAVRマイコンはATmega328Pを使います。
ただし、Arduinoとして動作させるためにはこのマイコンに予めブートローダーが書き込まれている必要があります。
開発環境であるArduinoIDEには、ブートローダーを書き込む機能が含まれていますので、これを使いました。
①Arduino UNOに、書き込み用のシールドを乗せます。(シールドはAntendoで販売されています)
②Arduino UNOとPCをUSBケーブルで接続します。
③ファイル>スケッチの例>ArduinoISPを書き込みます。
④ツール>ボード>Aruduino Uno
⑤ツール>書き込み装置>Arduino
as ISP 注意
⑥ツール>ブートローダーを書き込む
⑦ステータスが「・・・書き込んでいます」から「・・・書き込みが完了しました」になれば出来上がりです。

K3NGキーヤーを4チャンネルのメモリーが使えるように組み込みました。スピード調整はコマンドでもできるのですが、直感的に変更できるようVRを取り付けました。

モジュール化したものをケースに押し込んだのですが、スペースが足りませんでした。そこで、VRを外に出し、充電モジュールを取り外しました。また、配線が結構スペースを取るので細いものに変更し、どうやら蓋を締めることができました。

手で握って操作します。通常の移動局を相手にした交信なら、メモリーに入れたメッセージだけでも交信可能です。

狭いケースの中に押し込むので、機能ごとにモジュール化して隙間に入れられるようにした。

パドルと一体化したK3NG

部屋の片づけをしていたら、昔作ったキーヤーが出てきました。PICにプログラムしたもので5つのメモリーを書き込んだものです。
すでに電池は放電してしまい動きません。また、スピードが固定で実用的ではありませんでした。しかし、当時としては十分製作を楽しんだものです。このまま捨ててしまうのは忍びなく思いました。
そこで、中身を全て入れ替えることにしました。K3NGキーヤーで、
タッチパドルとし、電源は14500のリチウム電池を使い、DC-DCコンバーターモジュールで5Vに昇圧する、また充電モジュールも組み込むことにしました。
狭いケースの中に組み込むため、一枚の基板ではなく、各セクションごとにモジュール化し、隙間に押し込む作戦です。

力づくで押し込んで完成しました。昔と外見は大きくは変わっていませんが、コマンドでいろいろな機能が使えるキーヤーとして復活しました。

クリックすると大きくなります
電池駆動 K3NG Keyer

キーイング回路にリレーを組み込む

上掲のように、側面にLCDを配置し、上部に操作ボタンを設置するケーシングをしたのですが、リグに並べて置く場合には見やすいのですが、机上に置いて操作する場合、LCDが見にくいことがありました。
そこで、LCDを上面に設置し、操作も上面で行う配置のものを作りました。Simple Arduinoの基板はそのままで、その他の機能を別基板としてケース内配置の自由度を増すようにしました。

回路図

クリックすると大きくなります

ブートローダーを書き込んだATmega328Pを{あちゃんでいいの}の基板に挿入します。
このマイコンにスケッチを書き込むのですが、基板には書き込み用の端子が設けられています。
USB-シリアル変換モジュールを使い、{あちゃんでいいの}基板とPCとを接続します。

変換モジュール側       Simple Arduino側
GND                   GND
CTS/接続せず
VCC
                   5V
TXD                   RXD
RXD                   TXD
DTR                   Prog_Reset

この{あちゃんでいいの}基板は Arduino  Uno として認識されますので、通常の書き込みと同様にスケッチを書き込むことができます。

パドルと一体化 ・モジュール化

LCDの配置を上面に変更

ボタンを押してコマンドモードに入るとLCDに表示されます。VRで速度を変えると、その速度が表示されます。また、パドルから入力するとその文字が表示されます。しかし欧文のみでそれ以外の符号は””での表示になります。コマンドによる設定の状況が表示され、使いやすさが増すと思います。

スピード調整をコマンドで リチウム電池仕様

クリックすると大きくなります
 

Atmega328Pの容量では、これらの機能を入れるのは難しいようです。K3NGのオリジナルスケッチではWinkeyreを使うことを前提に、さまざま機能が組み込まれています。私の環境ではPCと接続しての運用は行いませんので、このWinkeyerをエミュートする機能を外すことにしました。#defineされているWinkeyer関係の部分に//を付けて、コメントアウトしました。こうすることで容量を確保しています。

注*

GitHubのページで、これらのファイルを見つけることが出来たのですが、ダウンロードする方法がわかりませんでした。
そこで、ファイルの中身は見ることが出来ましたので、Textとしてコピー&ペーストして、ワードパッドに移し、拡張子を txt から h や cpp に変更して所定のフォルダに収納しました。

Blog

より小さくまとめる

最近はさまざまな部品が手に入りやすくなってきました。特に電池が高性能化し小型になりました。
今回はポリマー電池を使ってキーヤーを纏めてみました。
気になっていた消費電流の多さについても対策をしスリープモードに入れば数mAしか流れないようになりました。動作時の消費電流も10mAほどに抑えられています。

Blog

タッチパドル

コマンドによる操作と、4チャンネルのメモリー機能に絞り、リチウム電池14500を使ったキーヤーにまとめてみました。
ケースは単3電池2本のスイッチ付き電池ケースです。

回路は同じなのですが、今回はケースに入れてみました。単4電池3本を使い、TX出力は1つのみです。また、メモリーは4つにしました。スケッチは上記のリチウム電池1本使用のものと同じです。ケースに余裕がありますので、コントロール押しボタンを内部に収め、ボタンの上部だけを穴から覗かせるようにしました。

K3NGキーヤーでキーボードを使って符号が出せるようにしました。回路の変更はキーボードをつなぐためのDinコネクターへの4本の配線だけです。

PS2キーボードのためのコネクタ接続



クリックすると大きくなります

コマンド一覧
コマンドボタンを押すと、コマンドモードに入ります。以下のコマンドを入力すると、その機能が変更されます。通常モードに戻るには再度コマンドボタンを押します。

A:Iambic Aモードへの切り替え
B:Iambic Bモードへの切り替え
D:Ultimaticモードへの切り替え
E:スピード表示 wpm
F:サイドトーン周波数調整
G:バグモード切替
I:TXへの出力on/off
J:短点長点比調整
N:パドルの左右切り替え
O:サイドトーンon/off
P#:プログラムメモリー入力(#は1~4の数字)
T:チューンモード
V:ポテンションメーターのon/off
W:スピード変更
X:コマンドモードから通常モードへ
Z:オートスペースon/.off


K3NGのArduinoを使ったキーヤーは有名ですが、たいへんたくさんの機能が盛り込まれています。Atmega328Pでは容量が不足してしまい、その機能を活かすことができないようです。
基本的な機能に絞り込んで、このSimple Arduinoに搭載してみました。
4チャンネルのメモリーとVRによる速度調整、コマンドモードに入っていることを示すLED,その他基本的に備わっている機能です。
さまざまな機能はコマンドボタンを押すことで変更できます。
TXへの出力は2回路にしました。選択ボタンを押すことで切り替えることができます。

回路図

クリックすると大きくなります

LCDへの接続は右上の回路図のようにVCCとGND、SDA,SCLの4本のラインだけです。
スケッチの設定も僅かなのですが、嵌まってしまいました。詳細はBlogに書いた通りなのですが、結果として私のやった方法を書いておきます。

スケッチの修正箇所

修正するファイル :keyer_features_and_options.h

次の 4つをアンコメントする。(先頭にある”//”を削除する。
#define FEATURE_COMMAND_BUTTONS
#define FEATURE_MEMORIES
#define FEATURE_POTENTIOMETER
#define FEATURE _LCD_YDv1

修正するファイル :k3ng_keyer
本体のスケッチの中で”YDv1”で検索して、次の行を探す。
LiquidCrystal_I2C lcd(
0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // for FEATURE_LCD_YDv1; set the LCD I2C address needed for LCM1602 IC V1
赤字で示した位置のLCDのアドレスを、使用するLCDのものに変更する。
アドレスが不明の場合にはAddress Scannerというスケッチによって調べることができる。

IDEのLibraresからLiquidCrystal_I2CなどのLiquidCrystal_I2C.hというファイルが入っているフォルダーをIDE外へ一時退避させる。
IDEのLibraresにNewLiquidCrystalを導入する。


この状態でコンパイルさせるとうまく通りました。


このK3NGキーヤーはたくさんの機能が詰め込まれていて、その一部だけでも十分に実用できます。当初、LCD表示は必要ないと判断し、取り付けませんでした。しかし、多くの方がLCD表示を取り入れていられるので、どのような表示になるのか確かめたくなりました。

電池駆動3号機

乾電池3本を使った構成

キーヤー出力(TX-OUT)を2本出しました。メモリーボタンを長押しすることで2台のトランシーバーを切り替えることができます。

PS2 主な特殊キーの割り当て

F1~F12:      メモリー再生
ShiftF1~F12:   メモリー登録 (終了はEnter)
AltF1~F12:     メモリー繰り返し再生
↑上矢印:     速度を1wpm速くする
↓下矢印:     速度を1wpm遅くする
→右矢印:     短点、長点比を大きくする
←左矢印:     短点、長点比を小さくする
Home:       短点、長点比率をリセット
CtrlF1,F2、F3:   TX切り替え
Tab:         送信の一時停止
CtrlA:        Iambic Aモード
CtrlB:        Iambic Bモード
CtrlO:        サイドトーンon/off
CtrlW:        wpm設定
(数字で入力 確定Enter)
Scroll Lock:    次の2文字を結合する(DOでホレ)

K3NGキーヤーにPS2 キーボードを付ける

Simple Aruduino周りの接続図

クリックすると大きくなります

同じリチウム電池(14500)を使って、キーボード専用のK3NGキーヤーを作りました。
キーボードから入力するので、パドルは必要ないのですが、念のため、接続できるようにしてあります。
ミニDINのコネクタが入手しずらかったのですが、ネットで探し出しました。

パドルを接続するジャックや、トランシーバーに接続するプラグは直接引き出すようにしました。

コントロールボタンは一番左側がコマンドボタンで、その右にある4つがメモリーの選択ボタンです。コマンドボタンを押すと、ボタンの脇にあるLEDがコマンドモードに入ったことを示します。上記のようにパドルでコマンドを入れ、操作をします。小さくまとめましたので、TX出力は1つです。
コマンドでP#(#は1~4の数字)を入力すると、それぞれのボタンに割り当てる符号列を入力することができます。4つのメモリーがあるとラバスタQSOはパドルを使わなくても可能でしょう。(Hi)

電池ケースは1本用に細工し、空いたもう1本分のスペースにシンプルArduinoを納めます。コントロールスイッチ類はケースの外側に配置し、圧電素子はケースの蓋の裏に張り付けます。キーイング回路は隙間に押し込めるようにバラック配線とします。

使用する電池は、単三電池とほぼ同じ大きさの14500という規格のリチウムイオン電池です。3.7Vの電圧がありますので、シンプルArduinoも動作するようです。

K3NGキーヤー Blog

K3NG Keyer