Getting Started

Getting Started with the ProtoCentral ST1VAFE3BX Breakout

Last updated May 25, 2026

The ProtoCentral ST1VAFE3BX breakout puts STMicroelectronics’ vital-signs analog front-end (vAFE) — a single-lead biopotential channel plus a 3-axis accelerometer in one tiny chip — on a Qwiic-ready board with an included 3-electrode ECG cable. This guide takes you from an unboxed board to a live ECG trace on the Arduino Serial Plotter.

Introduction

The ST1VAFE3BX combines two sensors in a single LGA package: a single-channel vertical analog front-end (vAFE) for biopotential signals (ECG, EMG, EEG) and a 3-axis MEMS accelerometer, alongside an on-chip Machine Learning Core (MLC) for edge motion classification. That pairing lets you capture a clean ECG while simultaneously tracking body motion — ideal for wearables, hearables, and activity-aware biopotential research where motion artefacts need to be regressed out.

This ProtoCentral breakout is pre-configured for single-lead ECG and ships with a 3-electrode ECG cable that plugs into the on-board 3.5 mm jack. It exposes a QWIIC connector for plug-and-play I²C and a 7-pin header for direct I²C / I³C / SPI access, and its on-board 1.8 V regulator with bidirectional level shifting lets it run from any 2 V – 5 V host (Arduino, ESP32, Raspberry Pi, etc.).

Not a medical device. This board is for evaluation, education, and research only — it is not a diagnostic instrument.

Key Features

  • Single-lead ECG via the included 3-electrode cable and 3.5 mm jack — powered by ST’s vAFE biopotential channel (programmable gain 2× / 4× / 8× / 16×, input impedance 100 MΩ – 1 GΩ).
  • 3-axis accelerometer (±2 / ±4 / ±8 / ±16 g) for motion and activity tracking.
  • On-chip Machine Learning Core (MLC) for low-power motion classification at the edge.
  • Triple-mode digital interface — I²C, I³C, and SPI, selectable via the JP2 jumper (or the CS pin) — plus a QWIIC connector for solderless I²C.
  • Wide 2 V – 5 V host range thanks to an on-board 1.8 V LDO and bidirectional logic-level translation.
  • Open hardware (CERN-OHL-P v2) with an MIT-licensed Arduino library.

What’s in the Box

Qty Item
1 ProtoCentral ST1VAFE3BX Biopotential AFE + Accelerometer Breakout
1 3-electrode ECG cable (3.5 mm jack)

Disposable ECG electrode pads (standard snap type) are consumables and are not included.

Specifications

Parameter Value
Sensor IC STMicroelectronics ST1VAFE3BX
Biopotential Single-channel vAFE (ECG / EMG / EEG), 12-bit, gain 2× – 16×, Zin 100 MΩ – 1 GΩ
Accelerometer 3-axis, ±2 / ±4 / ±8 / ±16 g, ODR up to 7680 Hz
Digital interface I²C, I³C, or SPI (JP2-selectable) + QWIIC
I²C address 0x21 default (SA0 → VCC); 0x20 with SA0 → GND
Host supply 2 V – 5 V (on-board 1.8 V LDO + level shifting)
Connectors 3.5 mm ECG jack · QWIIC · 7-pin 0.1″ header
Test points BIO1 / BIO2 / VCM / IN1 / IN2
Edge AI On-chip MLC + FSM

Note on operating modes: the ST1VAFE3BX streams either the accelerometer or the vAFE biopotential channel at a time — they are mutually exclusive. The library’s configureForECG() switches into vAFE-only mode; call disableVAFE() to return to accelerometer mode.

Wiring the digital interface

Option 1 — QWIIC (recommended, solder-free)

If your microcontroller has a QWIIC / STEMMA QT connector, plug a QWIIC cable into the board’s QWIIC port — power and I²C are handled for you, no soldering. (QWIIC runs at 3.3 V.)

Option 2 — 0.1″ header to a breadboard

Wire four lines from the 7-pin header to your microcontroller for I²C:

ST1VAFE3BX pin Arduino Uno ESP32 (default I²C)
VCC 5V (or 3.3V) 3.3V
GND GND GND
SDA A4 GPIO21
SCL A5 GPIO22
INT1 / INT2 (optional) any GPIO any GPIO

The breakout includes I²C pull-ups and accepts a 2 V – 5 V supply, so an Arduino Uno can power it from 5V. Make sure the JP2 jumper is set to I²C (the default for this guide). INT1/INT2 are optional data-ready interrupts — leave them unconnected and poll instead.

ProtoCentral ST1VAFE3BX breakout to Arduino Uno I²C wiring diagram: 5V to VCC, GND to GND, A4 to SDA, A5 to SCL

ST1VAFE3BX ↔ Arduino Uno I²C connections. With QWIIC, a single cable carries all four lines — no wiring needed.

Connecting the ECG electrodes

Single-lead ECG uses the included 3-electrode cable plugged into the board’s 3.5 mm jack. Snap a disposable electrode onto each lead and place them on the body as shown — this is Lead I (LA − RA) with a reference electrode for common-mode rejection:

Electrode Body location Connects to
LA (red) Below the left clavicle ST1VAFE3BX ECG+
RA (black) Below the right clavicle ST1VAFE3BX ECG−
RL (green) Lower right abdomen ST1VAFE3BX reference

ST1VAFE3BX single-lead ECG 3-electrode placement on the body — LA below left clavicle, RA below right clavicle, RL reference on lower right abdomen

Standard limb-lead (Lead I) placement — the same 3-electrode method used across ProtoCentral’s single-lead ECG boards.

⚠️ Safety: when electrodes are attached to a person, run the host computer on battery power, not mains. This avoids any direct electrical path between mains earth and the user. This board is for research/education only and is not a medical diagnostic device.

Installing the Arduino Library

Option 1 — Library Manager (recommended)

  1. In the Arduino IDE, open Tools → Manage Libraries…
  2. Search for ProtoCentral ST1VAFE3BX.
  3. Click Install.

Option 2 — Manual install from GitHub

  1. Download the library as a ZIP from github.com/Protocentral/protocentral_st1vafe3bx_arduino (Code → Download ZIP).
  2. In the Arduino IDE: Sketch → Include Library → Add .ZIP Library… and select the file.

Either way, the example sketches below appear under File → Examples → ProtoCentral ST1VAFE3BX.

Your First Reading — verify the board

The quickest power-on check streams the accelerometer (the default mode after begin()), which confirms I²C wiring before you attach any electrodes. Load 01.Accel:

#include <Wire.h>
#include "ProtoCentral_ST1VAFE3BX.h"

ST1VAFE3BX sensor;

void setup() {
    Serial.begin(115200);
    Wire.begin();
    if (!sensor.begin()) {            // defaults to I²C 0x21 (SA0 → VCC)
        Serial.println("ST1VAFE3BX not found — check power, SDA/SCL, and JP2 = I2C.");
        while (1) delay(1000);
    }
    sensor.setAccelFullScale(AccelFullScale::G_2);
}

void loop() {
    if (sensor.isAccelDataReady()) {
        AccelData a;
        sensor.readAccel(&a);
        Serial.print(a.x, 4); Serial.print('\t');
        Serial.print(a.y, 4); Serial.print('\t');
        Serial.println(a.z, 4);
    }
}

Open the Serial Plotter at 115200 baud and tilt the board — three traces should track gravity. If the sensor isn’t found, see Troubleshooting. (You can also confirm the chip ID directly: sensor.getDeviceID() returns 0x48.)

Recording an ECG

Attach the 3-electrode cable as shown above, then load 02.ECGHeartRate. A single call — configureForECG() — switches the chip into vAFE-only mode with sensible ECG settings (differential input, 1 GΩ impedance, 4× gain, 800 Hz high-performance mode with a 45 Hz low-pass filter):

#include <Wire.h>
#include "ProtoCentral_ST1VAFE3BX.h"

ST1VAFE3BX sensor;

void setup() {
    Serial.begin(115200);
    Wire.begin();
    if (!sensor.begin()) { while (1) delay(1000); }
    sensor.configureForECG();         // differential, 1 GΩ, 4× gain — vAFE-only mode
}

void loop() {
    Serial.println(sensor.readVAFE_mV(), 3);   // ECG amplitude in millivolts
    delay(4);                                   // ~250 Hz
}

Open the Serial Plotter and you should see the ECG waveform with clear QRS complexes once the electrodes settle (give it a few seconds). The full 02.ECGHeartRate example adds a baseline filter and a simple heart-rate estimate printed as CSV.

Visualizing with OpenView

For a richer real-time view, 03.ECGOpenView streams the ECG in the packet format used by ProtoCentral OpenView — our cross-platform viewer. Flash the example, open OpenView, and watch the live trace without writing any plotting code.

Going further — on-chip motion AI

Three examples show the ST1VAFE3BX’s Machine Learning Core in action:

  • 04.MotionIntensityMLC — the on-chip MLC classifies motion intensity (0–7) using the official ST UCF, with no MCU-side processing.
  • 05.SmartRecorder — a context-aware recorder: the MLC watches for stillness, arms the vAFE only when the subject is still, streams ECG over OpenView, then re-arms.
  • 06.HeartRateOnStill — a text-only variant of 05 that drops into ECG and prints heart rate when the subject is still.

These are a great starting point for low-power, activity-aware biopotential designs.

Troubleshooting

“ST1VAFE3BX not found” / nothing on the I²C scan
Confirm VCC (2–5 V) and GND, check that SDA/SCL aren’t swapped, and make sure the JP2 jumper selects I²C (not I³C/SPI). The default address is 0x21 (SA0 → VCC); use sensor.begin(0x20) if SA0 is strapped to GND.

Flat or extremely noisy ECG
Check that the 3-electrode cable is fully seated in the 3.5 mm jack and that all three electrodes have good skin contact (clean, slightly moist skin; fresh pads). Keep the subject still while the baseline settles, and run the host on battery — mains-powered hosts inject 50/60 Hz hum.

Accelerometer reads zeros after running an ECG sketch
That’s expected — the chip is in vAFE-only mode. Call disableVAFE() (or re-run an accelerometer example) to return to accelerometer mode; the two streams are mutually exclusive.

QWIIC device not detected
Make sure the QWIIC cable is fully seated and not reversed, and that your host runs 3.3 V I²C logic.

Resources

Licenses

  • Hardware: CERN-OHL-P v2 (Permissive)
  • Software / Arduino library: MIT