SatBox Ver0.1.1c — テスト環境の準備
SatBoxは、JI1FGX/DU9が開発しているESP32-S3ベースの衛星運用コントローラーです。衛星の軌道予測、アンテナローテーター制御、無線機の周波数・モード制御などを行います。ほとんどの設定・操作はPC設定プログラムとWebブラウザーで行えるため、LCDは必須ではありません。
FacebookのAMSATグループでテスト参加を申し出てくださった皆様、ありがとうございます。現時点のファームウェアのソースとKiCad回路図・基板データを、評価・テスト用に公開します。開発中のため、不具合や改善点をご報告ください。
コメントは極力日本語と英語の両方で記述していますが、日本語のみの場合があります。
1. 対応状況と未確認事項
| 無線機・ハードウェア |
接続方法 |
状況 |
| ICOM IC-820H |
ESP32-S3のUSBホストポート → OTGアダプタ → FTDI社のUSB-RS232C変換アダプタ(FT232C IC) |
作者が動作チェックしている構成。このアダプタ構成のみをテスト対象としてサポート |
| Yaesu FT-847 |
SatBoxのRS232Cポート → 無線機のCATポート |
作者が動作チェックしている構成 |
| ICOM IC-9700 |
SatBoxのRS232Cポート → CT-17または相当品 → 無線機のREMOTE端子 |
コード実装済み。実機テストは未実施 |
| IC-9700のUSB/FTDI接続 |
USB接続 |
未実装。この組合せを選択してもCAT制御は開始しません |
| 公開するKiCad基板 |
回路図・PCBデータ |
JLCPCBへ未発注。基板製作・実装後の動作確認は行っていません |
IC-9700のコードには不具合がある可能性があります。動作がおかしい場合は、再現手順と現象をJI1FGX/DU9へお知らせください。模擬テストの成功は、実機での正常動作を保証するものではありません。また、試作機の動作と公開PCBの動作確認は別です。
設定画面にある既存USB接続の表示は USB (FT232B) です。本テストのIC-820H用サポート対象は上記FT232C構成であり、この画面表示をもって他のFTDI IC、CH340、CP210x、IC-9700本体のUSB接続などへの対応を示すものではありません。
2. 用意するもの
| 部品・機器 |
用途 |
| ESP32-S3ボード、適切な電源、書込み・通信対応USBケーブル |
共通。回路図のGPIOとUSBホスト接続が使用できるボード |
| バックアップ電池付きDS3231 RTCモジュール |
標準テスト構成で必要。ネットワーク時刻が取得できない場合の時刻保持 |
| PC、2.4GHz Wi-Fi環境 |
初期設定。同一LAN上のブラウザーでWeb操作 |
| MAX3232などの3.3Vロジック対応RS232Cレベル変換モジュール |
FT-847・IC-9700のRS232C接続 |
| FTDI FT232CのUSB-RS232C変換アダプタとOTGアダプタ |
IC-820HのUSB接続 |
| CT-17または相当品のCI-Vインターフェース |
IC-9700のRS232CとREMOTE端子の間に必要 |
| ADS1115モジュール |
ローテーターのAZ・ELアナログ角度信号の取込み |
| ULN2803Aドライバー回路 |
ローテーター制御出力 |
| 外部リレーインターフェース |
ACモーター式ローテーターの制御 |
| ST7796S 3.5インチLCD、必要に応じFT6336タッチ |
任意。ローカル画面・タッチ操作 |
LCDパネルがなくてもテストできます。 ESP32-S3、RTC、PC、Wi-Fiから準備し、無線機、ローテーター回路の順に追加できます。ADS1115やモーター出力回路は、それぞれのローテーターテストを行う場合に必要です。LCDを取り付けない場合も、コンパイル時のTFTライブラリーは必要です。
3. 配線
KiCad回路図と Pin.h を参照してください。PCBは未検証のため、使用するモジュールの端子配列、電源、コネクターの向き、信号電圧を実物と照合してください。
RS232Cポートと無線機
FT-847とIC-9700はUART1の同じGPIOを、機種選択により排他的に使用します。
| ESP32-S3 |
接続先 |
| GPIO15/RX |
MAX3232のロジック側受信出力(RO)。無線機・インターフェースからの受信 |
| GPIO16/TX |
MAX3232のロジック側送信入力(DI)。無線機・インターフェースへの送信 |
| GND |
レベル変換回路のロジック側GND。信号GNDの配線は回路図に従う |
RS232Cレベル変換モジュールの接続が必要です。ESP32-S3のGPIOにRS232C電圧を直接接続しないでください。 外部ポートにはモジュールのRS232C側を使用し、ケーブルは無線機・インターフェースの端子配列に合わせてください。
- FT-847: RS232Cポートから無線機のCATポートへ接続します。UART1は 8N2。通信速度は両側を一致させます(4800/9600/57600bps)。
- IC-9700: RS232Cポートから CT-17または相当品 を介して REMOTE端子 へ接続します。UART1は 8N1。CI-V通信速度・アドレスを両側で合わせてください。このREMOTE/CT-17経路では 4800/9600/19200bps を使用します。CI-Vアドレスの工場設定は A2h です。設定画面に表示される高速側の値は、このREMOTE接続用ではありません。
- GPIO15/16は
Pin.h で将来のSA818 UHF用にも割り当てられています。同時に競合するUART機器を接続しないでください。
IC-820HのUSB接続
ESP32-S3の USBホスト/OTGポート に、OTGアダプタを介してFTDI FT232CのUSB-RS232C変換アダプタを接続します。無線機側は回路図と動作確認済みのIC-820H構成に従って配線してください。USB-TTL変換アダプタはUSB-RS232C変換アダプタの代用品にはなりません。
無線機用USBホスト接続とPC設定用シリアル接続は別です。ファームウェアは GPIO21 でUSB VBUS電源を制御するため、回路図のVBUS電源スイッチ回路も必要です。GPIO21からUSB電源を直接供給するものではありません。FTDI接続中はホストポートを無線機用に使い、ボードに独立したUSB-UART書込みポートがある場合はそちらをPC設定用に使用してください。
RTC・アナログ角度入力・制御出力
| 信号 |
現在の割当て |
| 共通I2C SDA/SCL |
GPIO1/GPIO2 |
| RTC |
共通I2CバスにDS3231 |
| 角度入力ADC |
ADS1115、I2Cアドレス 0x48 |
| 仰角/方位のアナログ入力 |
ADS1115 A0=EL、A1=AZ |
| AZ右回転/左回転出力 |
GPIO47/GPIO45 |
| EL上昇/下降出力 |
GPIO35/GPIO36 |
角度入力には回路図の分圧・入力回路を使用してください。現在のファームウェアは15kΩ/22kΩの分圧を前提としています。電圧が不明なローテーターの角度信号をADS1115へ直接入れず、使用電源に対するADC入力許容範囲内か確認してください。
制御出力には ULN2803A のドライバー回路が必要です。ESP32のGPIOからモーターを直接駆動しないでください。ACモーター式ローテーターには、別途リレーインターフェースが必要です。
モーター制御テストの前にWebのCalibration画面でAZ・ELを校正し、短時間の手動操作で方向を確認してください。
LCDを取り付ける場合
対象は LCD ST7796S、3.5インチパネル です。SPI配線はCS=10、DC=9、RST=14、MOSI=11、MISO=13、SCK=12、バックライト制御=8です。FT6336タッチは共通I2Cバス、RST=3、INT=4を使用します。パネル電源とコネクター端子番号は回路図で確認してください。LCDなしのテストではパネルを未接続にでき、専用ファームウェアへの変更は不要です。
4. ファームウェアのビルド・書込み
- スケッチフォルダー名を SatBox_Ver0.1.1c-betaとし、Arduino IDEで
SatBox_Ver0.1.1c-beta.ino を開きます。ルートの .cpp/.h と tft_setup.h も同じ場所に保持してください。.inoだけではプログラム全体になりません。
- EspressifのESP32ボードパッケージを導入し、実際に使用するESP32-S3ボードを選択します。Flash・PSRAMは実物に合わせ、アプリケーション容量とファイルシステム領域のあるパーティション構成を使用してください。作業記録では ESP32-S3/Huge APP、Arduino-ESP32 3.3.8 でビルドを試行していますが、現リビジョン全体のビルド成功を示すものではありません。
- 下表のライブラリーと依存ライブラリーを導入します。バージョンは作者のPCに存在する環境を示し、全組合せの動作保証ではありません。
- ST7796S設定の
tft_setup.h を保持します。TFT_eSPI 2.5.43は、このスケッチ内設定ファイルを読み込む仕組みに対応しています。LCD未接続でも必要です。
- ボードの書込みポートからコンパイル・書込みを行います。FTDI使用時はネイティブUSBを ホスト に使うため、同じポートでPC向けUSB CDC設定通信を同時に行える前提にしないでください。独立したUSB-UARTポートがある場合はそちらを使用します。
- シリアルモニターを 115200bps で開いて起動を確認し、PC設定プログラムを使う前にモニターを閉じてください。
Arduino IDEの「ツール」設定
提示した設定画面の4MB構成では、次の値を使用してください。
| ツールの項目 |
設定値 |
| Partition Scheme |
Huge APP (3MB No OTA/1MB SPIFFS) |
| Flash Mode |
QIO 80MHz |
| Flash Size |
4MB (32Mb) |
パーティションのメニュー名には「SPIFFS」とありますが、本ファームウェアはファイルシステム領域にLittleFSを使用します。選択する項目は上記のままです。この構成はアプリケーションに3MBを割り当て、OTA更新用の領域はありません。Flash設定は作者と同じハードウェア構成で使用してください。
| Arduinoライブラリー |
作者PCのバージョン |
| TFT_eSPI |
2.5.43 |
| RTClib |
2.1.4 |
| Adafruit ADS1X15 |
2.6.2 |
| Adafruit BusIO |
1.17.4 |
SparkFun SGP4 Arduino Library(Sgp4.h) |
1.0.4 |
| ReadyMail |
0.4.2 |
Wi-Fi、WebServer、Wire、LittleFS、USBホスト関連ヘッダーはESP32環境に含まれます。FTDI通信には本プロジェクトの FTDI.cpp/FTDI.h を使い、別の汎用FTDI Arduinoライブラリーは使用していません。
ビルド状況: IC-9700実装記録では、ESP32全体のビルド試行はWindowsの Illegal System DLL Relocation によりコンパイラー起動段階で停止しています。記録上のホスト模擬テスト合格は、ファームウェア全体のビルドや実機確認の代わりにはなりません。ビルドに失敗した場合は、ボード・コア・ライブラリーのバージョンとエラー全文をご連絡ください。
5. LCDなしでの初期設定
Tkinterが使える Python 3.10以降 とpyserialを用意します。プロジェクトの software フォルダーで次を実行してください。
python -m pip install pyserial
python SatBox_Settings.py
ローカルの settings.ini を同フォルダーで扱うため、software を作業フォルダーにして起動してください。

- PCとESP32-S3の書込み・設定用シリアルポートを接続します。Arduinoシリアルモニターなど、同じポートを使うプログラムは閉じます。
- COMポートを選択し、必要なら Refresh を押してから LOAD で本体設定を読み込みます。
- Wi-Fi SSID・パスワード、ホスト名、局名、緯度・経度・標高、タイムゾーン、夏時間を自分の環境に合わせます。初回はDHCPを使用すると準備しやすくなります。
- SAVE を押し、再接続・起動処理の完了を待ちます。再度 LOAD して Current IP を確認してください。必要に応じ本体を再起動して確認します。PC設定用通信は 115200bps で、無線機の通信速度とは別です。
- 同一LAN上のPC・スマートフォンのブラウザーで
http://<Current IP>/ を開きます。初期ホスト名でmDNSが利用できる環境では http://satbox.local/ も使えます。
- Webの Setup メニューから残りの設定を行います。IC-9700の機種・COM(RS-232C)接続・CI-V通信速度・アドレスは、Webの無線機設定画面またはPC設定プログラム(SatBox_Settings.py)の無線機タブで設定できます。 IC-9700はCOM接続を選択し、CT-17または相当品を介してREMOTE端子へ接続してください。USB/FTDI接続は未対応です。
| Webのパス |
用途 |
/ |
衛星表示・メイン操作 |
/setup |
設定メニュー・言語選択 |
/network、/station |
ネットワーク・局情報 |
/radio |
機種・接続方式・速度・CI-Vアドレス。無線機設定保存後は再起動 |
/satsetup、/tledownload |
衛星選択・TLE更新 |
/dopplersetup |
衛星の周波数・モード情報。LittleFSの /doppler.csv に保存 |
/offsetsetup |
無線機・衛星ごとのOFFSET |
/calibration |
ローテーター角度校正 |
/control |
追尾・制御・通知設定 |
| /settings-restore |
設定を一括復元 |

軌道予測の評価前に、現在日時と観測地点を確認してください。初回のTLE取得とNTP時刻同期にはインターネット接続を用意し、TLEが利用可能になったことを確認します。その後のオフラインテストではRTCの時刻と保存済みTLEを使用できます。対象衛星の周波数・モード情報も設定してください。
PC設定プログラムとWebでほとんどの操作ができるため、LCD・タッチ・ローカルエンコーダーは必須ではありません。PCログサーバーは別機能で、基本的な無線機・ローテーターテストには不要です。
6. 推奨するテスト順序
- モーター出力を未接続にして起動し、PCのLOAD/SAVE、Wi-Fi、Webアクセス、時刻、TLEを確認します。
/radio で機種と通信条件を設定し、無線機側も合わせてSatBoxを再起動します。IC-9700は COM(RS-232C) を選択し、CT-17からREMOTE端子へ接続します。USBは選択しないでください。
- 衛星プリセットの周波数・モード、送受信バンドの割当て、受信マニュアル操作、ドプラー更新、無線機の電源OFF/ON後の復帰を確認します。送信を伴うテストの前に、受信・制御の確認から進めてください。
- IC-9700のサテライトモードでは、本体 MAIN=受信、SUB=送信 です。意図した側の周波数が変わるか、反対側が不用意に動かないかを確認してください。今回の対象は144/430MHz帯の衛星運用で、1200MHz、DV/DD、メモリー、CAT PTT、電源ON/OFF制御は対象外です。
- ADS1115の角度入力を確認・校正した後、ULN2803Aと必要なモーター/リレー回路を接続し、短時間の手動操作、追尾の順に確認します。
- ユニバーサル基板などの試作配線か公開PCBか、LCDを接続したかも記録してください。
7. 不具合の連絡
不具合は、参加を申し出た AMSAT Facebookの投稿・メッセージ、または du9@ji1fgx.com で JI1FGX/DU9 へお知らせください。IC-9700は実機未テストのため、特に報告をお願いします。
次の情報があると確認が進めやすくなります。
- ファームウェアのバージョン・リビジョン、テスト日時。
- ESP32-S3のボード名、Flash/PSRAM、Arduinoコア・ライブラリーのバージョン、ビルド設定。
- 無線機の機種・ファームウェア、接続図、インターフェース・アダプタ型番とIC、通信速度、CI-Vアドレス。
- LCDの有無、RTC・ADS1115・ローテーター回路の構成。
- 衛星名、時刻、関係する周波数・モード、操作手順、期待した動作、実際の現象。
- 115200bpsのシリアルログ、画面や動画、再現性、再起動で復帰するか。
ログ・画面を送る前に、Wi-Fiやメールのパスワードなどの個人情報を取り除いてください。
8. KiCadデータについて
KiCad回路図と基板データは、レビュー・試作を目的として公開します。JLCPCBへの発注、基板製作、実装後の動作確認はまだ行っていません。 発注前に設計内容をご確認ください。ファームウェアだけでなく、回路図・基板の誤りもご連絡ください。ローテーター用リレーインターフェースはSatBox基板とは別です。
年金生活のためJLCPCBへの発注費15,000円が捻出できずにいます。開発費の為のドネーションをお待ちします。 Paypal: du9@ji1fgx.com
文書作成日:2026年11月6日。実装記録は IC9700_CI-V_実装メモ.md と 変更履歴.txt を参照してください。