C-BOARD (DSP-Board) for UV-K5(改造版)の製作
KD8CECファームウェアやFirmware-IJVはCW, FT8などの多くの機能を有していますが,実際に使おうと思うとインターフェースを作る必要があります.”Ham Radio All-in-one-Cable; AIOC ”https://github.com/skuep/AIOC は市販品もあるのでこれを購入することも可能です.また,この基板を発注して作製しても良いでしょう.ここでは,”C-BOARD (DSP-Board) for UV-K5”を少し改造して製作し,別のファームウェアを作って”AIOC”代わりの通信インターフェイスにもすることを目論みました.
KD8CECのファームウェア用インターフェースの製作
FT8はKD8CECのファームウェアver. 0.3で送受信がサポートされています.”AIOC”が使えますが,KD8CECが開発している”C-BOARD (DSP-Board) for UV-K5”を製作し,ファームウェアを作れば”AIOC”代わりの通信インターフェイスにもできそうです.
”C-BOARD (DSP-Board) for UV-K5”については,最近のOrganisasi Amatir Radio Indonesia (ORARI) (Indonesian Amateur Radio Organization)における”DIY APRS Tracker menggunakan HT UV-K5/K6”なる記事https://orari.or.id/diy-aprs-tracker-menggunakan-ht-uv-k5-k6/でも,紹介されており,KD8CECの作ったファームウェアもダウンロードできるようになっています.
Firmware-IJV用インターフェースの製作
Firmware-IJVでは,DSB送受信がサポートされています.これにも”AIOC”が使用可能です.”C-BOARD (DSP-Board) for UV-K5”を改造し,PCのスピーカー出力をUV-K5のマイク入力に接続する回路を追加すれば,”AIOC”もどきとして使えそうです.”AIOC”はAndroidスマートフォンでFT8CNを使う際に少し問題になります(aioc-utilを使って設定変更を行えば使えそうですが).Androidでは1つのデバイスの場合,USBオーディオ使用中はUSBシリアルが自動認識されないため送受信の切替えに使えません.VOXが使えれば問題ないのですが,残念なことにUV-K5のVOXはスケルチが開いていると作動しません.”C-BOARD (DSP-Board) for UV-K5”を改造して受信の切替えをボードから行うようにプログラミングすれば,FT8CNも使えそうです.
”C-BOARD (DSP-Board) for UV-K5”(改造版)の製作
”C-BOARD (DSP-Board) for UV-K5”を作る上で,上記の機能を追加するために少しだけ回路を追加しました.RP2040のADC用のバイアス印加についてはオリジナルでは,ダイオードを使っていますが,今回は単純に抵抗による電圧分割にしました.回路図は以下の通りです.KD8CECファームウェアで使用する場合にはマイクへの入力用LPF(R4, R5, R6, R7, C2, C3, C4)は使用しませんので部品の取り付けは不要です.また,KD8CECファームウェアでCWのPCによる運用をしない場合にはR3は不要です.GPSが不要の場合はGP-02-Kit モジュールを取り付けなくても問題ありません.
まず,3.5mmジャックと2.5mmジャックの取り付け方法を少し検討しました.KD8CECは銅基板の片面にパターンを作ってジャックを取り付けています.また,”AIOC”では基板のサイドをうまく使っています.今回は,両方のヴァージョンを作って見ました.
使用部品:RP2040 Zero 1個,GP-02-Kit モジュール 1個(必要ならば),3.5mm 3Pole オーディオジャック 1個,2.5mm 3Pole オーディオジャック 1個,積層コンデンサー1uF 1個,抵抗 10kΩ 2個(オリジナルでは1N4148 2個),抵抗 51Ω程度 1個(外部スピーカー接続用)
追加部品1(改造ファームウェアでのモード切り替え用):タクトスイッチ 1個
追加部品2(KD8CECでのCW用):抵抗 6.2kΩ 1個(R3)
追加部品3(Firmware-IJVでのマイク入力用LPF):積層コンデンサー0.1uF 2個(C2,C3),1uF 1個(C4),抵抗 1kΩ 2個(R4,R5,R6),抵抗 22Ω 2個(R7)
今回作成した改造版は,KD8CECの”C-BOARD (DSP-Board) for UV-K5”のオリジナルファームウェアで使用することも可能です.
KD8CECの”C-BOARD (DSP-Board) for UV-K5”に似た構造のもの
回路図は上に示したものです.JLCPCB用ガーバーファイルなどはgithubにあります.
①まず,基板にオーディオジャックをハンダ付けしました.この時,UV-K5にオーディオジャックを差し込んでおいて,その上に基板を差し込んでつけて位置を確認し,ピンを折り曲げた後,そのままハンダ付けしました.次に抵抗器を取り付けました.さらにコンデンサーを取り付けた後,RP2040 Zeroを取り付けました.このとき,後側のGPIO-9からGPIO-13ピンにはピンを付けません.必要ならばタクトスイッチを取り付けます.PCによるCWキーイングを行わない場合は6.2kΩ抵抗は不要です.また,Firmware-IJVで使用する予定の無い場合は,マイクロフォン入力用の抵抗4個とコンデンサー3個も必要ありません.
![]() |
| RP2040 Zero取付済み(プロトタイプ(R6,R7無),上から) |
![]() |
| オーディオジャック側(プロトタイプ) |
②GP-02-Kit モジュールの取り付け:必要であれば上記の配線図をもとにGP-02-Kit モジュールを取り付けます.今回は,L字型ピンヘッダーを使用しています.まずは5ピンL字型ピンヘッダーの曲がっている部分をGP-02-Kit モジュールにハンダ付します.この時,GP-02-Kit モジュールの”N/F”端子にはピンを付けません.次にピンをRP2040 Zeroの後側のGPIO-9からGPIO-13ピンの穴を通して,基板に差し込み,裏からハンダ付します.RP2040 ZeroのGPIO-13ピンだけはハンダ付けします.
![]() |
| L字型ピンヘッダーを取り付けたGP-02-Kit モジュール |
![]() |
| C-BOARD (DSP-Board) for UV-K5改(14番ピンに注目) |
④”C-BOARD (DSP-Board) for UV-K5”として使いたい場合,ファームウェアはhttps://orari.or.id/diy-aprs-tracker-menggunakan-ht-uv-k5-k6/ の記事中からダウンロードできます.xxx.uf2ファイルのRP2040への書き込み方法は,raspberry pi zeroの使い方でweb検索すれば出てくるでしょう.
⑤スタンドアロンで使用する場合はVcc用のジャンパーバッドにハンダを盛ってショートさせて,UV-K5から給電できるようにしておいてください.UV-K5のオーディオジャックへの電源出力容量は小さく,スタンドアロンで使用する場合に電源容量不足でRP2040 Zeroがうまく作動しないことがあります.この場合にはhttp://www.hamskey.com/2024/05/introducing-uv-k5-version-03q-stable.htmlあるいはhttps://orari.or.id/diy-aprs-tracker-menggunakan-ht-uv-k5-k6/を参照して,UV-K5本体の改造が必要です.スタンドアロンで使用する予定のない場合は,ジャンパーをオープンのままで使用してください.
⑥C2,C3およびC4そして抵抗(R4,R5)はFirmware-IJVでのマイク入力用LPFです.カットオフ周波数はおおむね3kHz程度です.抵抗(R6,R7)は音量調整用です.PWMで音響信号を出すために使用します.
⑦送信時に電波の回り込みで作動が不安定になることがあります.フェライトコアなどで対策をとることが必要になるかもしれません.
![]() | ||
| UV-K5に取り付けた様子(側面から) |
”AIOC”に似た構造のもの
基本的に回路は同じですが,GPS取り付け用のピンを別にしています.
①まず,オーディオジャックをハンダ付けしました.この時,オーディオジャックをUV-K5に差し込んでおいて,その上に基板をつけて位置を確認し,その状態のままハンダ付けしました.次に抵抗器を取り付けました.さらに,コンデンサーを取り付けた後,RP2040 Zeroを取り付けました.必要ならばタクトスイッチを取り付けます.KD8CECでPCによるCWキーイングを行わない場合は6.2kΩ抵抗は不要です.また,Firmware-IJVで使用する予定の無い場合は,マイクロフォン入力用の抵抗3個とコンデンサー3個も必要ありません.
![]() | ||
| 裏側(プロトタイプ(R6,R7無),GPS未装着) |
![]() |
| 裏側(GPS装着済み) |
③から⑦は上記のものと同じです.
![]() |
| UV-K5に取り付けた様子(正面から) |
![]() |
| UV-K5に取り付けた様子(側面から) |
KD8CECファームウェア用シリアル通信用インターフェイスとしての使用
このボードを使用して通信用のファームウェアを入れれば,通信ケーブルとして使用し,PCの”WSJT-X for UV-K5”と”DigManager”を使ってFT8通信を行うことができます.”C-BOARD (DSP-Board) for UV-K5”として作動させている時には,UV-K5のスピーカー出力をRP2040のADCに接続して音声受信し,そのデータをRP2040を使ってFT8信号としてデコードしています.通信ケーブルとして使用する場合はもっと単純で,ADCでデジタル化した音声信号をそのままUSB AudioでPCに送れば良いだけです.”AIOC”では,これに加えてPCから受け取った音声信号をDACによってアナログ信号にしてマイク端子に出力しています.RP2040でもPWMを使用してアナログ出力も可能ですが,KD8CECファームウェアでは必要ありません.一方で,せっかくGPSも付けられるので,PCからもGPSが使えるようにしました.KD8CECのファームウェア0.3vでは,DIGモードをONにすると3.5mmオーディオジャックの根本のピンはシリアル通信用になりますが,DIGモードをOFFにした場合,このピンは基本的にはPTT用に使われており,CWモードでは,このピンの電圧を検出して外部キーイングを行なっています.そのため,UV-K5をストレートキー使用のCWモードにしてPCから信号を送って所定の電圧をかければ.CWキーイングが可能です.
これら全ての機能を1発で実現するにはUSBシリアルポート3個(UV-K5とのUSB-UARTブリッジ,GP-02-KitとのUSB-UARTブリッジ,シリアルポートを使ったCWキーング)とUSB Audio(Audio Source)が必要です.Arduino ide開発環境でArduino-picoをボードマネジャーとして使用して簡便に開発しようと考えた場合,現時点(November 2025)ではいくつかの制限がありますので,FT8用モードとリモートCW用モードを切り替えて使うことにしました.詳細は,githubを参照していただくとして,現状では以下のようにしています.
①KD8CECの”C-BOARD (DSP-Board) for UV-K5”のファームウェアとは独立です.一枚のボードで両方の機能を実現したい場合には,その都度それぞれのuf2ファイルを書き込んで使用します.2つを統合する方法も有るようなのですが,現時点では出来ていません.
②今回の通信用ファームウェアにはFT8用モードとリモートCW用モードがあり,タクトスイッチで切り替えています.タクトスイッチを押していると0.5s毎にモード設定を示すLEDの色が代わり,希望モードになったことろで,タクトスイッチをはなすと,リセットがかかり,そのモードに変わります.青がFT8用モード,緑がリモートCW用モードです.
③FT8用モードでは,USBシリアル通信2ポート(UV-K5とのシリアル通信, GPSとのシリアル通信)とUSB Audioを使っています.PCのデバイスマネジャーには,2つのcomポートとマイクロフォン,ヘッドホンが追加されます.comポート番号の小さい方は,UV-K5との通信用で,大きい方はGPSとの通信用になっていると思います.WSJT-Xのオーディオ設定で入出力には現れたマイクロフォンとヘッドホンを設定してください.ただ,ヘッドホン出力については,ボードは何もしません.UV-K5側はDIGモードONで,PCではDigiManagerが作動しているのを確認してください.GPSが衛星からの信号を受信して完全使用可能になると,1s毎にLEDが緑に変わります.
④リモートCW用モードでは,USBシリアル通信1ポート(CWキーイング用)とUSB Audioを使っています.このポートの"DTR"信号をCWキーイングに使用します.FLDIGやDigitalSoundCWなどを使用する場合,アプリ内でこの設定が必要です.ちなみに,0.3vcでの外部キー操作の場合,最初の操作で送信モードに切り替わり,それ以降の入力が符号として送信されます.外部キーからの入力がなくなると,しばらくして受信モードに切り替わります.このため,1セットの送信の最初に”E"か”T"のダミー信号送信を行うことが必要です.また,この時,UV-K5側はDIGモードOFFになっている必要があります,
⑤今回のボードの回路図との比較から見ても自明ですが,オリジナルの”C-BOARD (DSP-Board) for UV-K5”でも,このファームウェアを書き込めばインターフェイスとして使用でき,PCでのFT8通信が可能です.CWキーイングモードを使いたい場合,このボードの回路図のようにGPIO-3ピンとGPIO-0ピンを6.2kΩ程度の抵抗で繋ぐとキーイングできます(上記の今回のボードのR3に対応).ただ,個体差もあるようでこの抵抗値は調整する必要があるかも知れません.また,GPIO-8ピンを一時的にGNDに繋げば,モードを切り替えることが可能です.
⑥KD8CECの0.3vでは日本のFT8周波数430.510MHzはサポートされていません(送信はしますが,デコードできる信号ではありません)ので,ご注意ください.
Firmware-IJVファームウェア用シリアル通信用インターフェイスとしての使用
Firmware-IJVでは,DSB送受信がサポートされています.実際にWSJT-XなどでFT8信号をマイク入力すると,SSB送信機の場合とは異なりUSB側とLSB側の両方に信号が現れます.USB側を受信すれば通常のFT8信号としてデコードできます.このため,Firmware-IJVでFT8をサポートするにはマイクとスピーカーの両方をUSBオーディオでサポートする必要があります.またAndroidでFT8CNで使おうとすると,USBオーディオ使用中はUSBシリアルを自動認識しないのでPTTスイッチを制御する必要があります.と言う訳で以下のようなプログラムを作成しました.
詳細は,githubも参照してください.
Firmware-IJVファームウェア用 その1(arduino-picoボードマネージャー使用)
①,②はKD8CECファームウェア用と同じです.
③FT8用モードでは,USBシリアル通信1ポート(GPSとのシリアル通信)とUSB Audioを使っています.USB Audioは,Phl SchatzmannがUSB Audio対応させたTinyUSBスタックをWindowsでも作動するように少し改変して使っています.PCのデバイスマネジャーには,1つのcomポートとマイクロフォン,ヘッドホンが追加されます.このTinyUSBスタックを使用して見たところ,受信時(UV-K5からPCへ音響通信,マイク)はうまく作動したのですが,逆にPCからUV-K5への音響通信(送信時,ヘッドホン)時には奇妙なノイズがのって信号が大きく歪みました(48kHzサンプリング時).そのため,そのままPWMで音にしてもFT8通信には使えませんでした.この歪みは1ms毎に起こっているようでした.USBでは1msごとにパケットを送って通信していますので,その切め付近で変なことが起こっているようです.私にはこの問題を根本的に修正する能力がないので,次のように回避しました(もっと高度な方法も有りそうですが...).
1.1パケット(1ms)内の信号はあまり歪んでいないようなので,それぞれのパケット内で音響信号の周波数を見積もる.(この方法だと,1000Hz以下(周期1ms以上)の信号の処理は原理的に不可能です)
2.実際には2800Hz以上の周波数でないとうまくデコードできる信号を出せませんでした.
3.上記の方法で決定した周波数のトーン(擬似サイン波音響信号)をPWMで発生させました.
4.日本で他の局と実際の交信を行うには,バンドプランの制限のためにF2Dの帯域幅を3kHz以下にする必要があります.この時,音響信号は1500Hz以下でなければダメです.
5.そこで,発生させるトーン周波数を測定した周波数から2000Hzほど低周波数側にシフトさせました.
6.つまり,PCでの音響送信周波数は2800Hz〜3500Hzに設定し,実際の送信は800Hz〜1500Hzとなります.(2800Hz未満およびに3500Hz以上に設定すると送信しません.)
7.トーン周波数の切り替えは10ms毎程度にしました.
送受信切り替えはFT8CNでも使用できるようにVOX制御にしました(Androidでは単一機器のUSBオーディオ・USBシリアル複合デバイスではUSBシリアルを自動認識しないようです).PC側から見るとVOXですが,UV-K5側から見ると送信時には外部PTTスイッチが押された形になっています(UV-K5はスケルチが開いているとVOXが作動しない.).
④リモートCW用モードでは,USBシリアル通信1ポート(CWキーイング用)とUSB Audioを使っています.このUSBシリアルポートの"DTR"信号をCWキーイングに使用します.FLDIGやDigitalSoundCWなどを使用する場合,アプリ内でこの設定が必要です.
Firmware-IJVファームウェア用 その2(ArduinoCore-mbedボードマネージャー使用)
①,②はarduino-picoボードマネージャーと同じです.
③FT8用モードでは,USBシリアル通信1ポート(GPSとのシリアル通信)とUSB Audioを使っています.PCのデバイスマネジャーには,1つのcomポートとマイクロフォン,ヘッドホンが追加されます.この場合には音響通信に関しては送受信で大きな問題は生じませんでしたので,送信時にもPCからの音響データをそのままPWMで出力しています.F2Dでの送信なので,バンドプランの遵守に注意してください.(通常のFT8通信は”狭帯域の全電波形式; A3E以外は3kHz以下”が許される周波数で運用されています.F2Dの帯域幅は音響周波数x2になりますので音響信号が1500Hz以下でなければ”狭帯域”の条件に反します.)
送受信切り替えはFT8CNでも使用できるようにVOX制御です(Androidでは単一機器のUSBオーディオ・USBシリアル複合デバイスではUSBシリアルを自動認識しないようです).PC側から見るとVOXで,UV-K5側から見ると送信時には外部PTTスイッチが押された形になっています(UV-K5はスケルチが開いているとVOXが作動しない.)
④リモートCW用モードでは,USBシリアル通信1ポート(CWキーイング用)とUSB Audioを使っています.このUSBシリアルポートの"DTR"信号をCWキーイングに使用します.FLDIGやDigitalSoundCWなどを使用する場合,アプリ内でこの設定が必要です.













コメント
コメントを投稿