タグ「CC2650STK」が付けられているもの
20190908 台風15号の気圧変化
CC2650STK sensor.tag の accelerometer のデータがおかしい件
CC2650STKの加速度計、x,y,z軸のデータ(ベクトル)の絶対値が どうも 2Gになる。
これは bluepy を使った場合にだけ発生しているようで、iOSのアプリではちゃんと 1.0G 程度の値になる。
CC2650STKのTIの wikiの 当該の場所を見るとGATTの設定で、rangeを 2G,4G,8G,16G の4通りが選択できるようになっている。またおのおのの軸は2byte=16bitで、-32767 ~ 32768 (sigined int?) の間の値が返ってくるようだ。
bluepy 附属の sensortag.py では、144行あたりでinit しているところで、
def __init__(self, sensor_): self.sensor = sensor_ self.bits = self.sensor.ACCEL_XYZ | self.sensor.ACCEL_RANGE_4G self.scale = 8.0/32768.0 # TODO: why not 4.0, as documented?と、self.bits で rangeは 4Gの設定をしているつもりになっている。
でもって、データをdecodeするところでは、8.0/32768 の係数をかけている。
wikiには、range 4Gの場合には、
case ACC_RANGE_4G: //-- calculate acceleration, unit G, range -4, +4 v = (rawData * 1.0) / (32768/4); break;となっている。こちらが正しいような。
bluepy でも
# TODO: why not 4.0, as documented?と書いているけど修正していないようだ。
勝手に修正して
self.scale = 4.0/32768.0
で利用することに・・・
CC2650STK sensor.tag の accelerometer のデータがおかしい件
CC2650STKの加速度計、x,y,z軸のデータ(ベクトル)の絶対値が どうも 2Gになる。
これは bluepy を使った場合にだけ発生しているようで、iOSのアプリではちゃんと 1.0G 程度の値になる。
CC2650STKのTIの wikiの 当該の場所を見るとGATTの設定で、rangeを 2G,4G,8G,16G の4通りが選択できるようになっている。またおのおのの軸は2byte=16bitで、-32767 ~ 32768 (sigined int?) の間の値が返ってくるようだ。
bluepy 附属の sensortag.py では、144行あたりでinit しているところで、
def __init__(self, sensor_): self.sensor = sensor_ self.bits = self.sensor.ACCEL_XYZ | self.sensor.ACCEL_RANGE_4G self.scale = 8.0/32768.0 # TODO: why not 4.0, as documented?と、self.bits で rangeは 4Gの設定をしているつもりになっている。
でもって、データをdecodeするところでは、8.0/32768 の係数をかけている。
wikiには、range 4Gの場合には、
case ACC_RANGE_4G: //-- calculate acceleration, unit G, range -4, +4 v = (rawData * 1.0) / (32768/4); break;となっている。こちらが正しいような。
bluepy でも
# TODO: why not 4.0, as documented?と書いているけど修正していないようだ。
勝手に修正して
self.scale = 4.0/32768.0
で利用することに・・・