fNIRS Prototype 1: Dual-MAX30102 Pipeline Testbench

TCA9548A + Arduino Serial
하드웨어 미연결 (USB Serial 대기)
Prototype 1 Harness: Validating Web Serial, DSP, and Subtraction Logic (Sensor 1: Mock Scalp Noise, Sensor 2: Target Signal).
Sensor 1 (Mock Scalp Noise)
Short-Ch (d=0.8cm)
Raw Red (660nm)
--
Raw IR (880nm)
--
BPF ΔOD_Scalp: -- OD
Sensor 2 (Target Cortical)
Long-Ch (d=3.0cm)
Raw Red (660nm)
--
Raw IR (880nm)
--
BPF ΔOD_Target: -- OD
Cleaned ΔHbO₂ (Cortical)
Standby
ΔHbO₂ Concentration:
-- μM
ΔHbR: -- μM
Status: Waiting
Subtraction Factor (k) k = 0.78
0.0 (No Sub) 0.50 0.78 (Opt) 1.0 (Full)

하드웨어 아키텍처 및 2채널 광학 피부층 분리 다이어그램

MAX30102 #1
TCA9548A SD0/SC0
Short-Ch (Scalp)
두피/두개골 표면층
Red/IR I²C Packet
TCA9548A
I²C MUX 0x70
0x57 동시 제어
115200 Baud UART
Arduino / ESP32
Web Serial Host
CSV 스트리밍
10 Hz 샘플링
DSP Subtraction
Cleaned ΔHbO₂
MBLL 역행렬 변환
순수 대뇌 피질 신호
30s 실시간 차트

실시간 시계열 파이프라인 신호 검증 (30초 슬라이딩 윈도우)

두피 혈류 잡음(노랑) vs 타겟 신호(하늘) vs 잡음이 제거된 순수 대뇌 활성화 신호(형광 녹색)

DSP 수학 파이프라인 단계별 연산 상태

Real-Time Core
1. 광학 밀도 변환 (ΔOD)
ΔOD = -ln(I_t / I_0)
Ch1: --
Ch2: --
2. Biquad BPF (0.01 ~ 0.20 Hz)
심박 1Hz 및 고주파 잡음 분리
fc1: 0.01Hz / fc2: 0.20Hz
Order: 2nd Biquad Direct Form II
3. 피부층 회귀 감산 (SCR)
Clean = Ch2 - (k × Ch1)
k factor: 0.78
Clean OD: --
4. Modified Beer-Lambert 역행렬
[ΔHbO2, ΔHbR]ᵀ = (E·d·DPF)⁻¹·ΔOD
ΔHbO2: -- μM
ΔHbR: -- μM

Web Serial 실시간 패킷 모니터 (115,200 Baud)

수신 포맷 규격: Ch1_Red,Ch1_IR,Ch2_Red,Ch2_IR\r\n (쉼표 구분자 정수)
[System] fNIRS Prototype 1 테스트벤치 준비 완료.
[Standby] 🔌 아두이노/ESP32 USB를 연결하고 상단 [USB Serial 연결] 버튼을 누르세요.
[Info] 하드웨어 없이 신호 흐름을 테스트하려면 [데모 시뮬레이션] 토글을 켜면 가상 신호가 발생합니다.
Buffer: 300 samples (30.0s) DSP Standby (연결 대기)