ATTINY85でキーヤーを作った話

Toki Nasin
·

これは大学無線部Advent Calendarの23日目の記事です.

大遅刻です.申し訳ありません.

経緯

 2023年に部でQCX miniを購入・組立てする予定があり,それに向けてCW送受信の練習をしたいな,とかねてより考えていました.しかし,部室にあったキーヤーが動作せず,調べたところ,どうやらただの電池切れではないようだったので,その修理と並行して新たにキーヤーを自作してみることにしました.

要件定義

 今回製作するキーヤーの機能要件を以下に示します.

  • 単式・複式両方の電鍵のサポート

  • 基本的なキーヤーとしての機能(トーン&スピードの調節,パドルの反転,etc)

  • メモリー機能

  • CW送受信トレーニング機能

    事前調査

 インターネット上にはCWキーヤーの作例が数多く公開されており,マイコンを使わない単純なものからデコーダーを備えた高機能なものまで,様々な種類があります.有名なものではArduinoを用いたK3NG Keyer[i]がありますが,今回の要件と照らし合わせると,Arduinoはいささかオーバースペックであると思われました.その後も色々と調べた結果,最終的にはマイコンとしてATtiny85を用いることに決めました.理由としては,以前関数電卓を作った際に使った事があったことや,比較的安価であること等が挙げられます.また,yack[ii]というAVRマイコン向けのキーヤーユーティリティを提供するライブラリの存在も決め手となりました.

[i] https://github.com/k3ng/k3ng_cw_keyer

[ii] https://github.com/donfroula/ATTiny85_CW_Keyer

製作

ハードウェア

 今回,電子回路はユニバーサル基板上に実装しました.また,外部インターフェースとしてモード切替え用のプッシュボタン,音量調節用の半固定抵抗,入出力用の3.5mmステレオミニプラグ一対及びサイドトーン出力用の圧電サウンダを用いました.完成したキーヤーの外観を図1に示します.基板上に大量に存在する0Ω抵抗は全てジャンパー線の代わりです.また,電源としてCR2032を1個使用しています.

 ボタン一つでどう操作するんだ?,と思われるかもしれませんが,yackがそれを可能にします.ATtiny85のピン数が少ないという問題を解決するために,このキーヤーにはモードという概念が存在するのです.一例として,パドルを入れ替えることを考えましょう.まず始めに,プッシュボタンを押します.すると,キーヤーがサイドトーンに「・・― ―・・ (?)」を出力し,ノーマルモードからコマンドモードに切り替わります.その後「―・・― (X)」をコマンドとして送信することでパドルが入れ替わります.最後にもう一度プッシュボタンを押すと,キーヤーがノーマルモードに戻ります.このように,コマンドモードでは特定のアルファベットをコマンドとして入力することで様々な設定を行うことができます.また,設定が正しく受理された場合は,「・―・(R)」がサイドトーンに出力され,設定内容がEEPROMに書き込まれます.詳細は省きますが,コマンドモードを用いることで,各種設定だけでなくメッセージの記録・再生(100文字×4セット)や,コールサインの聞き取り・送信練習を行うことが可能です.

ソフトウェア

 ソフトウェアはyackに同梱されているサンプルプログラムに手を加えたものを用いました.今回はAVRライタとしてArduino Nano, AVRアップローダとしてAVRDUDE[i]を使用しました.

[i] https://www.nongnu.org/avrdude/

実際に使ってみた

 2022年度の学祭で,展示を兼ねた打電体験として実際に使ってみました(図2).結果として,動作自体に特段問題はありませんでしたが,操作方法が上手く伝わらない場面が多々ありました.今後は操作方法の簡易化やマニュアル整備に取り組む必要がありそうです.

まとめ

 本稿では,出来るだけ低価格かつ単純な仕組みで,必要十分な機能を実現することを目標にしたキーヤー製作の過程を紹介しました.今回得られた知見を活かし,今年度中により高機能なものを製作してみたいです.

@tokinasin
im tired af rn