Way to make bangle js waterproof (e.g. epoxy)

Posted on
  • Hello together,

    Do you have experiences making the bangle js more waterproof? I would even be willing to open it and glue it with epoxy, but I fear the button might be a problem.

    Thanks!

  • Hi - you can glue the little hole for the barometer (behind the top strap). That does have a membrane behind it but that won't put up with much water pressure.

    The button is a problem - there is a rubber o-ring in there but I have seen cases where people have gone swimming with the watch and water has got through.

    I guess one option might be to get a syringe of silicone grease and use it to force grease into the button assembly from the outside of the watch, which would hopefully fill up any potential holes. If you were willing to open the watch I guess you could do it on the inside too.

  • Hello @Gordon, thank you for your help.

    Would it be possible to fully glue the button and use the charging cable for turning on the watch. That's how manufacturers like xiaomi do it with their buttonless devices.

    Switching off would be done via software.

    The latter should be no big thing to code even for me. The buttonless switching on might be harder. At least for me because I mainly do high level programming and only have little assembler experiences from university.

  • Yes, it's definitely possible to do that - but you'd have to ensure you change the bootloader so it doesn't automatically sleep when power is applied... You can set the accelerometer to wake the watch up, but obviously many apps expect the button to be there so that it can be long-pressed to return to the clock face.

    It's all possible to work around though - apart from changing the bootloader by commenting out these lines I think you can do the rest in JS.

    Worst case if you 'brick' it you can reflash via the SWD connector on the back.

  • You can set the accelerometer to wake the watch up, but obviously many apps expect the button to be there so that it can be long-pressed to return to the clock face.

    The button is also used for watchdog to reboot the watch when things get stuck.
    What about gluing some plastic foil or rubber over the button and surroundings so that it will still work?
    Also I wonder if there are reed switches or light sensors small enough to fit instead of the button.

    And BTW the KX023 accelerometer can be set to detect and report single and double tap events (even from various directions) so that could be used to simulate button.

  • Also I wonder if there are reed switches or light sensors small enough to fit instead of the button.

    That's a very cool idea!

    If there were a reed switch (or would hall effect work?) that would be neat.

    The reading of the button for watchdog (and even the long-press app reload) is done in peripheralPollHandler where we read from the accelerometer.

    So for instance you could say if the watch is facing screen down, treat as a button press. And that would work ok - the chances of the watch being entirely level and facing straight down for over a second when you're wearing it are pretty small I guess.

    Something like that I could even add to the main firmware as a flag that you could turn on from JS

  • It might be possible to fill the button board cavity with silicone and have it malleable enough to still press the button and get a reaction. Would probably be a total loss if it does not work or the button needs to be replaced.

  • There is also some logic during reboot. With long pressing the button and then releasing it. In this phase the watch face down might be the best to simulate it.

    Is there any state when the watch is fully off or deep sleeping where we only have the button but not the accelerator?

    I am not familar with the boot order sequence of the bangle js 2. But as far as I understand there is no code before the bootloader that checks the button. And when the bootloader is running I have the button state and the accelerometer?

    That would make it possible to use the watch down logic during reboot.

    When the watch is fully bootet I would prefer some other method to simulate the button press like double tapping from the side. Any chance to make other apps think it was a button press without modifying them? I guess this would mean to change the firmware to feed the button state from the accelorator? But for my usecase I don't need many other apps so it might be ok without the button.

    Force reboot while the watch is running could be done by something like turning the watch face down plus three taps.

    In the first step I won't glue the button unless everything is working with the accelorator. So let's buy a bangle js 2!

  • Even though my idea with the waterproof watch might sound crazy, I believe that many people would like it. There are some comments here in the forum where people brigged their bangles. So I could even think there would be people willing to buy a button less waterproof bangle if it's natively integrated.

    Other buttonless smartbands use the detection of the charging state to wake up a deep sleeping band. Would it also possible with espruino to use the charging state during boot instead of the button press?

  • Is there any state when the watch is fully off or deep sleeping where we only have the button but not the accelerator?

    Yes, both off and softOff check the button only - but you could comment those out.

    Would it also possible with espruino to use the charging state during boot instead of the button press?

    Yes, it's just as easy as checking the button - and you could make that change for off/softOff I guess

    And when the bootloader is running I have the button state and the accelerometer?

    No, just the button. But you could add code (although you may struggle to then fit the bootloader in the allowed space)

    Any chance to make other apps think it was a button press without modifying them?

    Yes - it's mentioned already on the forum - I think in some of those threads about the button. You can execute any functions in global["\xff"].watches where pin==BTN

  • Would it also possible with espruino to use the charging state during boot instead of the button press?

    Yes, attached charger it is same gpio input as button, you just need to think what makes sense (including situation when you have completely empty battery and put it on charger to power on and charge). I have used this e.g. to allow entering DFU in bootloader only if charger is attached.

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

Way to make bangle js waterproof (e.g. epoxy)

Posted by Avatar for user158096 @user158096

Actions