Im currently working on a smart watch based off the puck, using a sharp memory display from Adafruit. A Droidscript app connects to the watch sending over text and phone calls, buzzing when received. Also sends and receives data to adafruit.io and maker.ifttt.com. Waiting very patiently for the minimal bluetooth board supposedly coming out this month, so i can add a lipo instead of using the coin cell.

Current working features:
Time, Date
Text displays message on screen
Calls show number
Sends battery once a minute to Adafruit.io
Receives temperature data from Adafruit.io
Buzzes and displays icon when disconnects from phone
Control over Hue lights with maker.ifttt

The coil isn't installed yet. If I use the puck ill have to remove the coin cell holder and button, plus add a voltage regulator. I'm trying to hold off for the next "bare bones" BLE espruino thats possibly coming out this month. The watch case is big enough though... I think.

Unfortunately my 3d printer only supports PLA. I am experimenting with Proto Pasta graphite pla on the bezel connected to the capsense pin on the puck. It works but the main problem seems there isnt a setWatch() for capsense, so I run a constant fast interval.

What you can do to conserve energy, you have a slow and a fast interval... (How fast is your's now?).

The first is like the 'sleep' or 'idle' mode... as low as 1/2..1 full sec... which when 'touched' goes into high gear, the fast mode and stays there to respond snappy, until for a while nothing happens anymore 'for a while' and you go back 'sleep/idle' mode.

So I couldnt wait for the new board to come out before adding wireless charging. This weekend I removed the battery holder and button from the puck, added a lipo battery, 3v regulator and induction charger. The case is about 2mm thicker than I wanted but it still looks good. Its about the same size if not a little smaller than my wife's Garmin Fenix 3.

The main script only updates once a minute to update the time, battery and temp. I use Bluetooth.on(data) and setWatch() to get notifications and access menus. When a text pops up it sets an interval to watch the capsense every 10 ms, and a setTimeout after 30 secs. It actually works pretty good, a text comes though, I tap the bezel then goes back to the main screen or waits 30 secs then goes back.

If I'm honest I have some prototype bluetooth boards here but they're not actually much smaller than the Puck - they just have a bunch more IO on them.

Did you consider coming up with a custom PCB? I'll be selling pre-programmed Bluetooth modules really soon, and I've already published the Eagle CAD footprint. It doesn't need anything apart from the correct voltage to work. You could probably squish a lot of what's needed onto one board?

The previous photo doesnt have the battery in it. When I open up the case again Ill take another pic. The layout inside goes, coil with puck fitting perfectly in the middle, button circuit board with n2222 transistor for the motor and 78l33 voltage regulator on the right side, adafruit trinket lipo backpack, lipo on top of the puck then the screen.

After removing the battery holder from the Puck it actually seems to fit pretty well. A custom PCB sounds fun though! Ill start looking into it.

When I started thinking about this project originally I thought of using the Adafruit M0 trinket plus BLE module. I don't think it would have turned out. The Puck with bluetooth programming along with the incredible battery life all on a tiny board is just amazing. I don't think I could have done this project without it.

Those Sharp Memory LCDs are amazing though. I just wish they were a bit cheaper (especially the big ones). I guess if you did a custom PCB you might be able to mount the LCD directly. The adafruit board has a level converter that won't be needed because you're running at 3v, so you pretty much just connect the LCD straight to the module.

The whole capacitive sense thing is a bit of a pain - it's currently done in software. I had a hardware solution but it wasn't much better because the high speed oscillator had to be kept running (= lots of power draw). There may well be a better solution though - in fact it may be possible to use the low level interface library (http://www.espruino.com/NRF52LL) to get what you want direct from JS.

If you find out a low-power way to do it I'm definitely up for trying to implement it inside Espruino though.