Puck.js v2

by Espruino

The ground-breaking bluetooth beacon - An Open Source JavaScript microcontroller you can program and debug wirelessly.

Puck.js is an intelligent Bluetooth button. With the Espruino JavaScript interpreter on its internal ARM microcontroller, software can be uploaded, debugged and modified wirelessly from any modern computer or phone, making development of embedded devices significantly easier. It has built-in sensors, lights, infrared transmitter, GPIO, and can even control other Bluetooth LE devices.

This is version 2 of the popular Puck.js - with added accelerometer, gyro, FET, calibrated temperature sensor and improved Bluetooth signal strength!

Web Bluetooth

Control Puck.js from all major platforms using standard HTML and JavaScript. There's even an easy to use library to get you started.


No phone or hub needed

Puck.js is entirely autonomous. Press a button and it'll control other Bluetooth or Infrared devices within range, without the need for a phone app or hub


Lots of IO

Button, Magnetometer, IR & RGB LEDs, Temperature and light sensor, and a programmable NFC tag - Puck.js has everything you need out of the box!

17 IO pins are available (8 of which are on a 0.1" pitch), with PWM, analog, I2C, SPI and Serial so you can easily add your own hardware!

Check it out!

Human Interface Device

Puck.js isn't just beacon. It can be a Bluetooth LE HID device too - a keyboard or multimedia control. It can then create keypresses in response to external stimulii, which could be a button press, a door opening, even another Bluetooth device coming within range!


Infinitely customisable

Unlike many beacons that perform a fixed task, Puck.js executes JavaScript directly. It can be whatever type of beacon (Eddystone/iBeacon) you want, can automatically update what it transmits depending on external factors, and can even add custom services and characteristics.

But it gets better! Puck.js can connect to other BLE devices in 'central' mode as if it were a phone, and can even receive other devices' advertisements!

Proven Software

Puck.js uses the Espruino JavaScript Interpeter - now installed on tens of thousands of devices, with thousands of users.

With a common API between devices, you can move your project over to other Espruino platforms (like WiFi) with minimal effort!


With Web Bluetooth you can start programming straight out of the box - no wires or software required!

Try it out

Open Source

Puck.js's is Open Source (software and hardware), so it's easy for you to tweak its functionality or see how it works.

Follow on GitHub

Unique Hardware

Puck.js can measure light, temperature, magnetic fields and capacitance, can control Infrared devices, and has a clever tactile switch that turns the Puck into one big button.

And it does all this with a year-long battery life on a common CR2032 battery that costs $0.20!

More Information


  • Bluetooth Low Energy
  • Espruino JavaScript interpreter pre-installed
  • nRF52832 SoC - 64MHz ARM Cortex M4, 64kB RAM, 512kB Flash
  • ABS plastic rear case with lanyard mount
  • Silicone cover with tactile button
  • IR Transmitter
  • Built in thermometer, light and battery level sensors
  • Red, Green and Blue LEDs
  • NFC tag programmable from JavaScript
  • Pin capable of capacitive sensing
  • Weight: 14g in plastic case, 20g in packaging
  • Dimensions of cardboard box: 64mm x 62mm x 16mm
  • Dimensions of plastic case: 36mm dia, 12.5mm thick
  • Dimensions of bare PCB: 29mm dia, 9mm thick
Features Puck.js v2
0.1" GPIO 7
Magnetometer LIS3MDLTR
Accelerometer LSM6DS3TR-C
Temperature Sensor PCT2075TP (calibrated)
MOSFET Output 1x