Bangle.js

From Personal Science Wiki
Jump to navigation Jump to search
Tool Infobox Question-icon.png
Related topics Heart rate, Location tracking, Activity tracking

Linked pages on this wiki
Projects (0),

People (0)

The Bangle.js[1] is the name of a series of open source smartwatches that are made by Espruino under the leadership by Gordon Williams, who also designed the Puck.js open source hardware that can be used as a One Button Tracker.

A unique feature of the Bangle.js watches is that users can program their own apps for the devices in the JavaScript programming language and can deploy them on their own watch without having to go through any closed app store model. Furthermore, as the Bluetooth connection for the devices work through web-browser based connections, they all happen client-side, so no data is send to third parties.

Espruino also offers a free and open source appstore-like website for Bangle.js devices where users can release their own software.

Devices[edit | edit source]

A Bangle.js V2 next to an Apple Watch (Series 6, 40mm version)
A Bangle.js V2 (left) next to an Apple Watch Series 6 (right, 40mm version)

As of today there have been two versions of Bangle.js smartwatches, the original Bangle.js – released in 2020 – and the Bangle.js 2 which was released in 2022. The development for both devices was financed through crowdfunding.

Both versions of the Bangle.js have very similar sets of features in terms of sensors that are of interest for self-research, but the form factor differs drastically between both devices: The first generation came in an oversized, round housing with a two-zone touch screen and three hardware buttons. The second generation of the Bangle.js is substantially smaller, comes in an Apple Watch-like rounded-corner rectangle shape with a full touch screen and a single hardware button.

Features[edit | edit source]

  • Heart rate monitor
  • GPS receiver
  • 3-axis Accelerometer
  • 3-axis Magnetometer
  • Vibration motor
  • Air Pressure/Temperature sensor (on Bangle.js v2)
  • Touch screen
    • Bangle.js v1: 240x240 pixel, 16 bit LCD with 2 zone touch
    • Bangle.js v2: 176x176 pixel, 3bit color LCD with a full touch screen
  • Water proof/resistant
    • Bangle.js v1: IP68 (up to 10 meter)
    • Bangle.js v2: IP67 (up to 1 meter for 30 mins)

Documentation[edit | edit source]

The websites for the Bangle.js 1 and Bangle.js 2 provide a detailed documentation on how to use the different features that come on-board the devices out of the box, as well as tutorials and documentation for how to program the devices to access the sensors in different ways.

Using the Bangle.js[edit | edit source]

Collecting heart rate and step data[edit | edit source]

For the v2 of the Bangle.js, a Health Tracking app (see source code) comes pre-installed on the device. It logs health data to the device every 10 minutes. The data can be downloaded through the Bangle.js App Loader. By default the heart rate tracking is not enabled, instead it will record all HR measurements made by other apps on the device. Alternatively, the automatic in-health-tracking heart rate recording can be enabled in the app settings.

Using gesture recognition[edit | edit source]

There is currently no 'default' app that can handle the training of gestures or keep record for when gestures occurred. The Gesture Test app in the Bangle.js App Loader comes with some pre-trained models to predict swiping left/right, clapping and a few other gestures. Paul Cockrell made a small demo web page which you can use to train models for your own gestures, but requires staying connected to the website.

Availability[edit | edit source]

The Bangle.js is available directly through the Espruino shop which ships the devices from the UK for around 75 GBP. As deliveries to outside the UK incur taxes and customs duties, the website also lists some international distributors that are located within the European Union and the USA.