A Puck.js is a 36 mm disc with a CR2032 coin cell, made by Espruino, that runs a JavaScript interpreter and talks Bluetooth LE. The reference is espruino.com/Puck.js.

What it has

Puck.js v2.1
ChipnRF52832, 64 MHz Cortex M4
RAM64 kB, for code and data together
Flash512 kB; about 40 kB free for the Storage module on the standard firmware, about 96 kB on the minimal one
Accelerometer and gyroLSM6DS3TR-C, with a step detector, movement, significant movement and tilt detection at about 40 to 50 uA
MagnetometerMMC5603NJ: a field reading, or a reed switch (a door, a drawer)
TemperaturePCT2075TP, calibrated
Lightread from the red LED, uncalibrated, 0 to 1
Alsobattery level, a button, red, green and blue LEDs, IR transmit, NFC tag, capacitive sense on D11, a MOSFET output

What it can keep: hourly step counts as 2-byte numbers are 48 bytes a day, so 40 kB holds about two years of them; per-minute counts about two weeks. Raw accelerometer readings fill it within minutes.

Memory for code

On firmware 2v29 a Puck.js v2.1 has 2,630 memory blocks for code and data together, 2,562 free after reset() (measured 2026-10-20). Espruino keeps a function’s source in RAM, so what code costs is set out in Firmware Build.

Power

Espruino’s figures: about 3 uA doing nothing, 40 uA advertising, 600 uA while connected, 1 to 2 mA per lit LED, about 350 uA with the accelerometer streaming at 12.5 Hz, and 40 to 50 uA with its own step, movement or tilt detection. So a module lets the accelerometer do the detecting, keeps the LEDs dark, and stays disconnected.

Firmware

Updated over Bluetooth with Nordic’s Device Firmware Update app on a phone: the stable espruino_2vXX_puckjs.zip from espruino.com/Download, the Puck put into bootloader mode by holding its button while the battery goes in (the green LED stays lit), then the app’s device DfuTarg. The Web IDE’s flasher was unreliable on Windows. A v2.0 must never take firmware 2v04 or older; a v2.1 is unaffected.

Power is the battery: there is no switch. Taking it out and putting it back resets the Puck, and anything not saved to flash is gone.