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.
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.
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.
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.
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.
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.pyReset the StickS3; it advertises automatically. Serve the single browser file:
python3 -m http.server 8127Open 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.
| 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, 2f–5f 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.
| 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.
<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.
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.
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.
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.
- 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.pyas MicroPython andindex.htmlas 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.

