-
• #2
Hi, that's great - glad you like it!
Just to respond...
app lists slow to scroll (with a long list of apps). Maybe add a wraparound?
If you install the latest version of the launcher it should wrap - has done for a few weeks I think :)
display too dim in direct sunlight (needs shade to read)
heart monitor - need to stop running to get any readingYes, those are a shame - if there's a v2 it's definitely something I'll be looking at fixing :)
could not get Gadgetbridge (off F-Droid) to "Find lost device" or show messages from "Weather notification" (blue circle + bluetooth sign are on)
The 'lost device' may need fixing, however weather does work.
Are you sure you had the 'weather notification' installed on Android? https://github.com/Freeyourgadget/Gadgetbridge/wiki/Weather
-
• #3
Display's not a dealbreaker, given hackability!
I see teh flashed Launcher is 0.01 - I am trying to update... unlike puck.js which always appears in Chromium BT devices list, the watch's BT seems more finicky.
I believe I got the right "Weather notification" app 0.3.10, which does keeps a notification in statusbar of the phone.
I've just got Gadgetbridge Debug to show a Test message (the font is terribly small!!!) on bangle.js (and watch display shows on disconnect) so it must be something on GB/Android/Weather end... I refresh Weather, the phone notification ("Build-in skin") changes but no text on the watch.
-
• #4
I think I missed somewhere the part where I had to install Weather on banglejs too. (I also just realized I can see Git/Watch app version diff) I got the icon to show!
-
• #5
Other fitness trackers seem to use a pulsed light (I think to get a reference light level, so ambient light change might have a smaller effect?), the Bangle seems to use an always on LED. And saw some chips use accelerometer data too to try to compensate for movement.
Haven't checked the hearth rate monitor's code (no free time, so let's just browse the forum...). Anybody with some free time to read papers and do some magic? :) -
• #6
Glad you got weather working!
unlike puck.js which always appears in Chromium BT devices list, the watch's BT seems more finicky.
It definitely doesn't have quite the same Bluetooth signal strength as the Puck, that's for sure.
Unfortunately the issue with the heart rate monitor seems to be something that can't be solved in software - although I'm pretty sure some work could be done to make the 'confidence' rating more reliable.
Basically the usually work with two photodiodes for different wavelengths of light - one the blood absorbs, one that blood doesn't. Modern stuff just takes those two signals, converts them to digital, and does some calculations on them to compare the two. It can turn the LED off when not in use, which is why you get the pulsing.
Better systems use three wavelengths of light and do some really fancy stuff - and can work out blood pressure and stuff like that. The better sensors do all the calculation on-chip so you basically just read heart rate right out as well.
On Bangle.js you have the two sensors, but there's an analog comparator that compares the two and sends a signal back that's the difference between the two. When you move around, you get wildly different signals from the diodes, and that then actually charges/discharges some capacitors which change the comparator's sensitivity. It takes a significant amount of time for them to discharge enough to produce a useful signal again - if it were a purely digital system you'd be able to account for the movement in code, but in Bangle.js you're stuck.
I guess potentially you could replace the big capacitor with a smaller one, then try and do some filtering in software - it's not something many people will be up for trying though!
-
• #7
When you move around, you get wildly different signals from the diodes
why?
I tried HRM in total darkness; it feels like lateral movement causes swings - so are you saying area absorbing blood changes due to movement?Could time series of of HRM measurement be smoothed (with exponential moving average for example) ?
-
• #8
Could time series of of HRM measurement be smoothed
That's kindof what we do - I use correlation - so basically I store a bunch of HRM values and then compare them with themselves shifted by a certain amount. When the heart rate matches you find there's a massive spike in correlation, but any short-term spikes of noise from moving don't correlate so don't really affect the result.
The issue is when you move your arm it knocks the whole sensor off and it takes a few seconds to start producing any value at all. If you install Heart Rate Monitor from the app loader you'll see the exact raw values that are coming in from the sensor - you can see how any large movements knock it out and it takes at least a second, if not more, to recover.
(Note the Heart Rate Monitor app doesn't actually use the Bangle's own HRM calculations because it can't sample the underlying hardware at the same time as Bangle.js is trying it, they're done in JavaScript and don't use the correlation)
I'd tried a few options to get to this stage but I'm totally open to using a better algorithm if someone finds one that works better :)
-
• #9
Other fitness trackers seem to use a pulsed light
I guess it is because of power saving, led draws a lot so you light it up only when it really matters.
As for the accelerometer movement compensation (again just my guess) maybe they use it just to know which data they should discard and which is safe to use, which is kind of compenstation.
-
• #10
Ok, so it's always more complex :)
Thanks for the explanation about the automatic analog sensitivity tuning, that explains what can be seen on the HRM app!
Got bangle.js week ago. Overall good experience for wearability.
Remarks (firmware v2.05):
+++ near week of power! nice!
M