Avatar for Gordon

Gordon

Member since Sep 2013 • Last active Mar 2024

Most recent activity

  • in General
    Avatar for Gordon

    Ok, great!

    There's no physical serial connection to the watch so you have to do everything through Bluetooth LE normally, but there are some examples of using bluetooth and that 'Nordic UART' protocol (effectively serial) from various programming languages at: https://www.espruino.com/Interfacing#blu­etooth-le

    The SWD (serial wire debug) pins (https://www.espruino.com/Interfacing#blu­etooth-le) are for super low level stuff (if you start changing the C code of the interpreter) and while there is such a thing as serial-over-swd it's not something Bangle.js supports yet as it's a bit of a pain to set up!

    The watch doesn't have a speaker but it can make some very feint sounds using the vibration motor. I'm afraid it can't pair with Bluetooth headsets either - generally they all use classic Bluetooth and not Bluetooth Low Energy.

    Generally when messages arrive and alarms go off, the pattern of buzzing is configurable though. If the buzzing is hard to notice you might find changing the pattern to something like 3 long buzzes makes it a lot more obvious

  • in Projects
    Avatar for Gordon

    That's excellent! Really glad hackster picked it up too!

  • in Tutorials
    Avatar for Gordon

    unfortunatly i tried the approach and was unsucessful,

    So I'm not sure I understand - what went wrong? Did the page that was in nfcURL load ok, and at the time the Puck was scanned?

  • in Tutorials
    Avatar for Gordon

    Hi - I think probably your best solution is to put literally just NRF.nfcURL('https://www.yourwebpage.com'­); on the Puck.js

    Then, the Student's device will load that webpage from the server - and that would trigger your PHP to run which could record the current time.

    To stop the chances of a URL getting shared or reloaded, you could maybe do:

    var counter = 0;
    NRF.nfcURL('https://www.yourwebpage.com?­id='+counter);
    
    NRF.on('NFCoff', function() {
      counter++;
      NRF.nfcURL('https://www.yourwebpage.com?­id='+counter);
    });   
    

    Note we do it on NFCoff - which will happen when the phone is away, so there is no 'race' between preparing the NFC packet and having it read.

    That way your PHP could discount any IDs that were the same, and it also reduces the chances of the page getting cached and your PHP not getting run

  • in Puck.js, Pixl.js and MDBT42
    Avatar for Gordon

    I'm afraid I don't understand the question - are you trying to write some code that runs on an Espruino device that disconnects it from the currently connected computer when a button is pressed?

    Or are you trying to do something else?

  • in Bangle.js
    Avatar for Gordon

    Ok, thanks - I'll send you an email in a few minutes

  • in Bangle.js
    Avatar for Gordon

    Hi!

    I've just found out that over the last 2-3 weeks (12th Feb onwards) we may have sent out a handful of Bangle.js watches that didn't have a 'Factory Reset' performed.

    On these, when you first boot them, you might see a Bangle.js logo (like the picture below) instead of the Welcome screen.

    To fix this, you need to hold down the watch's button for around 10 seconds - the watch will reboot and you'll see a message with === animating across the screen. Keep holding the button until the recovery screen (shown below) appears and then let go of the button.

    Now scroll down to Factory Reset using the touchscreen, tap it, and then tap Yes, and around 20 seconds later your Bangle.js should have reset and started to show the Welcome screen.

    Sorry for the inconvenience - a software update subtly changed how we had to prepare the watches, and a few slipped through without the reset being done, although they were all still tested and fully functional.

    Note: if the backlight goes off in the recovery menu the screen will be locked, and you have to tap the button again to light the screen and unlock before you can use the touchscreen.

  • in General
    Avatar for Gordon

    Argh, I'm sorry about this. It looks like a few weeks ago I updated the firmware we put on the Bangles so it automatically booted to the recovery menu and had a way to perform tests in it, but at that point the person preparing the Bangles started using that menu to trigger testing instead of our usual method, and so the factory reset didn't get done automatically.

    We've just checked and it looks like it only happened to a few Bangles, but I'm afraid yours was one of those. Your Bangle should be absolutely fine, it's had the tests done, but unfortunately it didn't have that factory reset step (which you had to do yourself) - so I'm really sorry about that.

    On the charger front - did your Bangle have a bit of black tape over the middle two contacts of the charge connector when you got it? They should usually have that, and that stops the corrosion from happening (it's caused by a small voltage on the 2rd pin from the right, which is for low level programming).

    It's usually stuck on pretty well but it is possible that it has come off. If it isn't there it'd definitely be worth covering it up again as without that pin covered, the other pins do start to corrode (info here). It's unfortunate but it's a side-effect of having those SWD debug pins available on the back so you can completely change the software on the watch if you want to.

    And good news on the Bluetooth - that sounds expected. The watch will pair with the OS, but not in its default state.

    The issue is that Bluetooth Low Energy doesn't have a generic Communications Port profile (unlike 'classic' Bluetooth), so Windows in particular doesn't think it's a device it can do anything with, and so doesn't show it in the pairing list.

    Bangle.js implements something called 'Nordic UART' which is about as close to a standard for a communications port as you get in Bluetooth LE.

    For developing apps, I'd still recommend https://www.espruino.com/ide/ - yes, it's in the browser, but it does 'just work' and is pretty friendly for developing normal-size apps.

    However if you do want to use command-line, there is an espruino package available from NPM which handles communcations from the CLI: https://www.npmjs.com/package/espruino

    On Linux it should work nicely once you use the line mentioned here to give Node.js bluetooth priviledges, or Windows can be a bit tricky to get Bluetooth working with on the command-line so you can leave a browser window open (on that, or another device) to get the bluetooth communications and you can then use the CLI to communicate through that: https://www.npmjs.com/package/espruino#w­eb-ide-remote-connection

Actions