Skip to content

Latest commit

 

History

History
201 lines (140 loc) · 6.77 KB

File metadata and controls

201 lines (140 loc) · 6.77 KB

Hackster draft v2 — private editorial source

This file is the source for a non-public Hackster draft. The Story section is the paste-ready article; the release checklist at the end is private editorial material. Keep the Hackster project non-discoverable until real-hardware photos/video and final release QA are approved.

Project fields

Name

PulseTerrain Turns a StickS3 Signal into Live 3D Terrain

Pitch

StickS3 streams raw samples; Chrome turns them into orbitable FFT terrain and links the harmonics.

Difficulty

Intermediate

Estimated build time

1 hour

License

MIT

Primary tags

  • Data Visualization
  • Signal Processing
  • Bluetooth Low Energy

Hardware/platform discovery

  • M5Stack StickS3
  • PulseSensor

Software discovery

  • UIFlow2 / MicroPython
  • Google Chrome / Web Bluetooth

Cover image

docs/images/pulseterrain-live-hero.png

This is a cropped real connected-session capture with the raw PulseWave, STREAMING state, orbitable terrain, dotted harmonic guides, and the analysis cue visible together. Use it as the lead image; keep the deterministic synthetic-preview cover only as a clearly labeled rendering preview.


Story

Turn your pulse into a landscape

Touch the PulseSensor and the raw PulseWave appears first. Beneath it, a new ridge rises at the front of the terrain about every 150 milliseconds. Older ridges drift into the distance. Frequency runs left to right, amplitude becomes height, and time becomes depth.

Drag to orbit the terrain. Modifier-scroll to zoom. Dotted teal paths connect the strongest fundamental candidate to each harmonic the signal actually supports. A label directly beneath the terrain leads to the evidence tables.

PulseTerrain live connected-session 3D FFT terrain

The whole system

PulseTerrain architecture

The StickS3 stays wonderfully boring: sample GPIO2 at 250 Hz, batch the raw 12-bit readings, and send them over Bluetooth Low Energy. Chrome gets the fun job: draw the raw feed, buffer the samples, apply a Hann window, run the FFT, draw the 3D history, and test significant peaks near 2×–5× the strongest candidate.

Qty Part Job
1 M5Stack StickS3 Sample and relay the raw signal
1 PulseSensor Kit Supply the analog pulse waveform

You also need three direct wire connections, desktop Chrome, and UIFlow2 v2.4.9 on the StickS3. There is no browser package to install and no build step.

Wire the PulseSensor

Disconnect USB power before wiring.

PulseSensor lead StickS3 pin
Signal / purple G2 / GPIO2
VCC / red 3V3
GND / black GND

Use 3.3 V only. Do not connect the red lead to 5 V.

Load it and connect

Install mpremote, clone the repository, and copy the relay as main.py:

python3 -m pip install mpremote
git clone https://github.com/WorldFamousElectronics/PulseTerrain.git
cd PulseTerrain
python3 -m mpremote connect auto fs cp sticks3-relay.py :main.py

Reset the StickS3; it advertises automatically. Serve the single browser file:

python3 -m http.server 8127

Open http://localhost:8127/index.html in desktop Chrome. Click Connect StickS3, choose the device, and rest a fingertip lightly on the sensor.

The terrain takes about eight seconds to fill its first FFT window. After that, a new row appears roughly seven times per second.

Read the terrain

Visual Meaning
Left → right Frequency from 0–4 Hz
Height Normalized FFT amplitude
Front → back Recent analysis history
Amber / teal / violet Fixed frequency bands for visual organization
Dotted f0, 2f5f paths Candidate fundamental and independently confirmed harmonics

The palette makes the terrain easier to read; it does not identify the source of a peak. The dotted paths are stricter. PulseTerrain uses the single strongest peak as its only f0 candidate. A multiple appears only when a nearby peak clears both the noise floor and a minimum amplitude relative to f0.

PulseTerrain live harmonic spectrum and tables

Panel What it answers
Spectrum Exactly where are the strongest peaks?
Harmonic series Which multiples passed the test?
Top five peaks What is strong, related or not?
Classification Which top peaks belong to the series?
Possible source What might occupy that frequency band?

Possible-source labels such as heart-rate fundamental, cardiac harmonic, respiratory modulation, motion, and sensor noise are cautious frequency-band heuristics. They are not validated measurements or diagnoses.

The BLE packet is deliberately small

<uint32 first_index><uint16 count><uint16 rate_hz><uint32 t_us>
then count × uint16 little-endian samples

The absolute first-sample index lets the browser detect a gap instead of silently compressing time when a notification is missed.

Try the view without hardware

For layout review and documentation, add ?demo=1 to the URL. PulseTerrain labels this as synthetic preview and generates the same deterministic signal on every run. It is a rendering aid, not physical-sensor evidence.

Limits

PulseTerrain supports one BLE connection at a time. It does not record or upload sensor data, and it does not report a validated heart rate, breathing rate, accuracy, or diagnosis. It is an educational signal visualization, not a medical device.

PulseTerrain is part three of the StickS3 series: PulseLink puts the pulse wave on the wearable screen, Tab5 Remote Display moves it to a touch dashboard, and PulseTerrain turns the raw spectrum into a landscape.

Credits

PulseTerrain is a World Famous Electronics LLC / PulseSensor project. The terrain renderer descends from the public PPGFFTGAMEENGINE project. The StickS3 BLE packet and wiring lineage comes from PulseLink. The restored harmonic detector, dotted markers, classification table, and possible-source table come from the reviewed Pulsewave Harmonics prototype documented in this repository's PROVENANCE.md.

Private release checklist — do not paste into the Story field

  • Use the cropped real connected-session hero and analysis images.
  • Add one bright wiring photo with the three leads and StickS3 labels visible.
  • Add a 15–25 second video: connect, build terrain, orbit, zoom, then scroll through the spectrum and tables.
  • Attach sticks3-relay.py as MicroPython and index.html as HTML.
  • Verify the public GitHub release and every Hackster link.
  • Keep M5Stack StickS3 and PulseSensor in the Hackster parts list so platform and product discovery resolve correctly.