JI1FGX/DU9 フィリピンミンダナオ島 アマチュア無線日記 IOTA OC-130
English Japanese



昨日までのアクセス
はじめに リリー日記
ミンダナオでの生活日記
26/01/08  WSJT-Xリモート運用
26/01/07   JTDXリモート運用
26/01/04  log_reciver_Ver2.6.6
25/11/16  WSJT-X自動運用Ver0.1.0
25/11/04  APRS用TNCソフト Dire Wolf_console Ver1.2
25/10/11  APRS用TNCソフトマニュアル
25/10/10  APRS用TNCソフト Dire Wolf_console
25/09/23  APRS用TNCソフト
 Dire Wolf with Hamlib
25/09/14  AutoCWType_Ver1.5.9
25/08/10  ソフトウェア一覧
25/08/18  JTDX自動運用Ver0.6.3
25/07/26  AutoCWType_Ver1.5.8
25/07/25  JTDXから1ヶ月分のADIFファイルを作るプログラムVer2.6.5
25/07/20  AutoCWType_Ver1.5.5
25/07/13  CQマシーンプログラム Ver1.5_2
25/07/12  JTDX自動運転 Ver0.5.0 英語化
25/07/10  AutoCWType_Ver1.4.2
25/07/10  JTDX自動運転 Ver0.4.4
25/07/07  CQマシーンプログラム
25/06/15  時刻合わせ Ver0.5
25/06/10  Google,DeepL翻訳API
25/06/08  AutoCWType_Ver1.4.1
25/05/03  JTDX自動運転Ver0.4.3
25/04/24  AutoCWType_Ver1.3
KENWOOD オートアンテナチューナーAT-300をYAESUの無線機で使う (2026/04/08)

AT-300_ESP32_S3.zip

ダウンロード回数: 2

YAESU無線機用 AT-300 自動アンテナチューナー制御(ESP32-S3版)
YAESU無線機で Kenwood AT-300 オートアンテナチューナーを使用するための制御システムを、ESP32-S3 を用いて開発しました。
本システムは、USB接続によるCAT制御を用いて無線機の状態を取得し、チューニングに必要な一連の動作を自動的に実行します。

■ システム概要 ESP32-S3 を USBホストとして動作させ、無線機内蔵の Silicon Labs CP2105(USB-シリアル変換)と直接通信します。
これにより、PCを介さずにスタンドアロンでCAT制御を実現しています。
主な構成は以下の通りです:
  • ESP32-S3(USB Host)
  • YAESU 無線機(FT-891 / FTDX3000 等)
  • Kenwood AT-300 アンテナチューナー
  • 外部制御信号(TS / TT / SW)
  • I2C接続 LCD(状態表示)
■ 動作シーケンス
チューニング開始から終了までの流れは以下の通りです。
  • 無線機の現在状態を取得(モード / 出力)
  • モードを AM に変更
  • 出力を低出力(例:10W)に設定
  • TXを開始(TX1)
  • TT信号を監視しながらチューニング実行
  • チューニング完了後、TX停止(TX0)
  • 元のモード・出力に復帰

    すべての処理はESP32側で自動制御され、操作はスイッチ1つで完結します。

■ 技術的特徴
  • ESP-IDFによるUSB Host実装
  • CP2105デバイスへの直接制御(ドライバ自作)
  • CATコマンドによる無線機制御
  • 状態遷移(State Machine)による安定動作
  • 無線機状態の保存・復元機能
  • TT信号によるチューニング状態検出
  • エラー処理およびリトライ機構
特に、FTDX3000のようにUSB HUBを内蔵する機種に対しても正常に動作するよう、HUB制御処理を実装しています。
■ 特記事項
  • CAT通信は同期型で実装しており、確実な状態取得を実現しています
  • チューニング時のモードはAMを使用(安定動作のため)
  • 無線機への負担を考慮し、必ず低出力でチューニングを実施
  • チューニング終了後は元の状態へ完全復帰
 
 
動作 
本システムは、PCを使用せずに無線機とアンテナチューナーを連携させることを目的とした、完全スタンドアロン型の制御装置です。
ESP32-S3によるUSB Host制御とCAT通信を組み合わせることで、コンパクトかつ実用的なソリューションを実現しました。

 
開発秘話

本システムの開発は、当初想定していたよりもはるかに困難なものでした。

最初は、手元にあった ATMEGA32U4 を使用して開発を開始しました。
しかし調査の結果、このマイコンのUSBポートはデバイスとしては動作するものの、
USBホストとしては利用できないことが判明しました。

そこで新たに ESP32-S3 を購入し、開発環境を移行することになりました。


■ Arduino IDEからESP-IDF

当初は Arduino IDE を使用してESP32-S3のプログラムを作成し、AT-300の制御部分については
比較的短時間で実装することができました。

しかし、YAESU無線機(FT-891)とのUSB接続によるCAT通信がどうしても動作せず、ここで大きな壁に突き当たります。

この問題を解決するため、Arduino環境を離れ、ESP-IDFへ移行。
C++
による低レベル制御で、USBデバイスとの直接通信に取り組むことになりました。


■ CP2105ドライバーの自作

YAESU無線機のUSBインターフェースには、Silicon Labs製の CP2105 が使用されています。
しかし、ESP32-S3用のCP2105ドライバーはGitHub上を探しても見つかりませんでした。

そこで最終的に選択したのが、Linuxカーネルのソースコードを参考にする方法です。

Linuxのドライバー(cp210x.c)を読み込み、必要な処理だけを抜き出し、ESP32-S3用に再実装しました。
この作業には約5日を要しましたが、結果としてFT-891とのCAT通信に成功しました。


■ FTDX3000と内蔵USB HUBの壁

次にFTDX3000での動作確認を行ったところ、さらに大きな問題が発生しました。

FTDX3000では、CP2105の手前にUSB HUBが内蔵されていることが判明し、
単純なデバイス接続では通信できない構造になっていました。

試行錯誤を重ねても、HUBの先にあるCP2105と通信することができず、開発は完全に行き詰まります。


■ HUBドライバーの移植

この問題を解決するため、再びLinuxカーネルに戻り、今度は hub.c を解析。
USB HUB
制御に必要な処理をESP32-S3へ移植しました。

USBの列挙、ポート制御、デバイス認識などを一つ一つ確認しながら実装を進めるという、非常に根気のいる作業でした。


諦めかけた瞬間

開発途中、何度も行き詰まり、解決の糸口が見えなくなる場面がありました。

そのたびにChatGPTから「ESP32ではなく、Raspberry Pi 3 Zero 2W を使った方が簡単ではないか」言われました。

実際、アドバイスとしてもその方向を勧められることが多く、環境を変えるべきか真剣に悩んだ時期もありました。


30日間の試行錯誤の末に

それでもESP32-S3での実現にこだわり、試行錯誤を続けた結果、
30日間に及ぶ開発の末、FTDX3000でも正常に動作するドライバーが完成しました。


振り返って

今回の開発は、

  • USBホスト制御
  • Linuxカーネルの解析
  • デバイスドライバーの移植
  • 状態機械による制御設計

といった、組み込み開発の中でも非常に深い領域に踏み込むものでした。

結果として、ESP32-S3単体でYAESU無線機とアンテナチューナーを連携させる、
完全スタンドアロンの制御システムを実現することができました。

この経験は、非常に大きな技術的財産になったと感じています。

 2026年03月17日  2026年04月08日