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

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回路にしました。選択ボタンを押すことで切り替えることができます。

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

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

 

メモリー入力
コマンドモードに入り、P1を押す。
記憶させたい符号を入力
入力が終了したらコマンドボタンを押す
入力した符号列がサイドトーンで出力される
再度コマンドボタンを押して通常モードへ

メモリーの送出
メモリーボタン1~4を押す

TX出力の切り替え
メモリー1またはメモリー2のボタンを長押しすると、
TX出力が選択され、”TX1”または”TX2"とアナウンスされます。

注*

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

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

リチウム電池は入手が難しく、メンテナンスも気を付けなくてはなりません。手軽に使えるものとして、単三電池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  をアンコメントしてみたのですが、動作が不安定になってしまいました。この機能について調べましたがよくわかりません。どなたかお教えください。

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

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

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

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

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

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

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

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

キーボード入力に特化した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
はコメントアウトします。

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 キーボードを付ける

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

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



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

 

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

スケッチの修正箇所

修正するファイル :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が点灯する。

Simple Aruduino周りの接続図

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

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

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

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

Arduino  Uno として認識されますので、通常の書き込みと同様にスケッチを書き込むことができます。

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

K3NG Keyer