SA818S UHF Web送信テスト
========================

スケッチ
  AS818S_test.ino

Wi-Fi / DHCP
  ESP32-S3はアクセスポイントを作らず、既存Wi-Fi LANへ接続する。
  SatBox本体が保存したWi-Fi情報をWiFi.begin()で再利用する。
  接続後、DHCPで取得したIPアドレスを115200 bpsのシリアルモニターへ表示する。

  表示例
    DHCP IP address: 192.168.1.123
    Open: http://192.168.1.123/

  mDNS対応端末では次のアドレスも使用できる。
    http://sa818s-test.local/

  保存済みWi-Fi情報で接続できない場合は、AS818S_test.ino先頭付近の
  WIFI_SSIDとWIFI_PASSWORDへ既存LANの情報を記入する。

UART配線
  SA818S 16 RXD  <- ESP32-S3 GPIO16 (SA818_UHF_TX_PIN)
  SA818S 17 TXD  -> ESP32-S3 GPIO15 (SA818_UHF_RX_PIN)
  SA818S GND     -- ESP32-S3 GND

UART信号電圧（SA818Sを5Vで給電する場合）
  SA818Sの電源電圧とUART信号電圧は別である。
  SA818Sを5Vで給電してもRXD/TXDは3.3V系なので、ESP32-S3の
  GPIO15／GPIO16と接続できる。ESP32-S3のGPIOは5V耐圧ではない。

  推奨配線
    SA818S 17 TXD  -- 1kΩ -- ESP32-S3 GPIO15（RX）
    SA818S 16 RXD  -- 1kΩ -- ESP32-S3 GPIO16（TX）
    SA818S GND     -------- ESP32-S3 GND

  1kΩ直列抵抗は必須ではないが、誤配線や電源投入順による影響を
  小さくするために入れることを推奨する。
  接続前にSA818S TXDのアイドル電圧をテスターで確認し、約3.3Vなら
  上記配線でよい。約5Vが測定された場合はGPIO15へ直接接続しない。

  SA818S TXDが5Vだった場合の分圧例
    SA818S TXD -- 10kΩ --+-- ESP32-S3 GPIO15
                          |
                         20kΩ
                          |
                         GND

  ESP32-S3 GPIO16から出力される3.3V信号はSA818S RXDへ入力できる。
  どちらの給電方法でもESP32-S3とSA818SのGNDを必ず共通にする。

PTTテスト配線（GPIO17直接接続）
  ESP32-S3 GPIO17 -- 1kΩ -- SA818S 5 PTT
  ESP32-S3 GND    -------- SA818S GND

  GPIO17はOUTPUT_OPEN_DRAINで使用する。
  WebのPTT ON : GPIO17 LOW、PTTをGNDへ接続して送信
  WebのPTT OFF: GPIO17 High-Z、PTTを開放して受信
  GPIO17を通常のOUTPUT HIGHに設定せず、PTTへHIGH電圧を出力しない。
  1kΩ直列抵抗は誤配線時の保護用であり、NPNトランジスターは使用しない。

  ESP32-S3へ接続する前に、SA818Sへ給電して開放状態のPTT端子電圧を
  テスターで確認する。3.3Vを超える場合や電圧が不明な場合は直結せず、
  NPNオープンコレクター回路を使用する。

その他の端子
  SA818S 6 PD  : モジュール仕様の通常動作HIGHへ固定する。
  SA818S 7 H/L : ESP32-S3 GPIO42へ接続する。
                  GPIO42はOUTPUT_OPEN_DRAINで使用する。
                  WebのHIGH出力: GPIO42 High-Z、H/Lオープン
                  WebのLOW出力 : GPIO42 LOW、H/LをGNDへ接続
                  GPIO42を通常のOUTPUT HIGHに設定せず、VDDへ接続しない。
  SA818S 12 ANT: 50Ωアンテナまたは50Ωダミーロードを接続する。
  SA818S 18 MIC_IN: テスト用マイク／適切なレベルの音声入力を接続する。

電源
  SA818Sは送信時に大きな電流を必要とするため、モジュール仕様に適合する
  十分な容量の別電源を使用する。ESP32-S3の3.3V端子から直接給電しない。
  ESP32-S3とSA818SのGNDは共通にする。

操作
  1. スケッチを書き込む。
  2. シリアルモニターを115200 bpsで開き、DHCP取得IPを確認する。
  3. 同じLANの端末から表示された http://IPアドレス/ を開く。
  4. 日本の430MHz帯（430.0000～440.0000 MHz）の周波数を入力して「周波数設定」を押す。
     範囲外の入力はESP32側でも拒否し、モジュールの周波数を変更しない。
  5. スケルチSPINで0～8を選ぶと、画面を再読み込みせずにSA818Sへ反映する。
     初期値は4。0はモニター動作。PTT ON中の変更は拒否する。
     周波数を変更しても選んだスケルチ値を維持する。
  6. 「HIGH出力」または「LOW出力」で送信出力を選択する。
  7. 「PTT ON」で送信、「PTT OFF」で受信へ戻す。

応答時間の確認
  起動時はAT+DMOCONNECTで接続を確認する。
  その後の周波数変更ではAT+DMOSETGROUPだけを送る。
  モジュール応答に失敗した場合、次の周波数変更で接続確認をやり直す。

  シリアルモニターの「SA818S timing ms」には次の時間を表示する。
    debug      : TXログ出力にかかった時間
    uart_queue : UART送信バッファーへコマンドを入れるのにかかった時間
    first_byte : UART送信開始から最初の応答バイトまでの時間
    reply      : UART送信開始から応答結果までの時間
  「HTTP POST /frequency ms」は周波数設定処理とWeb応答までの時間、
  「HTTP GET / total ms」は画面の再表示にかかった時間を示す。
  これらを比較すると、SA818Sの応答待ちとWeb側の遅延を切り分けられる。

起動時の状態
  PTT OFF（GPIO17 High-Z、受信）
  LOW出力（H/LをGNDへ接続）

注意
  電波法、免許、使用可能周波数、出力制限を守り、最初はダミーロードで
  短時間の試験を行うこと。
