Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pulse Duet

Pulse Duet is a DEVELOPMENT prototype for presenting two independent raw PulseSensor input channels together. The product idea is explicitly multi-sensor and multi-person: one sensor per participant, with both streams meeting on a shared display.

The published 0.2.6 checkpoint proves the electronics path only. It sampled two separate sensors facing open air, transported the remote samples over a local Wi-Fi/UDP link, and rendered synchronized outward sweeps on an M5Stack Tab5. It did not validate use on two people, sensor contact, heartbeat morphology, beat detection, BPM, physiology, channel accuracy, or medical use.

Pulse Duet outward sweep near the shared center

What this project is—and is not

Pulse Duet uses:

  • M5Stack Tab5: channel 1 on GPIO49 / ESP32-P4 ADC2 channel 0, plus the shared 1280×720 display.
  • M5Stack StickS3: channel 2 on Port.G2 / GPIO2 / ESP32-S3 ADC1 channel 1.
  • A Tab5-hosted, unauthenticated lab AP named PulseDuet-Lab; the StickS3 sends four raw samples per UDP frame to port 31337.
  • A 500 Hz target acquisition rate per input and a common 100 Hz, 2.4-second display timebase.

This repository does not contain the PulseLink Tab5 remote display. That is a separate one-sensor companion project preserved with frozen PulseLink in WorldFamousElectronics/PulseLink, on its tab5-remote-display branch.

Repository layout

  • tab5-overlay/: the five-file Pulse Duet overlay for a pinned M5Stack M5Tab5-UserDemo checkout.
  • stick-s3/: the standalone, verified ESP-IDF Wi-Fi/UDP sensor-node firmware.
  • scripts/prepare-tab5.sh: creates a clean, pinned Tab5 source tree and applies the overlay.
  • docs/VERIFICATION.md: sanitized known-working evidence and limitations.
  • docs/PRESENTATION.md: the deliberately short public-demo plan.

Private development history, unrelated experiments, device identifiers, recovery images, failure/rejected checkpoints, and internal archive material are intentionally not part of this public release.

Wiring

Use one PulseSensor per input:

Role PulseSensor signal Power Ground
Tab5 / channel 1 GPIO49 3.3 V GND
StickS3 / channel 2 Port.G2 / GPIO2 3.3 V GND

Confirm the exact M5Stack connector pinout before powering the hardware. Do not put 5 V on an ADC input.

Build

Both firmware targets were verified with ESP-IDF 5.4.2.

Prepare and build the Tab5 source:

./scripts/prepare-tab5.sh
source /absolute/path/to/esp-idf-v5.4.2/export.sh
cd .build/M5Tab5-UserDemo/platforms/tab5
idf.py build

Build the StickS3 source:

source /absolute/path/to/esp-idf-v5.4.2/export.sh
cd stick-s3
idf.py set-target esp32s3
idf.py build

These commands build firmware but do not flash a device. Always identify the chip and port before any write. This repository deliberately does not provide device-specific port names or a one-command flasher.

Known-working checkpoint

Version 0.2.6 passed a two-device open-air bench on 2026-08-07. Both ADC paths produced changing, independent raw ranges with zero ADC read errors; the StickS3 rejoined the Tab5 AP after reboot; and the Tab5 received valid frames and rendered one cyan leftward trace and one violet rightward trace. Measured delivery was not lossless. See verification details.

This is maker/development firmware, not a diagnostic instrument or medical device. Do not use it for health decisions.

License

World Famous Electronics additions are MIT licensed. The Tab5 overlay modifies MIT-licensed M5Stack source; see third-party notices.

About

Multi-person concept; verified two-sensor raw ADC bench for M5Stack Tab5 and StickS3

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages