I've been trying for an embaressing amount of time to figure out how to interpret the wireless accelerometer data from the TI Chronos. From my laptop with the usb-radio included, I read it into python basically following this recepie, then I throw it into a pyglet application to display the 3D acceleration vector. Its read in as unsigned chars, but I can't make any sense of the data. Neither have I find it documented anywhere. Here is an example printout from holding the watch still, while rotating it among 1 axis smoothly.
[253 245 24 255 6 7 1]
[ 0 241 20 255 6 7 255]
[255 229 28 255 6 7 255]
[255 229 25 255 6 7 255]
[ 1 229 19 255 6 7 255]
[249 224 21 255 6 7 255]
[254 219 17 255 6 7 255]
[255 218 11 255 6 7 1]
[247 211 15 255 6 7 255]
[251 209 10 255 6 7 255]
[251 212 255 255 6 7 255]
[243 194 16 255 6 7 255]
[243 200 7 255 6 7 255]
[247 197 3 255 6 7 1]
[246 190 10 255 6 7 255]
Obviously the first 3 bytes are the accelerometer data, and also clearly the numbers needs to be signed somehow. But why aren't the force vectors smooth? It's more obvious in the opengl visualization, but even in the small dataset above, one can observe for instance jumping from 255 to 1 in no time. Finally I want to get actual Gs from the data, but for now I'll settle with getting a smooth force vector that seems somewhat coherent with the rotation of the watch. Bonus points if anybody knows what the last 4 bytes means. Hopefully this is a chiphacker type question.
Best Answer
It looks like the data is using signed integers.
Therefore, 255 is -1, and 1 is +1.
Presumably, the forces are normalized somewhere, probably by taking a reading from the accelerometer when the watch is starting up. Afterwards, any increase in force is positive, and decrease in force is negative. That would seem to exactly match the given data.