PWM 웹 제어
이 페이지는 웹 제어의 PWM(ESP32-S3) 버전 전용 설명입니다. 공통 UI, 시작 방법, 프리셋 포즈, 카메라 텔레오퍼레이션은 웹 제어 개요를 참고하세요.
하드웨어와 플래싱
- 배선, GPIO, 전원 공급과 서보 모델은 PWM 배선, GPIO와 전원 공급을 참고하세요.
- 펌웨어 플래싱(ESP-IDF 또는 사전 빌드된 bin)은 PWM 빠른 시작을 참고하세요.
- 호스트 PC↔ESP32는 115200 8N1로 고정되며, 서보 자체에는 보드레이트가 없습니다.
웹 연결
- 상단 "드라이버" 드롭다운에서 PWM(ESP32-S3) 선택
- **시리얼 포트 추가…**를 눌러 ESP32-S3의 USB 시리얼 포트 선택
- 연결을 누르면 페이지가 자동으로 핸드셰이크(NOP)하고 왼손/오른손 선택을 보낸 뒤 중간 위치로 복귀합니다
- 이후 슬라이더, 프리셋 포즈, 카메라 텔레오퍼레이션으로 제어합니다; 손가락 제목에 CH 1/2 …(PWM 채널 번호)가 표시됩니다


SCS0009 버전과의 차이
| 항목 | SCS0009 버스 버전 | PWM 버전 |
|---|---|---|
| 시리얼 보드레이트 | 1,000,000 | 115,200 |
| 드라이버 보드 | USB 버스 드라이버 보드 | ESP32-S3 + PWM 어댑터 보드 |
| 토크 | 켜기/해제 가능 | 없음(펌웨어에 토크 명령이 없어 버튼이 숨겨짐) |
| E-stop | 모든 토크 해제 | 0xFF를 보내 제스처 중단, 서보는 전원이 들어온 채 위치 유지 |
| 속도 | 속도 파라미터 지원 | 직접 구동 프레임에는 속도 파라미터 없음 |
| 피드백 | 위치/온도/전압/속도 읽기 | 읽기 없음, 걸림이나 탈조 감지 불가 |
| 왼손/오른손 | 서보 ID가 다름 | 동일한 채널 그룹, 0xF1을 보내 전환(주로 펌웨어 제스처에 영향; 웹 포즈는 각 손의 매핑 사용) |
각도 캘리브레이션
웹 페이지는 포즈 값을 8채널 0–180° 각도로 변환하며, 기본 공식은 다음과 같습니다:
angle = 90 + dir × scale × 포즈 값 + offset- 손가락마다 첫 번째 채널은
dir = -1, 두 번째 채널은dir = +1 - 기본값은
scale = 1,offset = 0이며, 서보 축 각도를 그대로 미러링합니다 mirror_pose가 참이면 먼저 손가락마다 두 포즈 값을 교환합니다(이 저장소는 왼손/오른손 모두 활성화)
실제 방향이 반대이거나 중간 위치가 어긋나면 config.json의 pwm.calibration을 편집하세요:
jsonc
"pwm": {
"calibration": {
"right": {
"pointer": { "scale": 1.0, "offset_deg": [0, 0] }
}
}
}- 방향이 반대: 해당 손가락의
scale을-1로 - 중간 위치 오프셋:
offset_deg조정(두 채널을 각각 조정) - 손가락별 절차: 중간 위치 복귀 → 손가락 하나만 따로 드래그 → 방향/중간 위치 확인 →
scale/offset_deg수정 → 페이지 새로 고침 후 재시도
자주 묻는 질문
- 연결 실패 / ESP32 무응답: 보드레이트가 115200인지, ESP32의 COM 포트를 선택했는지, 5 V/3 A 전원과 공통 접지가 맞는지 확인하세요; 시리얼 포트를 열면 ESP32가 리셋될 수 있으며 페이지가 자동으로 NOP를 재시도합니다
- 서보가 움직이지 않거나 떨림: 서보가 333 Hz 디지털 서보(PTK 7452 MG-D 또는 동급)인지, 전원이 충분한지 먼저 확인하세요; SG90은 펌웨어 수정이 필요합니다
- 방향이 반대: 해당 손가락의
scale을-1로 - 중간 위치가 어긋남: 해당 채널의
offset_deg를 조정 - "사용 중(제스처 실행 중)" 표시: 펌웨어가 내장 제스처를 실행 중입니다. 완료될 때까지 기다리거나 E-stop을 누르세요(
0xFF) - 서보 스캔:
tools/scan_servos.py는 SCS0009에만 적용됩니다; PWM은AmazingHand-PWM/tools/serial_test.py또는 웹 페이지를 사용하세요

