-
As far as I understand what you are saying, the driver is just an implementation of the I2C protocol, and you have reverse-engineered it. Quite an achievement without a datasheet.
Fortunately as I mentioned there is also the stuff found on github with C source and headers that describes registers but it is combined effort, yes, before this appeared there already was some VC31 reverse engineering done by @Gordon, also the source in Espruino tree regarding Bangle 2 is all his. This watch was independently discovered by more people so some collaboration is here https://hackaday.io/project/175577-hackable-nrf52840-smart-watch , the Q3 is a successor of Q2 https://hackaday.com/2020/01/30/sma-q2-smart-watch-is-completely-hackable/
the reason why you do not want to use it is because it's not open sourced?
cannot talk for Gordon and Bangle.js but yes, I think it is better to have one developed by community as the library is kind of black box and I hope over time we can have better one anyway like with the step counting
Hi @fanoush, I have followed your work closely in the past. I can see that this is a collaboration among the best experts in reverse engineering watches there are around 😀!
As far as I understand what you are saying, the driver is just an implementation of the I2C protocol, and you have reverse-engineered it. Quite an achievement without a datasheet.
As for the higher level library, the reason why you do not want to use it is because it's not open sourced?
In any case, the fact that it requires acceleration is an indication that it makes use of it to probably discard data that is corrupted by movement. We could probably record some raw signals, including acceleration and PPG and put them in a repository for benchmarking different versions of algorithms. We would also need a reference heart rate for that, which we can obtain from another device, like a Polar or similar. Then we could invite people to test their best algorithms in some sort of competition...
I am working on an HR detection algorithm with students, but using the PPG from a smartphone. As the problem is similar, I may try to include data from the BangleJS as well. I'll keep you informed.