Saltar al contenido / Skip to content
flink;
about Idea lab

Watching my heart beat

A few weeks ago I started playing with something we carry around all day and almost never look at: our heart. I wanted to see it. Not as a number on a watch screen, but as something alive that pulses.

How it works

The sensor is a Polar H10 chest strap, the kind people train with. It speaks Bluetooth Low Energy and publishes heart rate over the standard heart-rate service, so anything that speaks BLE can listen in.

On the other end there's an ESP32-C3 SuperMini that finds the strap, subscribes to those notifications and pulses a 16-LED WS2812 ring in red, with a period of 60,000 / BPM milliseconds. While it's still looking for the sensor, the ring “breathes” in cyan, Iron Man arc-reactor style, so you can tell it's alive even before there's a heartbeat to show.

  • ESP32-C3 SuperMini (BLE, Arduino + NimBLE)
  • 16-LED WS2812 ring, with brightness capped to spare the battery
  • A 1000 mAh LiPo and a protected USB-C TP4056 charger
  • A 3D-printed box in matte black PLA

The box

It's three parts: the base, the lid and the ring holder. The boards clip onto the lid with their components facing up, each USB-C port peeks out through its own slot (the ESP32 at one end, the charger at the other) and the lid snaps shut, no screws. The holder has a channel for the ring and two claws that hug the H10 strap itself, so everything sits on your chest. It prints without supports.

Drag to rotate: the base with the battery, the open lid with the ESP32-C3 and charger clipped inside, and the LED ring on its holder. The boards are simplified stand-ins.

Download the STLs (matte PLA, no supports, in the file's orientation):

The code

A single Arduino sketch. Board ESP32C3 Dev Module with USB CDC On Boot enabled, and two libraries: NimBLE-Arduino 2.x and Adafruit NeoPixel. The ring goes on GPIO10.

What I learned

The board and the charger share the 5 V rail, so you have to unplug the battery before plugging in the ESP32's USB: otherwise USB can push current back into the battery. And the ring's brightness ended up at a fraction of the max: 16 LEDs at full blast drain the battery in no time, and you don't need to blind anyone to see a heartbeat.

An honest disclaimer: this is a toy for seeing a body signal, not a medical device. It doesn't diagnose anything; it just lets you see something that's always there. ❤️🤓

Originally published on Instagram