PUTT LAB v0.2

Putting Analysis 환경 확인중 미연결 0 Hz 0 샷

측정하려면 한 단계가 더 필요합니다

    0. 환경 자가진단

    연결이 안 될 때 가장 먼저 볼 것. 아래가 전부 초록이어야 센서 검색이 가능합니다.

    1. 센서 검색 & 연결

    검색창에 아무 기기도 안 뜨면 → 센서/동글 문제. 기기는 뜨는데 연결이 끊기면 → OS 페어링·점유 문제. 아래 로그에 원인이 한국어로 표시됩니다.
    검색창에 센서가 안 보이면 — 다른 프로그램이 잡고 있는 것입니다.
    블루투스 센서는 한 번에 한 곳에만 연결됩니다. 케이베스트·WitMotion 앱·휴대폰 앱이 켜져 있으면 크롬에는 아예 안 뜹니다. 그 프로그램을 완전히 종료(트레이 아이콘까지)한 뒤 검색하세요. 윈도우 설정 → Bluetooth에 센서가 페어링돼 있어도 안 뜹니다 — 장치 제거 후 재검색.
    ※ 크롬은 optionalServices에 미리 적어둔 UUID만 볼 수 있습니다. 광범위 탐색은 0xFE00~0xFFFF, 0x1800~0x18FF를 전부 요청해 사실상 모든 벤더 서비스를 노출시킵니다(대신 검색창이 1~2초 느려집니다).

    연결 로그
    대기 중…
    수신 원시 데이터 (HEX)
    대기 중…
    고급 · 연결 문제 해결

    2. GATT 서비스 / 특성 목록

    연결되면 자동으로 채워집니다. WitMotion은 보통 ffe5 서비스 안에 ffe4(notify) / ffe9(write)가 있습니다.
    서비스 UUID특성 UUID속성

    연결 실패 — 위에서부터 순서대로 확인

    현상별로 원인이 갈립니다. 아래 3가지 중 어디에 해당하는지부터 구분하세요.
    A. 검색창에 기기가 하나도 안 뜬다 → 어댑터 or 센서 광고 문제
    1. 센서가 켜져 있고 광고 중인가 — WT9011DCL은 충전 후 전원 버튼. LED가 깜빡여야 BLE 광고 중입니다. 완전 방전이면 30분 이상 충전 후 재시도.
    2. 센서가 다른 곳에 이미 연결돼 있는가 — BLE는 한 번에 1개 중앙기기만 붙습니다. 휴대폰 WitMotion 앱, PC용 MiniIMU 프로그램, 다른 크롬 탭이 잡고 있으면 검색에 아예 안 뜹니다. 전부 종료 / 블루투스 끄기 후 재시도.
    3. 동글이 BLE인가 — Bluetooth 2.0/3.0 동글은 BLE를 못 씁니다. 4.0 이상(권장 5.0, Realtek RTL8761B)인지 확인. 장치관리자 → Bluetooth 항목에 느낌표가 있으면 드라이버 설치.
    4. 메인보드 내장 BT와 충돌 — 데스크탑에 내장 BT가 있는데 동글을 꽂으면 둘 중 하나가 죽습니다. 장치관리자에서 쓰지 않는 쪽을 사용 안 함으로.
    5. 윈도우 설정 → Bluetooth 및 장치에서 Windows 자체 검색으로도 안 보이면 이건 크롬 문제가 아니라 하드웨어 문제입니다.
    B. 기기는 뜨는데 연결이 실패/즉시 끊김 → OS 페어링 충돌
    1. 윈도우에 페어링돼 있으면 크롬이 못 씁니다. 설정 → Bluetooth → 해당 장치 장치 제거. WitMotion BLE 센서는 OS 페어링을 하지 않고 크롬에서 직접 연결하는 게 정상입니다.
    2. 유령 항목이 남아 있으면 chrome://bluetooth-internals/#devices 에서 상태를 확인하고 크롬을 완전히 종료 후 재실행.
    3. 센서 전원을 껐다 켜고(광고 재시작) 10초 안에 다시 시도.
    C. 연결은 되는데 데이터(HEX)가 안 들어온다 → 특성/설정 문제
    1. 위 2번 표에 ffe4(notify)가 보이는지 확인. 안 보이면 "서비스 광범위 탐색"을 켜고 재연결.
    2. ffe4가 있는데도 조용하면 ⑤탭에서 출력항목 = 가속+자이로+각도와 출력 200Hz를 보낸 뒤 저장.
    3. HEX가 들어오는데 55 61로 시작하지 않으면 출력 포맷이 다른 것입니다 — HEX 첫 두 바이트를 알려주세요.
    가장 흔한 두 가지: ① 휴대폰/PC 앱이 센서를 이미 잡고 있음, ② 윈도우에 페어링해 버림. 이 둘만 풀어도 대부분 해결됩니다.

    3. 센서 없이 먼저 검증 — 시뮬레이터

    합성 퍼팅 데이터를 200Hz로 흘려보내 스트로크 검출 · 템포 · 페이스 회전 계산이 제대로 도는지 확인합니다. 센서 도착 전에 전체 파이프라인을 검증할 수 있습니다.
    시뮬레이터를 켜면 ②③④ 탭에 실제 센서와 똑같이 데이터가 들어갑니다.
    오늘
    –
    아직 오늘 친 스트로크가 없습니다.

    오늘 볼 것 하나

    –
    스트로크를 8개 이상 치면 여기에 나옵니다.
    사용법 — 1분이면 됩니다
    처음 한 번만
    1
    그립 아래쪽에 그림처럼 마운트 연결해주세요 방향·각도는 아무래도 상관없습니다 — 다음 단계의 교정이 알아서 잡습니다. 센서 그립 바로 아래 그립
    2
    마운트 교정 퍼터를 거꾸로 3초 들면 시작됩니다. 앱이 말로 시킵니다 — 솔을 바닥에 대고 멈추고, 페이스를 하늘로 돌려 멈추면 끝.
    칠 때마다
    1
    어드레스에서 멈춘다 0.5초 멈추면 도–미–솔 소리가 납니다.
    2
    평소처럼 친다 소리가 난 뒤의 스윙은 반드시 결과를 냅니다.
    3
    딩동 = 측정 완료 낮은 음이 나면 스윙은 잡았지만 판정에 실패한 것입니다.
    이상하면
    R
    리셋 — 거꾸로 1.2초 헤드를 하늘로 들고 있으면 신호가 갑니다. 그 다음 어드레스에서 멈추면 영점·자세·3D가 한꺼번에 새로 잡힙니다.
    C
    교정 — 거꾸로 3초 센서를 떼었다 붙였거나 돌렸으면 이것부터.
    ?
    그래도 미심쩍으면 아래 자가 점검을 누르세요. 센서가 정상인지 10초에 답합니다.
    1
    멈추세요
    어드레스에서 퍼터를 정지
    2
    치세요
    영점 완료 · 이 상태의 스윙은 반드시 답합니다
    3
    측정 중
    스윙이 끝나면 결과가 나옵니다
    센서를 연결하세요.
    연결– 속도– 축– 대기– 요각 보정0 확인 중

    측정 품질 확인 전

    “지금 제대로 재고 있나?”에 10초로 답합니다. 퍼터를 바닥에 내려놓고 손을 떼면 됩니다.
    한 번도 확인하지 않았습니다.
    대기

    진단 로그 켬

    이상한 일이 생기면 앱이 스스로 기록을 보냅니다. CSV를 내보내 올리지 않아도 됩니다. 이름·연락처 같은 개인정보는 보내지 않습니다 — 센서 신호와 판정 결과만 갑니다.
    자동으로 가는 때 — 자가 점검에서 문제가 잡혔을 때 · 스트로크 10개마다 · 앱을 닫을 때. 인터넷이 끊겨 있으면 쌓아 뒀다가 연결되면 다시 보냅니다.

    이번 세션 🔊 소리 켬

    기록된 스트로크
    0/ 10
    아직 기록된 스트로크가 없습니다. 어드레스에서 1초 정지 후 평소처럼 치세요.
    말로를 켜면 소리를 외울 필요가 없습니다 — “센서 연결. 리셋이 필요합니다” → “준비하세요” → “치세요”. 종소리는 즉시 나고 말이 뒤따릅니다. 말로 + 결과까지는 여기에 “페이스 0.6도 열림”, 훈련 중이면 “연속 세 개”를 덧붙입니다.
    레슨은 옆에 사람이 있을 때 씁니다 — “치세요” 하나만 남기고 전부 조용해집니다. 코치가 말하는 중에 앱이 끼어들지 않습니다.

    실시간 3D 실시간

    퍼터를 움직이면 바로 따라 움직입니다. 스트로크가 잡히면 자동으로 그 스윙을 재생합니다. 더 크게 보거나 돌려보려면 3D 뷰 탭으로 가세요.
    신호 확인 · 진단

    실시간 신호 대기

    퍼터를 움직일 때 숫자가 같이 움직이면 정상입니다. 전부 0이면 데이터가 안 들어오는 것입니다.
    자이로 X
    0°/s
    자이로 Y
    0°/s
    자이로 Z
    0°/s
    최근 3초 최고
    0°/s
    상태
    IDLE
    샘플레이트
    0Hz
    수신 패킷
    0
    각속도 크기
    0°/s
    Roll
    0°
    Pitch
    0°
    Yaw
    0°
    가속도 크기
    0g
    초록 = 스트로크 축 각속도, 파랑 = 페이스 축 각속도, 회색 = 가속도 크기

    검출 로그

    스트로크가 안 잡힐 때 어느 단계에서 막혔는지 여기 남습니다.
    단계
    IDLE
    누적회전 X
    0°
    누적회전 Y
    0°
    누적회전 Z
    0°
    스트로크 축은 X, 최소 백스윙 1°.
    스트로크를 해보세요…
    안 잡힐 때 이 내용을 그대로 보내주세요.

    목표선 영점 없음

    조준(Aiming)을 재려면 목표선 기준이 하나 더 필요합니다. 퍼터를 목표선에 스퀘어로 놓고 정지 → 아래 버튼 → 고객이 평소대로 어드레스. 그 차이가 조준 오차입니다. 해제해도 나머지 측정은 정상입니다.

    3D 실시간 뷰

    센서를 그립 바로 아래 샤프트에 붙이고, 어드레스 자세로 정지한 상태에서 영점을 누르세요. 그 자세가 기준(스퀘어)이 됩니다. 센서를 어느 방향·각도로 붙였든 상관없습니다 — 영점이 알아서 보정합니다.
    실시간
    영점 없음 기준틀 기본값
    평균 없음
    퍼터가 반대로 움직이면 눌러 맞추세요. 기준틀은 첫 스트로크에서 자동으로 잡힙니다.
    A
    –
    B
    –
    두 세션의 평균 스트로크를 겹쳐 봅니다. 퍼터 A/B든, 오늘과 지난달이든 같은 방식입니다. 실선 = A · 굵은 점선 = B. 색을 못 봐도 구분됩니다.
    드래그 = 시점 회전 · 휠(두 손가락) = 확대. 주황 화살표 = 페이스 방향, 초록 선 = 목표선, 파란 선 = 헤드 궤적, 반투명 헤드 = 어드레스 위치.
    재생을 누르면 마지막 스트로크를 다시 볼 수 있고, 슬라이더로 임팩트 순간까지 한 프레임씩 넘길 수 있습니다.
    페이스 각
    –°
    샤프트 린
    –°
    라이 변화
    –°
    헤드 각속도
    –°/s
    최근 4초간 페이스 각. 0° = 영점 기준 스퀘어. 표시 부호가 실제 감각과 반대면 알려주세요 — 뒤집을 수 있습니다.

    이 화면을 어떻게 쓰나

    1. 어드레스에서 영점 → 2. 평소처럼 퍼팅 → 3. 탑뷰로 페이스가 임팩트에서 열렸는지 닫혔는지 확인.
    센서가 없어도 ⑥탭의 시뮬레이터를 켜면 화면 동작을 미리 볼 수 있습니다.

    세션 지표 –

    평균값과 투어 기준 대비 위치를 함께 봅니다. 스트로크가 쌓일수록 정확해집니다.
    스트로크가 없습니다.

    방금 친 스트로크

    템포
    –
    페이스 회전
    –°
    임팩트 페이스
    –°
    유사도
    –%
    백스윙 시간
    –ms
    다운스윙 시간
    –ms
    백스윙 각
    –°
    팔로우 각
    –°
    초록 = 스트로크 각(arc), 파랑 = 페이스 각(face). 세로선 = 시작 / 탑 / 임팩트 / 종료
    이번 퍼팅 결과: 키보드 1 / 0 으로도 입력

    스트로크 목록

    0 / 10
    #결과템포백(ms)다운(ms) 백각(°)팔로우(°)페이스회전(°)임팩트페이스(°) 최대각속도(°/s)유사도(%)임팩트판정

    일관성 (표준편차)

    피팅 전/후 비교의 핵심 지표. 평균값보다 편차가 줄었는지가 중요합니다.
    고급 · 캘리브레이션과 검출 임계값

    축 캘리브레이션

    센서를 어떤 방향으로 붙였는지 프로그램은 모릅니다. 아래 두 번의 동작으로 스트로크 축과 페이스 축을 자동 지정합니다. 마운트 규격이 확정되면 이 값은 고정값으로 박아 넣으면 됩니다.
    캘리브레이션을 안 하면 첫 스트로크에서 진폭이 가장 큰 축을 스트로크 축으로 자동 추정합니다.

    검출 파라미터

    퍼팅은 충격이 작아 가속도 스파이크가 안 잡힐 수 있습니다. 그 경우 스트로크 각이 어드레스 각으로 되돌아오는 순간을 임팩트로 잡습니다(표에 판정 근거 표시).

    셋업 톤 꺼짐

    어드레스 자세가 기준 범위 안에 들어와 있는 동안에만 화음이 울립니다. 소리가 나면 그 자세를 유지하고, 끊기면 벗어난 것입니다 — 화면을 보지 않고 셋업을 잡을 수 있습니다.
    샤프트 앞뒤 (린)
    –°
    토업 / 힐업 (라이)
    –°
    페이스 방향
    –°
    먼저 좋은 어드레스를 잡고 기준으로 저장을 누르세요. 기준이 없으면 무엇과 비교할지 알 수 없습니다.

    오늘의 기준선 없음

    피드백을 받으며 친 숫자는 실력이 아닙니다. 매 세션 처음 15개는 아무 소리 없이 칩니다. 이 값만 세션끼리 비교합니다.
    임팩트 페이스 평균
    –°
    임팩트 페이스 편차
    –°
    샤프트 린 평균
    –°
    기준 도달
    –번째
    치기만 하면 자동으로 셉니다. 소리는 안 납니다.

    미션 대기

    한 번에 한 가지만 봅니다. 기준은 위 기준선에서 자동으로 잡힙니다.
    익숙해지면 피드백을 줄이세요 — 매번 들으면 실전에서 원래대로 돌아갑니다.

    거리 모델 없음

    거리감을 감이 아니라 각도로 바꿉니다. 스트로크를 치고 실제로 굴러간 거리를 입력하면, 백스윙 각과 거리의 개인 함수가 만들어집니다. 그 뒤로는 “4m”를 부르면 목표 백스윙 각이 나옵니다.
    스트로크마다 거리를 물어봅니다.
    표본
    0개
    거리 ∝ 각도^
    –
    설명력 R²
    –
    예측 거리 오차
    –%
    그린 속도가 다르면 같은 스트로크도 다르게 굴러갑니다. 매트가 바뀌면 그린 보정으로 전체를 한 번에 맞추세요 — 표본을 다시 모을 필요는 없습니다.

    세션 기록

    기준선(무피드백)만 쌓입니다. 편차는 한 세션으로 판단하지 않습니다 — 15개로 잰 편차는 ±19% 흔들립니다. 추세가 보이려면 20세션 이상 필요합니다.
    날짜N페이스 평균페이스 편차린 평균퍼터

    홀 게임 대기

    거리 모델이 있으면 퍼팅 하나하나가 실제 홀에서 어떻게 굴렀을지 계산됩니다. 혼자 연습해도 되고, 퍼터 하나를 돌려가며 최대 8명이 겨뤄도 됩니다.
    플레이어 — 이름을 비우면 그 자리는 빠집니다
    그린 & 홀
    그린 스피드3.0 m
    보통 (동네 코스)
    홀 거리랜덤 1~6 m
    0 = 홀마다 랜덤
    오르막 / 내리막평지
    + 오르막 · − 내리막 (%×10)
    좌우 경사(브레이크)평지
    + 오른쪽이 높음 → 공은 왼쪽으로 휨
    컨시드(OK)1.0 m
    이 안에 붙으면 OK — 그 홀은 +1타로 끝냅니다
    홀 수9홀
    랜덤 거리면 홀마다 다른 거리가 나옵니다

    피팅 가이드 표본 부족

    스트로크가 페이스를 얼마나 돌리는지를 재서, 그에 맞는 헤드 밸런스·무게·길이·로프트·그립의 방향을 제시합니다. 여기서 나오는 것은 “이 스펙을 쓰세요”가 아니라 “무엇을 어느 쪽으로 바꿔 A/B로 확인하세요”입니다.
    회전지수 R
    –
    스윙축 기울기
    –°
    스트로크 타입
    –
    표본
    0개

    1 · 헤드 밸런스 (토행)

    2 · 나머지 변수 — 바꾸면 어디에 나타나는가

    각 항목의 필요 표본은 당신의 실제 편차로 계산한 값입니다. 표본이 감당 못 할 만큼 크면 그 변수는 측정으로 고르는 항목이 아닙니다 — 그렇게 적어 두었습니다.

    3 · 순서 — 싼 것부터

    퍼터를 바꾸는 것은 마지막입니다. 그립 하나로 회전지수가 움직이면 헤드를 바꿀 이유가 없습니다.

    토행 측정 대기

    눈대중으로 “대략 45도”라고 하던 것을 숫자로 저장합니다. 원리는 간단합니다 — 샤프트를 수평으로 걸치면 중력은 늘 아래를 가리키므로, 자연스럽게 매달린 상태와 페이스를 하늘로 향하게 잡은 상태의 중력 방향 사이각이 곧 토행 각도입니다. 센서를 어느 방향으로 붙였든 상관없습니다.
    1
    자연스럽게 매달기
    샤프트를 책상 모서리 등에 수평으로 걸치고, 헤드가 스스로 멈출 때까지 둡니다. 손을 떼세요.
    –
    2
    페이스를 하늘로
    샤프트는 그대로 수평인 채, 그립을 돌려 페이스가 위를 보게 잡고 유지합니다.
    –
    3
    결과
    –°
    두 상태를 모두 읽으면 계산됩니다.
    퍼터 고르기 — 브랜드나 모델명을 치면 걸러집니다
    센서가 연결돼 있어야 합니다. 읽는 동안 1초간 흔들리지 않아야 하며, 흔들리면 다시 읽습니다.

    등록된 퍼터

    여기 쌓인 것이 Stroke–Putter Matching DB의 시작입니다. 아직 “회전지수 몇이면 토행 몇”이라는 공식은 만들지 않습니다 — 검증되지 않은 공식이 되니까요. 여러 토행을 실제로 쳐 보고, 어느 쪽에서 임팩트 페이스와 회전이 좋아졌는지 기록만 합니다.
    퍼터측정 토행참고값분류길이/로프트/라이측정일

    사람 쪽 — 회전지수 –

    같은 아크 크기에서 페이스가 얼마나 도는지를 상대값으로 봅니다. 회전지수 = 페이스 회전량 ÷ 스트로크 아크 크기. 이 값과 위 토행 값을 함께 기록해 두는 것이 목적이며, 지금 단계에서 자동 추천은 하지 않습니다.
    회전지수
    –
    페이스 회전 (탑→임팩트)
    –°
    아크 (탑→임팩트)
    –°
    표본
    –개
    스트로크 8개 이상에서 계산합니다.

    Golden Stroke 기준선

    들어간 퍼팅으로 표시한 스트로크만 시간 정규화(0~100%)해서 평균낸 곡선이 개인 기준선입니다. 이후 모든 스트로크는 이 곡선과의 거리로 유사도를 냅니다.
    학습된 성공 스트로크
    0
    기준 템포
    –
    기준 페이스 회전
    –°
    기준선 자체 편차
    –°
    굵은 선 = Golden Stroke 평균, 옅은 띠 = ±1 표준편차, 점선 = 최근 스트로크
    유사도 수치는 프로토타입 정의입니다(정규화 RMS 편차 기반). 실측 데이터가 쌓이기 전에는 마케팅에 쓰지 마세요 — 브리프 6번 항목.

    1. 세션 저장

    지금까지 측정한 스트로크를 이름을 붙여 저장합니다. 저장은 이 브라우저 안에 남습니다.
    이름 (고객명 / 본인)
    클럽 / 조건

    2. 저장된 세션

    리포트에 쓸 세션을 고르세요. A만 고르면 단일 리포트, A와 B를 고르면 피팅 비교 리포트가 나옵니다.
    AB날짜이름클럽 / 조건스트로크

    3. 리포트

    위에서 세션을 고르고 리포트 생성을 누르세요.
    고급 · 원시 데이터 내보내기

    원시 데이터 로깅

    0 샘플
    원시 CSV 열: t_ms, ax, ay, az, gx, gy, gz, roll, pitch, yaw, arc, face, state, strokeId

    마운트 교정 필요

    센서는 샤프트에 어느 각도로든 붙을 수 있습니다. 앱은 그걸 모릅니다 — 그래서 교정 전에는 화면의 퍼터가 실제 자세와 다르게 보입니다. 중력을 두 번 읽으면 끝납니다. 10초면 됩니다. 화면을 만질 필요 없습니다 — 아래 버튼을 한 번 누르거나 퍼터를 거꾸로 3초 들면, 앱이 말로 시키고 퍼터가 멈추는 것으로 대답합니다. 센서를 떼었다 붙이거나 돌렸으면 다시 하세요.
    퍼터를 거꾸로 3초 들고 있어도 시작됩니다.
    대기
    1
    바닥에 어드레스처럼
    솔을 지면에 평평하게 대고 손을 뗀 채 정지. 이때 위쪽은 솔의 수직 방향입니다.
    –
    2
    페이스를 하늘로 90° 돌려
    퍼터를 그 자리에서 페이스가 위를 보도록 눕히고 정지. 이때 위쪽은 페이스의 수직 방향입니다.
    –
    3
    결과
    두 상태를 모두 읽으면 계산됩니다.
    두 방향이 이루는 각
    –°
    지금 샤프트 앞뒤 (린)
    –°
    지금 토업 / 힐업
    –°
    교정하면 아래 두 값이 영점과 무관한 절대값이 됩니다 — 지금 이 순간 솔이 지면과 얼마나 어긋나 있는지를 바로 읽습니다.

    앱으로 설치 웹

    브라우저 주소창 없이 앱처럼 실행됩니다. 인터넷이 끊겨도 측정은 그대로 됩니다 — 샵 와이파이가 죽어도 상관없습니다.

    내 퍼터 모양 블레이드 · 플럼버넥

    3D에 그려지는 퍼터를 지금 쓰는 퍼터와 맞춥니다. 화면 속 퍼터가 내 것처럼 보여야 스트로크도 내 것으로 읽힙니다. 아래는 아이콘이 아니라 실제 3D를 그대로 축소한 미리보기입니다.
    헤드 타입
    넥 (호젤)

    리셋 신호 켬

    화면을 만지지 않고 퍼터 동작만으로 다시 잡습니다. 헤드를 하늘로 들어 거꾸로 세우고 1.2초 정지 — 그게 신호입니다. 퍼팅 중에는 절대 나올 수 없는 자세라 잘못 걸릴 일이 없습니다.
    1
    헤드를 하늘로
    퍼터를 뒤집어 든다 (그립이 아래)
    2
    1.2초 정지
    유지하는 동안 음이 올라간다
    3
    어드레스로
    멈추면 그 자리에서 새로 영점을 잡는다
    대기
    신호를 받으면 다음에 어드레스에서 멈추는 순간 영점·자세·3D 기준이 한꺼번에 새로 잡힙니다. 기록된 스트로크와 마운트 교정은 지우지 않습니다.

    센서 레지스터 설정

    WitMotion 프로토콜(FF AA reg valL valH). 각 명령 전에 자동으로 잠금해제(FF AA 69 88 B5)를 보냅니다. 설정 후 저장을 눌러야 전원을 꺼도 유지됩니다.
    6축 모드 권장 — 샤프트·헤드의 강자성체 때문에 지자기(요) 값이 틀어집니다(브리프 6-4).
    도움말 · 실행 방법

    이 파일 실행 방법

    1. Chrome(또는 Edge) 데스크톱에서 이 HTML 파일을 엽니다. 파이어폭스·사파리는 Web Bluetooth 미지원입니다.
    2. file://로 열어도 대부분 동작하지만, 안 되면 파일이 있는 폴더에서 python -m http.server 8000 실행 후 http://localhost:8000/putt-lab.html로 접속하세요.
    3. 아이패드는 사파리로 불가 — Bluefy 같은 Web Bluetooth 지원 브라우저 앱이 필요합니다. (실전 운용 계획에 영향 있음)