Newert
스토어
VitalTrack EEG SDK

소프트웨어 · SDK

VitalTrack EEG SDK

VitalTrack EEG 보드에서 정제된 EEG 데이터를 받는 Flutter SDK. Android·iOS·Windows·Linux 지원, 버전 1.0.0.

버전 1.0.0

VitalTrack EEG 보드에서 정제된 EEG 데이터를 받는 Flutter SDK입니다. 장비 검색과 연결부터 측정 시작·정지, EEG와 전극 접촉, 밴드파워, 움직임, 배터리 정보 수신까지 Flutter 앱에서 사용할 수 있습니다. 대표 이미지는 SDK 기능을 표현한 개념 일러스트입니다.

제공 기능

• 장비 검색·연결: 주변 장비를 검색하고 연결합니다.

• 측정 시작·정지: 사용할 채널을 선택해 측정을 시작하고 정지합니다.

• 정제된 EEG 스트림: 최대 8채널, 250 Hz의 EEG 데이터를 제공합니다. 단위는 μV입니다.

• 전극 접촉: 채널별 상태를 정상·약함·부착 안됨으로 확인합니다.

• 밴드파워: 채널별 δ·θ·α·β·γ 상대 비율(%)을 제공합니다.

• 움직임: 가속도(g)와 각속도(°/s)를 제공합니다.

• 배터리: 잔량, 전압, 충전 상태를 확인합니다.

SDK는 데이터 스트림을 제공하며, 데이터 저장은 앱에서 구현합니다.

지원 플랫폼

• Windows: Windows 10 이상, x64

• Linux: x64, glibc 2.34 이상(Ubuntu 22.04 이상), BlueZ

• Android: Android 7.0(API 24) 이상

• iOS: iOS 13.0 이상

네 플랫폼 모두 Flutter로 연동합니다.

예제 앱

장비 검색·연결 → 채널 선택 → 측정 시작·정지 → CSV 저장 흐름을 확인할 수 있습니다. EEG 파형과 전극 접촉, 움직임, 배터리 정보도 표시합니다. 전체 예제는 패키지의 example/에 있습니다.

요구 사항

• Android: Android 12 이상은 블루투스 검색·연결 권한, Android 11 이하는 위치 권한이 필요합니다. 장비 검색 전에 실행 중 권한을 요청해야 합니다.

• iOS: Info.plist에 블루투스 사용 설명을 추가해야 합니다.

• Linux: BlueZ가 실행 중이고 사용자 계정에 블루투스 사용 권한이 있어야 합니다.

• Windows: 블루투스 LE를 지원하는 어댑터가 필요합니다.

다운로드

상단의 다운로드 버튼에서 VitalTrack EEG SDK의 eeg/ 폴더를 확인할 수 있습니다. 설치에 사용하는 공개 Git 태그는 eeg-v0.1.0입니다.

문의

SDK 도입 및 사용 관련 문의는 홈페이지 상단의 ‘문의하기’를 이용해 주세요.

시작하기

pubspec.yaml에 아래 Git 의존성 예시를 추가한 뒤 flutter pub get을 실행합니다. ref는 실제 공개된 설치 태그를 사용합니다.

dependencies:
  vitaltrack_eeg:
    git:
      url: https://github.com/NewertDev/VitalTrack-SDK.git
      path: eeg
      ref: eeg-v0.1.0

아래 코드는 README에서 검색·연결, EEG 수신, 측정 시작·정지에 필요한 부분을 발췌한 호출 순서 예시입니다. 앱에서는 시작·정지를 버튼 등 사용자 동작에 연결하고, EEG 수신 처리와 저장을 구현합니다.

최소 사용 코드

import 'package:vitaltrack_eeg/vitaltrack_eeg.dart';

final sdk = VitalTrackEeg.instance;

final boards = await sdk.scan(timeout: const Duration(seconds: 5))
    .firstWhere((list) => list.isNotEmpty);

final board = await sdk.connect(boards.first);

board.eeg.listen((samples) {
  for (final s in samples) {
    // s.microvolts[0..7]: 채널 1~8의 정제 EEG (μV). 쓰지 않는 채널은 0
  }
});

await board.start(channels: {1, 2, 3, 4});

final result = await board.stop();
await board.disconnect();