JH3DRN 趣味の徒然

主にアマチュア無線、電子工作について書いてます.

紙QSLがLOTWに反映された

経緯

少し前の記事にも書いたが、紙QSLをLOTWに登録して貰う手続きに、今年の2/16にJARLへ伺ってDXCCフィールドチェックをお願いした。JARLからARRLへデータが送られるのは月2回との事でいつ頃反映されるのかは正確には分からないとの事らしい。(因みにローカル局が紙QSLを直接ARRLに送った所、3ヶ月程度掛かったとの事)

無事登録された

で、今日(4/14)ARRLのページで確認した所、登録されていた。詳しく見ると DELETED の沖縄も登録されているので間違いないと思う。今日の状況がこちら

2024/04/14 JH3DRN DXCC状況

今まではデジタルで申請していたのだが、Pnone、CWで DELETED エンティティが3つ程あるので今後は Mix で申請しようと思う。

ついでにWASも

少し前にWASが完成していたのでこれもついでに申請しようと思う。皆様と同じく、DE州が最後に残って KA3ZLS 局との交信で完成した次第で、こちらはデジタルで申請かな。

WASの状況

次は275

250の次は275エンティティとなるが、結構ハードルが高そうだ。私の設備は前にも書いた通りなのでさほど強力では無い。持てる設備で挑戦するのが醍醐味だと思って頑張って楽しむつもりである。

トライバンド八木に24MHzを無理矢理乗せる !?

経緯

私のHFアンテナ設備は、3バンド八木ビーム(14, 21, 28MHz: TA-341:20mh )と J-Poleアンテナ(3.5〜50MHz: 10mh )で、当然の事だが、ビームアンテナは安定して飛んでくれている。それに反してJ-Poleアンテナは地上高も低く飛びは悪い。最近結構レアなエンティティがWARCバンドでオンエアすることが多い & 運用する局が比較的少ないので交信出来る可能性が高い事が分かった。受信していて分かったのだが、24MHzにおいて受信状況を比べて見ると、明らかにビームアンテナの方が良く聞こえる(見える)が、送信は出来ない。(SWRが高い:マッチングが取れていない)J-Poleの方はマッチングは取れてSWRが低いので送信は可能ではあるが、明らかに受信感度が悪い。我が家のアンテナがこちら。

JH3DRNのアンテナ群

アンテナチューナ

私のメインリグは SunSDR2DX であり専用のアンテナチューナ(AAT-100)も持っているのだが、自動チューニングの為コイルが入ったアンテナでは同調出来ないケースが多い。現にリグを24Mhzに設定して、自動チューニング:AAT-100経由で、ビームアンテナに給電してもSWR値は大きく、送信する事は出来ない。実はアンテナチューナはもう1台持っていて、こいつはレガシーな、全て手動でチューニングを行う代物である。(クラニシ製 モデル NT-616)で、こいつを使って無理やりトライバンドビームで24MHzが運用出来ないかと試行錯誤した所、まあまあ簡単にSWRが1.3程度まで下がる事が分かった。アンテナチューナがこちら

SunSDR2DX 専用 AAT-100オートアンテナチューナ

ラニシ アンテナチューナ:NT-616

使ってみたら

そんな感じで使って見たらそれなりに使える。まあ、考えてみればリグを騙して無理矢理アンテナに電波を乗せている訳で、アンテナチューナで不整合分を処理しているのでちゃんとしたマッチングでは無いのだが、SWRが低いので安心して送信出来るメリットは有る。さらにJ-Pole アンテナより受信感度が勝る事を考えると、こんなのも有りでは??と思う。送信時の状況がこちら。

JTDXでの送信状態

そんな訳で24MHzは3バンドビームで運用出来る様になった。それで味を占めて18MHzのどうか?と試したみた所、24MHzよりかなりシビアなチューニングが必要ではあるが、「運用出来無くは無い」と言う事が分かった。ただ、24MHzの方が受信状況やチューニングの容易さを比べると18MHz は微妙なので当面は運用しないと思う。ともあれ、3バンドビームユーザーは多いと思うので、ご参考になれば幸い。

K3NG CW Keyer を作る:おまけ編

ケースに余裕があるので

前回の投稿で K3NG Keyer は終わりにするつもりでいた。ケースに入れてみるとそれなりの見栄えが実現出来て満足なのだが、少し大きめのケースだった為 空きスペースが結構有って「部品が幾つも入りそう」と思ったのが今回の発端

ストレートキーも使うので

私は基本的にはエレキーなのだが、少し前にバグキーに凝った事が有ってまあまあ高価なバグキー(Begali Intrepid)も所持している。通常、ストレートキーとエレキーを使い分ける場合には送信機のCW入力コネクタにキー側のコネクタを差し替えて使う事になると思うが、送信機のCW入力って、大体後ろ側に設置されている為コネクタの差し替えが面倒である。それで、K3NGの説明を見ていたら「FEATURE_STRAIGHT_KEY」と言う項目があった。ネットで調べてみると余っているArduino入力にストレートキーを接続したらエレキーと同時に使えると言う事らしいのでこの機能を実装してみた。因みにバグキーはこちら

Begali社製 モデル " Intrepid "

ストレートキー対応

ストレート対応に必要な作業は
1. エレキー基板の "D8" とグランド間に0.1μF のセラミックコンデンサを接続して、この2点を端子化 & ケース背面のコネクタに接続する
2. keyer_features_and_options.h , keyer_pin_settings.h を以下の様に変更する

#  key_pin_settings.h の変更箇所  

#ifdef FEATURE_STRAIGHT_KEY
//  #define pin_straight_key 52
  #define pin_straight_key 8 → ストレートキーを接続する端子番号を変更する
#endif //FEATURE_STRAIGHT_KEY  

# keyer_features_and_options.h の変更箇所
# 下記の行を有効化する

#define FEATURE_STRAIGHT_KEY
#define FEATURE_STRAIGHT_KEY_ECHO

D8, GNDを基板から取り出す & ケース背面に入力コネクタに取り付けたのがこちら

エレキー基板から D8 , GND 信号を取り出してケースのコネクタに接続

写真左下に見える白と緑のワイヤが、基板の D8, GND に接続されていて、ケースのコネクタと繋いでいる。こんな感じでハードが整った所でコンパイル、正常に通って無事正常動作した。確かに便利 繋ぎ替え無しでエレキーとストレートキーが使える!

スピーカ & アンプ

折角ケースに入れたのでスピーカも上面に取り付けたいし、アンプもまともな物を。と言う事でこんな感じで組み込んだ。

アンプとスピーカを上面に取り付けた様子
使ったアンプ 2.6cm角 の大きさ
音の大きさも自由に変えられるし、音もスピーカをケースに入れる事で聞きやすい音になったと思う。使ったアンプはヤフオクで良く出品されている、4個で¥1000 位の物。こう言う用途には十分使える。で、完成した正面がこちら
スピーカとアンプを取り付けた ケース正面
色々楽しませて貰ったが本当にこれで一件落着としたい。設計者のK3NG-OM、基板を領府頂いた JH1LHV-OM 有り難うございました。

総括

今回作ってきた中で色々思った事があるので少し
1. 何と言っても自分が作ったエレキーが実戦で十分使える & 恐らく世にあるエレキーの中でもトップクラスの性能である事が嬉しい
2. 製作が容易で再現性が高い。領府頂いている基板の再現性が高いので、Arduino が使えてある程度自作経験のある方ならば製作が可能
3. 実使用状態で 開発環境:IDEと 接続してバージョンアップが可能。(このメリットは大変大きいと思う!)
4. ケーシングに関して、特殊な部品は必要ない。ただ、穴開けはある程度の経験が必要かも
5. ケーシングする事で操作性が向上する(自画自賛??)
6. 変換コネクタを使用する事でUSBキーボードが接続&使用出来る。( 他には無い特長!)

K3NG CW Keyer を作る:ケースに入れる編

経緯

色々有ったが何とか K3NG CW Keyer が完成して実戦で使える様になったのだが、基板のまま使う事が何とももどかしい。思案をしても結論は出ないので思い切ってケースに入れる事にした。まずは完成状態をご覧頂きたい。

完成状態を正面から見る
完成状態、横面
完成状態、横面
使ったケースはタカチの "MB9-6-13" 他にも探したのだが最小限の加工で使えるのがこのケースだった。やや高さが無駄に高いが市販品なので良しとした。

作るにあたって

基板をケースに入れる時に何時も心がけている事があってそれは、「 パネルと基板を直結しない。半田付けなしで基板を取り外せる様な構造にする」事である。基板とパネルを直結するとメンテナンス時等で作業した後の再半田付けを間違ったりする可能性があるので、パネルと基板の接続は必ずコネクタ経由としている。で、内部はこんな感じ。

ケース内部の配線状況
ケース内部横から
ケース内部横から
具体的にやった事は、Keyer基板で下記のインターフェイスを端子化して基板に設置してパネルと接続した。
1. 2つのLED
2, 速度調整用VR
3. 5つのスイッチ
CPU基板からは電源スイッチを、これはパネルスイッチ直結した。(直結してると言われるかも知らないがご容赦)

ケース加工

何時もケースの加工には悩まされる。特に器用ではないのでケースに穴を開ける位の事は出来るのだが、四角穴(今回で言うと液晶表示器の穴)が旨く開けられない。ギザギザが目立って綺麗では無いので、フィルム(クリアファイルの黒いやつ)を加工して両面テープで貼り付けた。(最初の写真) で、フィルム貼る前がこちら

液晶用の穴、フィルム貼る前

総括

ケースに入れると使う上で安全であるし、「作った〜!!」と言う実感もあって好きなのだが手間が掛かる事と言ったら、、、(それが好きなのかも知れないが)最後に全景をもう一枚。

ケースに入れた全体
今回のケーシングで今度こそ一件落着になるかと思います。お付き合い頂いた皆様、有り難うございました。

K3NG CW Keyer を作る:改良編

使ってみた感想

JH1LHVさんから領府頂いた基板でK3NG Keyer を作って使ってみたのだが、幾つか?な点が有った。
1. 何故か、Sidetone の ON/OFF が出来ない
2. Sidetone の音が小さい & 音の周波数が変更出来ない
3. キーボードも使ってみたい
以上の項目についてやってみた事を書いてみた

Sidetone の ON/OFF が出来ない  

結論から言うkeyer_features_and_options.h の設定が間違っていた。項目:FEATURE_SIDETONE_SWITCH をコメントアウトしていたのが悪かったらしく、コメントにしたらSidetone ON/OFF が可能となった。それ以外にも見直した結果の keyer_features_and_options.h を下記する(コメント部分は割愛しています)

# Arduino UNO で使用する keyer_features_and_options.h

#define FEATURE_BUTTONS
#define FEATURE_COMMAND_MODE
#define FEATURE_POTENTIOMETER   // do not enable unless you have a po
#define FEATURE_SERIAL_HELP
#define FEATURE_PS2_KEYBOARD   // Use a PS2 keyboard to send code - l
#define FEATURE_LCD_YDv1     // YourDuino I2C LCD display with old LCM 1
#define FEATURE_SLEEP  // go to sleep after x minutes to conserv
# Arduino Mega2560 で使用する keyer_features_and_options.h

#define FEATURE_BUTTONS
#define FEATURE_COMMAND_MODE
#define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface f
#define FEATURE_MEMORIES               // on the Arduino Due, you m
#define FEATURE_MEMORY_MACROS
#define FEATURE_WINKEY_EMULATION    // disabling Automatic Software
#define FEATURE_POTENTIOMETER     // do not enable unless you have a
#define FEATURE_SERIAL_HELP
#define FEATURE_PS2_KEYBOARD     // Use a PS2 keyboard to send code - 
#define FEATURE_DEAD_OP_WATCHDOG
#define FEATURE_AUTOSPACE
#define FEATURE_LCD_YDv1   // YourDuino I2C LCD display with old LCM 1602
#define FEATURE_SLEEP      // go to sleep after x minutes to conserve battery
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION  // Use wh
                                                            
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
#define OPTION_WINKEY_STRICT_HOST_OPEN        // require an admin host open 
#define OPTION_WINKEY_2_SUPPORT      // comment out to revert to Winkey 
#define OPTION_WINKEY_SEND_BREAKIN_STATUS_BYTE
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET  // (Required for 
#define OPTION_WINKEY_IGNORE_LOWERCASE      // Enable for typical K1EL Wink
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES     // trim trailing spaces from 
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT     // this makes dit paddle m
#define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some n
#define OPTION_PS2_KEYBOARD_RESET   // reset the PS2 keyboard upon startup with 
#define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
Sidetone の音が小さい等々

まず、使っているのが圧電ブザーなので音の周波数は変えづらいと思い、スピーカーに変更してみた。確かに周波数は keyer_settinngs.h の initial_sidetone_freq で変更する事は出来たが音が小さいのはそのまま。ここは力業でとオリジナルの回路図にあったアンプもどきとスピーカーを載せてみた。圧電ブザーを載せているパターン(sp1)の真ん中に穴を開けて3Pのヘッダを取り付けて、それに合わせたアンプ基板を作って載せると言う代物で、こんな感じ & スピーカは両面テープで固定

回路図みたいな物

スピーカを両面テープで固定 & アンプ基板の様子
液晶 輝度調整VRの位置変更
スピーカとアンプ基板を載せた状態
完成
今回 作業のポイントは
1. スピーカは28mm程度の物が必要 秋月電子さんで言うとこれ
秋月電子さん スピーカのURL
2. sp1 のランド真ん中が+5V となるのでショートに注意
3. 基板の配線が見えない様にフィルムを貼ると見栄えが良い
4. 液晶 輝度調整VRは写真の位置に取り付ける(アンプ基板と干渉しない様に)

結果として、適度な音量&好きな周波数で聞こえる為、打鍵していて気持ちが良い。手間を掛ける値打ちは有ると思うが如何?

キーボードを付けてみる

折角キーボードインターフェイスが付いているので試してみた。流石にPS2インターフェイスのキーボードは手持ちが無いので昔使っていたPS2 USB 変換器を使って繋いでみた所、無事動作する事が分かった。最初は「エレキーにキーボードは要らん」と思っていたが、いざ繋がるとなると色々と利用出来そうだ。他のOMも書いておられたが、例えばメモリの登録など便利かと思う。

パチモンのキーボードを接続した状態

総括

これで一通りの動作確認が出来た事になると思う。CPUで言うとUNOでも十分使えると思うので、UNOをお持ちの方は試してみるのも良いと思うし、「今後のバージョンアップに対応を」と思われる方はMega2560等のCPU:領府基板に接続する物 を使用されれば良いと思う。それと、キーボードが使える事は結構大きな特長になっているのではないか? 変換コネクタは必要であるがアマゾン等で安く入手出来るので試して見るのも楽しい。

色々と書いてきたが、K3NG CW Keyer 一件落着とするか。

K3NG CW Keyer を作る:ソフトウェア編 その弐

その壱の纏め
  • IDEは2.3.2を使用する
  • スケッチはK3NG専用ディレクトリに置く
  • libraries にはK3NG関連の物しか置かない
  • 1602液晶I2Cコンバータのアドレスを確認する
共通定義ファイルの修正

K3NGは幾つかの定義ファイルが有り、機能を拡張したりハードウェアの違いによる修正を行ったりする事が出来る。ここではCPUの違いによらない修正を進めて行く。

key_settings.h の修正(変更箇所のみ)
// #define initial_speed_wpm 26    // "factory default" keyer speed setting  
#define initial_speed_wpm 12        // "factory default" keyer speed setting  → 初期のスピードを少し遅く

// #define initial_sidetone_freq 600   // "factory default" sidetone frequency setting  
#define initial_sidetone_freq 2000    // "factory default" sidetone frequency setting  → 圧電ブザーに対する周波数

// #define initial_pot_wpm_low_value 13      // Potentiometer WPM fully CCW  
/// #define initial_pot_wpm_high_value 35  // Potentiometer WPM fully CW  
#define initial_pot_wpm_low_value 5       // Potentiometer WPM fully CCW  
#define initial_pot_wpm_high_value 30   // Potentiometer WPM fully CW  

//#define lcd_i2c_address_ydv1_lcd 0x27    // I2C address of display for FEATURE_LCD_YDv1
#define lcd_i2c_address_ydv1_lcd 0x3f       // I2C address of display for FEATURE_LCD_YDv1

#ifdef FEATURE_BUTTONS  
//  #define analog_buttons_number_of_buttons 4  // includes the command button (command button + 3 memory buttons = 4)  
  #define analog_buttons_number_of_buttons 5  // includes the command button (command button + 3 memory buttons = 4)  
  #define analog_buttons_r1 10  
  #define analog_buttons_r2 1   → メモリの数を3〜4に変更
#endif    

// #define potentiometer_always_on 0  
#define potentiometer_always_on 1   → VRによる速度調整を電源ONから可能にする
key_pin_settings.h の修正(変更箇所のみ)
// #define tx_key_line_1 11     // (high = key down/tx on)  
// #define tx_key_line_2 12  
#define tx_key_line_1 6        // (high = key down/tx on)  
#define tx_key_line_2 7    → 送信出力先変更

// #define cw_decoder_pin 0   // This is for use with external decoding hardware  
#define cw_decoder_pin 2      // This is for use with external decoding hardware  
1602 液晶表示器用ライブラリ

JH1LHVさんがHPで書かれている通り、オリジナルのスケッチをそのままコンパイルするとエラーがでる。この1602に対するライブラリとしては "LiquidCrystal_I2C" が有名で私も以前から使っている。しかしK3NGスケッチと共にコンパイルするとエラーになる為、LHVさんのHPに掲載されている "NewliquidCrystal" を使った所コンパイルに成功した。

CPUの種類で変わる定義ファイル keyer_features_and_options.h

この定義ファイルはkeyerに持たせる機能を色々選択出来る。全ての機能が実装出来るかどうかは分からないが(使用するCPUによると思う)少なくても機能を絞ればUNOでも実装出来た。UNO用とMega用のファイル(有効化した部分だけ)を紹介する

// Arduino UNO 用 keyer_features_and_optiopns.h の内容

// compile time features and options - comment or uncomment to add or delete features
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior

#define FEATURE_BUTTONS
#define FEATURE_COMMAND_MODE
// #define FEATURE_SIDETONE_SWITCH   // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h). 
#define FEATURE_SERIAL_HELP
#define FEATURE_DEAD_OP_WATCHDOG
#define FEATURE_LCD_YDv1                // YourDuino I2C LCD display with old LCM 1602 V1 ic
#define FEATURE_SLEEP   // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
#define FEATURE_STRAIGHT_KEY
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
// Arduino Mega 2560, pro用 keyer_features_and_optiopns.h の内容
// compile time features and options - comment or uncomment to add or delete features
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior

#define FEATURE_BUTTONS
#define FEATURE_COMMAND_MODE
#define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
#define FEATURE_MEMORIES     // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
#define FEATURE_MEMORY_MACROS
#define FEATURE_WINKEY_EMULATION    // disabling Automatic Software Reset is highly recommended (see documentation)
#define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
#define FEATURE_POTENTIOMETER    // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
// #define FEATURE_SIDETONE_SWITCH   // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h). 
#define FEATURE_SERIAL_HELP
#define FEATURE_DEAD_OP_WATCHDOG
#define FEATURE_AUTOSPACE
#define FEATURE_LCD_YDv1                // YourDuino I2C LCD display with old LCM 1602 V1 ic
#define FEATURE_SLEEP                   // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
#define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION  // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE 
                                                             //    simultaneously.  This will make Winkey emulation be the default at boot up; 
                                                             //    hold command button down at boot up to activate CLI mode
#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
#define OPTION_WINKEY_STRICT_HOST_OPEN      // require an admin host open Winkey command before doing any other commands
#define OPTION_WINKEY_2_SUPPORT        // comment out to revert to Winkey version 1 emulation
#define OPTION_WINKEY_SEND_BREAKIN_STATUS_BYTE
#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
#define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET  // (Required for Win-Test to function)
#define OPTION_WINKEY_IGNORE_LOWERCASE               // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES     // trim trailing spaces from memory when programming in command mode
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT  // this makes dit paddle memory interruption a little smoother
#define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
総括

UNOで使える事は大きな利点で、私のUNO互換機は確か7,8年前の物。こう言った手持ちの部品で手軽に高性能な Keyer が楽しめるのは良いと思う(良い意味で遊べる)
また、K3NG 自体が結構な頻度でバージョンアップされているのでそれらの新機能が楽しめる事も嬉しい。今回領府頂いた基板に付いては満足していて特徴としては
1. Arduino のシールドととして使えるので手持ちのCPUで取りあえず試せる
2. 領府品のCPU接続ボードにMega-pro CPU (Ali で1300円位)を載せればほぼフルで機能が実装出来る
3. 基板としての完成度が高い
こんな感じかな。本来はこんな事やってないで、CW実戦訓練と On Air すれば良いのに、どうしても物作りとか開発に目が行ってしまうのは病気?なのだと思う。まあ、楽しければ良いのでこれはこれで良しとする。さあ、後はケーシングなのだが ”ケースにいれた編” の実現はどうなる??

追記
  • 2024/03/14 keyer_features_and_options の内容を一部修正しました

K3NG CW Keyer を作る:ソフトウェア編 その壱

ハードウェア編の纏め

組み上がった状態がこちら。

完成した状態
製作の纏めとして、
1. 入手困難部品は無く、手持ち部品でも製作可能。ちょっと「持ってないなあ」的なMIDIコネクタは、キーボードを使わなければ無くても良い。
2. CPU基板は下記写真の、Arduino UNO , Arduino Mega 2560 等の基板が有れば使用可能だが、UNOを使う場合には実装出来ない機能がある。(メモリ容量が少ない)
3. 2,の場合、供給電圧に寄って液晶のコントラストが変化するので要注意(コントラスト調整VRを外付けすると良い)
Arduino UNO 互換ボード(aitendo製:懐かし)
Mega 2560 CPU (何時、何処で買ったか覚えていない)
今回は領府頂いたCPU基板、UNO、Megaで動作検証を実施した。

開発環境

Arduino はその昔、お家騒動じゃないけど2つの団体がそれぞれに開発環境を作っていた事があって、IDEのバージョンに加えて何方を使う?問題で苦労した覚えがある。久々にIDEのDWページを見たら、団体は1つになった様でこれは幸い。最新のバージョンが 2.3.2 結論から言うとK3NG Keyに関してはこのバージョンで使用可能であった。まあ、最初は怖いので前のバージョン 1.8.16 を使ってみたのが(当然これもOK)折角なので検証を含めて最新バージョンを使ってみた。1.8.16 は旧来のIDEとUIがほとんど同じなので違和感が無いが、2.3.2 は別物とは言わないが 結構変わっている。好みもあるがこれからは2系になると思うので慣れた方が良いかも。昔も有ったのだが、スケッチによって動作するIDEのバージョンが特定される物もあるので、IDEのバージョンを複数稼働出来る様にしてさらにソースの保管場所をIDE毎に分けると良いかもしれない。開発環境を纏めると

  • PC macMini M1 chip 16GB memory
  • OS Sonoma 14.2.1
  • Arduino IDE 2.3.2
  • 対象Arduino CPU UNO , Mega 2560( Mega 2560 pro mini は同じ環境)
準備

K3NGやIDEのダウンロードが皆さんが書いておられるので割愛するが、IDE2.3.2を使おうと言う方で、今まで1系で開発された事のある方はちょっと注意
1. K3NGスケッチを配置するディレクトリは単独とする
2. Arduino直下のlibraries にはK3NGで使用するライブラリのみ配置する
今回、最初は今まで開発環境をおいていたディレクトリにK3NG スケッチ配置したのだが、旧のライブラリ(主に液晶関連)と同じ宣言が有ったりでコンパイルが成功しなかった為、単独にすると旨く行った。と言う経験上のアドバイス。 (下記参照)

私の Arduino ディレクトリ構成

1602液晶 & I2C コンバーター

今回は常にこの1602関連で苦労した。液晶表示を諦めれば他の手持ちCPU(例えば DUE )でも動作したのだが。最初に I2C コンバーター だが、オリジナル K3NG ではアドレスが ”0x27” と定義されている。この基板、見た目は同じだがアドレスが 0x27, 0x38 , 0x3f 等のバージョンが有るらしくまず使用する基板のアドレスを確認する必要がある。そこで使用するのが i2cscan スケッチ。ネット上に多数登録されているのでどれかを使ってアドレスを確認する。私の基板をスキャンした結果がこちら

I2C コンバータのアドレス検索結果
アドレスの変更は

Arduino  
    k3_cw_keyer_master  
        k3ng_keyer  
            keyer_settings.h   → このファイルの45行目付近を修正  

//#define lcd_i2c_address_ydv1_lcd 0x27    // I2C address of display  for FEATURE_LCD_YDv1
#define lcd_i2c_address_ydv1_lcd 0x3f       // I2C address of display  for FEATURE_LCD_YDv1  

こんな感じで修正して保存する。少し長くなったのでその弐へ続く。