Watch.js(unofficial)

Posted on
  • 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

    Future work:
    Smaller espruino board
    Lipo and wireless charging
    Cancel incoming calls
    Respond to text messages


    4 Attachments

    • Webp.net-resizeimage (1).jpg
    • Webp.net-resizeimage (2).jpg
    • Webp.net-resizeimage.jpg
    • Webp.net-resizeimage.png
  • Cool work!

    I see the induction charging... is that already in place? May be a micro power harvesting with a Peltier element could do something too... Have to look into what's available...

  • 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.


    1 Attachment

    • coil.jpg
  • ...if not, there is always the option of: re-3d-print... ;-).

    Do you use ABS for that? ...you can shiny it up by dipping it into Aceton... or expose it to some vapors... it also increased strength incredibly (except you already use filaments w/ carbon fiber).

  • 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.


    1 Attachment

    • Webp.net-resizeimage (4).jpg
  • 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.

  • Looks great!

    I notice in a previous post's pic that the battery did not fit into the induction charger coil.... but obviously puck fits. So the lipo is now under the coil and puck?

    Next to the lipo, is there not some space left where you could place your additional electronics? ...may be on a different board...

    No matter what, it turned out great!

  • Wow, that's absolutely awesome!

    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.

  • Yes, it looks like everything is pretty cosy in there!

    What font are you using for the display? Is it just the vector one?

    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.

  • Im using vector for time/date and Font8x16 for temp/battery. I drew out four battery icons, 100%,below 90%,50%, and 10%.

    It also shows in the middle if bluetooth is connected or not, "!" for not connected "<>" for connected.

    Here's the most current layout I have right now.


    1 Attachment

    • Webp.net-resizeimage.jpg
  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

Watch.js(unofficial)

Posted by Avatar for Dan.js @Dan.js

Actions