PWM ウェブコントロール
本ページはウェブコントロールの PWM(ESP32-S3)版専用の説明です。共通の画面、起動方法、プリセットポーズ、カメラテレオペは ウェブコントロール概要 を参照してください。
ハードウェアと書き込み
- 配線、GPIO、給電、サーボ型番は PWM 配線、GPIO、給電 を参照してください。
- ファームウェアの書き込み(ESP-IDF またはビルド済み bin)は PWM クイックスタート を参照してください。
- PC ↔ ESP32 は固定 115200 8N1。サーボ自体にボーレートはありません。
ウェブ接続
- 上部の「Driver」ドロップダウンで PWM(ESP32-S3) を選択
- Add port… をクリックし、ESP32-S3 の USB シリアルポートを選択
- Connect をクリック:ページが自動的にハンドシェイク(NOP)し、左右手の選択を送信して中間位置へ戻します
- あとはスライダー、プリセットポーズ、カメラテレオペで制御します。指の見出しには CH 1/2 …(PWM チャンネル番号)が表示されます


SCS0009 版との違い
| 項目 | SCS0009 バス版 | PWM 版 |
|---|---|---|
| シリアルボーレート | 1,000,000 | 115,200 |
| ドライバ基板 | USB バスドライバ基板 | ESP32-S3 + PWM 変換基板 |
| トルク | オン/解放が可能 | なし(ファームウェアにトルクコマンドがなく、ボタンは非表示) |
| 緊急停止 | すべてのトルクを解放 | 0xFF を送信してジェスチャーを中止。サーボは通電したまま位置を保持 |
| 速度 | 速度パラメータに対応 | 直接駆動フレームに速度パラメータはない |
| フィードバック | 位置/温度/電圧/速度の読み戻し | 読み戻しなし。ストールや脱調を検出できない |
| 左右手 | サーボ ID が異なる | 同じチャンネル群を使用し、0xF1 を送って切り替え(主にファームウェアのジェスチャーに影響。ウェブのポーズは各手のマッピングを使用) |
角度のキャリブレーション
ウェブページはポーズ値を 8 系統の 0–180° 角度へ変換します。デフォルトの式:
angle = 90 + dir × scale × ポーズ値 + offset- 各指の 1 つ目のチャンネルは
dir = -1、2 つ目のチャンネルはdir = +1 - デフォルトは
scale = 1、offset = 0で、サーボ軸の角度をそのままミラーします mirror_poseが真のときは、先に各指の 2 つのポーズ値を入れ替えます(本リポジトリでは左右手とも有効)
実機で向きが逆、または中間位置がずれている場合は、config.json の pwm.calibration を編集します:
jsonc
"pwm": {
"calibration": {
"right": {
"pointer": { "scale": 1.0, "offset_deg": [0, 0] }
}
}
}- 向きが逆:該当する指の
scaleを-1に変更 - 中間位置のずれ:
offset_degを調整(2 つのチャンネルを個別に) - 指ごとの手順:中間位置へ戻す → 1 本の指だけ動かす → 向き/中間位置を確認 →
scale/offset_degを変更 → ページを再読み込みして再試行
よくある質問
- 接続に失敗する/ESP32 が応答しない:ボーレートが 115200 であること、ESP32 の COM ポートを選んでいること、5 V/3 A の給電と共通グラウンドを確認してください。シリアルポートを開くと ESP32 がリセットされることがあり、その場合ページは自動的に NOP を再試行します
- サーボが動かない、または震える:まずサーボが 333 Hz のデジタルサーボ(PTK 7452 MG-D または同等品)で、電源容量が十分か確認してください。SG90 はファームウェアの変更が必要です
- 向きが逆:該当する指の
scaleを-1に変更 - 中間位置がずれている:該当するチャンネルの
offset_degを調整 - 「忙(ジェスチャー実行中)」と表示される:ファームウェアが内蔵ジェスチャーを実行中です。完了を待つか、緊急停止(
0xFF)をクリックしてください - サーボのスキャン:
tools/scan_servos.pyは SCS0009 専用です。PWM ではAmazingHand-PWM/tools/serial_test.pyまたはウェブページを使用してください

