Software NEXT firmware

Streaming to OpenView 2

Last updated Jul 10, 2026

OpenView 2 is the desktop application for viewing every HealthyPi 5 channel at once — ECG, respiration, PPG, and the computed vitals — live over USB, with optional CSV logging.

This is the most common setup for development, signal validation, and lab work.

Requirements

  • HealthyPi 5 (any kit)
  • USB-C cable (not included)
  • Computer running Windows, Linux, or macOS
  • Firmware that streams the OpenView packet — the production firmware does this out of the box

Steps

  1. Download OpenView 2 for your platform:

    Platform Download
    Windows Download for Windows
    Linux Download for Linux
    macOS Download for macOS
  2. Extract the zip and launch the OpenView 2 application.

  3. Pick the board. On launch, a dialog asks for the board and serial port.

    OpenView 2 launch dialog asking for board and serial port

    OpenView 2 supports several ProtoCentral devices — make sure HealthyPi 5 is selected from the board dropdown.

    OpenView 2 board dropdown showing supported ProtoCentral devices

  4. Select the serial port the HealthyPi 5 is connected to and click Start. Signals begin streaming in real time.

    OpenView 2 streaming ECG, PPG, and vitals from HealthyPi 5

  5. To save the data to disk, click Start Logging during a session. When you click Stop, the data is written out as a CSV file on your computer.

    OpenView 2 logging controls

The Arduino Serial Plotter cannot show this stream

OpenView carries a multi-channel binary packet over USB-CDC. The Serial Plotter and Serial Monitor expect newline-delimited text and will render it as garbage. That’s the one thing the Serial Plotter doesn’t do — for single numeric channels (ECG alone, PPG alone) it’s exactly the right tool, and the teaching sketches 01–07 use it.

Streaming from your own sketch

One line turns the stream on:

#include <FreeRTOS.h>
#include <Protocentral_HealthyPi_5.h>

void setup() {
  HealthyPi5.computeVitals();    // optional: HR / SpO2 / respiration on-device
  HealthyPi5.streamOpenView();   // 29-byte OpenView 2 frame over USB-CDC
  HealthyPi5.begin();
}

void loop() {}

With computeVitals() enabled, the stream carries the DSP-computed heart rate, SpO₂ and respiration rate. Without it, it carries the raw per-sample values straight from the analog front-ends.

If you want to see the packet built byte by byte — without the dual-core runtime — read examples/Tutorials/08_OpenView_Stream. It’s a plain single-core sketch that emits the identical 29-byte frame.

Keep debug output off the USB port

The firmware’s 1 Hz HPI_INSTR telemetry goes to Serial1 (UART0, GP0/GP1), not USB. If you route text to the same Serial that carries the binary stream, OpenView will see corrupt frames.

Host commands

The production firmware also listens on the USB RX line for a small command plane (HealthyPi5.enableCommands()), framed as AA 55 | type | len | payload | xor:

Command Effect
PING Acknowledged back to the sender
STREAM_START / STREAM_STOP Gate the OpenView stream
SET_NAME Set the device name (persisted)
SET_AUTOSTREAM Stream on boot without waiting for STREAM_START (persisted)
REC_START / REC_STOP Start / stop SD recording

persistConfig() saves the device name and auto-stream flag to the last flash sector, so they survive a reboot.

Next