PoseLab Logo
  • 제품
  • 머신러닝
  • 문서
  • 시스템
  • 소개
PoseLab Logo(주)마블덱스

PoseLab은 체압센서로 구동되는 인터랙티브 머신러닝 학습 플랫폼입니다. 실제 센서 데이터를 통해 ML 알고리즘을 직접 체험하고, 나만의 앱을 만들어보세요.

© Copyright 2026 PoseLab. All Rights Reserved.

고객지원
  • 문의하기
  • 문서
약관
  • 서비스 약관
  • 개인정보처리방침
  • 쿠키 정책

프로토콜 — Lite

Lite 펌웨어 — 눈으로 읽는 ASCII 출력

시리얼 프로토콜

📄 프로토콜 정의 파일: serial-protocol-seat-ascii.json (Lite) · serial-protocol-seat-anzdF.json (Advanced) — 문서의 원본(SOT)입니다.

펌웨어 두 가지

같은 보드에 어느 펌웨어를 굽느냐에 따라 나오는 것이 완전히 달라집니다.

13

이 문서는 Lite를 다룹니다. → Advanced 문서

눈으로 확인하기

14

웹 페이지의 수신 데이터(ASCII) 패널. 한 줄에 값 32개가 콤마로 구분되어 초당 50번 들어옵니다.

숫자가 그대로 보이므로 센서가 살아 있는지 바로 압니다.

한 줄이 한 프레임

15

그 32개 값이 방석 어디인가

여기가 핵심입니다. 값의 순서가 곧 방석 위의 자리입니다. 인덱스만 알면 좌표표를 찾아볼 필요가 없습니다.

16

  • [0]~[9] 뒷줄 — 왼쪽에서 오른쪽으로 10개
  • [10]~[23] 가운뎃줄 — 14개
  • [24]~[31] 앞줄 — 8개

위 예시는 왼쪽 뒤로 무게가 실린 상태입니다. 가운뎃줄 왼쪽이 2000 근처로 가장 높고, 앞줄 오른쪽 두 개는 아무것도 안 눌려 0입니다.

줄 하나가 그 순간 방석 전체입니다. 그게 초당 50번 옵니다.

값이 20보다 작으면 장치가 0으로 바꿔서 내보냅니다. 아무도 안 앉았을 때 미세하게 흔들리는 값을 잘라내기 위한 노이즈 게이트입니다. 32개 값을 다 더한 합이 200 이하이면 "아무도 안 앉음"으로 보면 됩니다.

읽는 코드

들어오는 데이터는 줄 단위로 딱 맞게 오지 않습니다. 조각으로 오므로 버퍼에 모았다가 줄바꿈을 만날 때마다 잘라 씁니다.

const port = await navigator.serial.requestPort();
await port.open({ baudRate: 2000000 });

const reader = port.readable
  .pipeThrough(new TextDecoderStream())
  .getReader();

let buffer = '';

while (true) {
  const { value, done } = await reader.read();
  if (done) break;

  buffer += value;
  const lines = buffer.split('\n');
  buffer = lines.pop();          // 마지막 조각은 아직 안 끝난 줄

  for (const line of lines) {
    const v = line.trim().split(',').map(Number);
    if (v.length !== 32) continue;      // 잘린 줄은 버린다
    if (v.some(Number.isNaN)) continue; // 깨진 줄도 버린다
    onFrame(v);
  }
}

연결 직후 첫 줄은 거의 항상 중간부터 잘려 들어옵니다. 값 개수를 세서 버리세요.

값을 다 받았으면 이렇게 씁니다.

function onFrame(v) {
  const sum = v.reduce((a, b) => a + b, 0);
  if (sum <= 200) return;                    // 아무도 안 앉음

  const maxIdx = v.indexOf(Math.max(...v));  // 가장 세게 눌린 자리
  const left  = v.filter((_, i) => isLeft(i)).reduce((a, b) => a + b, 0);
  const right = sum - left;                  // 좌우 무게 비교
}

연결 조건

17

시리얼(USB) 통신은 1개 기기당 1개 SW와 연결됩니다. 만일 아두이노의 시리얼 모니터 창이 열려있다면 닫으셔야 웹브라우저 연결이 가능해집니다.

18

실습 페이지 상단의 입력 패널 · USB 케이블로 연결하려면 Serial, 무선이면 BLE · 하드웨어가 없으면 Demo 로 동작을 볼 수 있다

펌웨어 굽기

→ Lite 소스코드 받기

Arduino IDE로 열고 Tools 설정을 맞춘 뒤 업로드합니다. 노란색으로 표시된 5개가 필수 항목입니다.

19

화면을 따라가며 하고 싶다면 방석센서 그래프 페이지에 단계별 안내가 있습니다.

브라우저에서 바로 업데이트하는 기능: [내용 없음]

문서 목록으로