#define SENSOR_TYPE_ACCELEROMETER 1 //加速度 #define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力 #define SENSOR_TYPE_ORIENTATION 3 //方向 #define SENSOR_TYPE_GYROSCOPE 4 //陀螺儀 #define SENSOR_TYPE_LIGHT 5 //光線感應 #define SENSOR_TYPE_PRESSURE 6 //壓力 #define SENSOR_TYPE_TEMPERATURE 7 //溫度 #define SENSOR_TYPE_PROXIMITY 8 //接近 #define SENSOR_TYPE_GRAVITY 9 //重力 #define SENSOR_TYPE_LINEAR_ACCELERATION 10//線性加速度 #define SENSOR_TYPE_ROTATION_VECTOR 11//旋轉向量
1 加速 度感應器
加速度感應器又叫G-sensor,返回x、y、z三軸的加速度數值。
該數值包含地心引力 的影響,單位是m/s^2。
將手機平放在案頭上,x軸預設為0,y軸預設0,z軸預設9.81。
將手機 朝下放在案頭上,z軸為-9.81。
將手機向左傾斜,x軸為正值。
將手機向右傾斜,x軸為負值。
將手機向上傾斜,y軸為負值。
將手機向下傾斜,y軸為正值。
加速度感應器可能是最 為成熟的一種mems產品,市場上的加速度感應器種類很多。
手機中常用的加速度感應器有BOSCH(博世 )的BMA系列,AMK的897X系列,ST的LIS3X系列等。
這些感應器一般提供±2G至±16G的加速度測量範 圍,採用I2C或SPI介面和MCU相連,資料精度小於16bit。
2 磁力感應器
磁力感應器簡稱為M- sensor,返回x、y、z三軸的環境磁場資料。
該數值的單位是微特斯拉(micro-Tesla),用uT表示。
單位也可以是高斯(Gauss),1Tesla=10000Gauss。
硬體上一般沒有獨立的磁力感應器,磁力 資料由電子羅盤感應器提供(E-compass)。
電子羅盤感應器同時提供下文的方向感應器資料。
3 方向感應器
方向感應器簡稱為O-sensor,返回三軸的角度資料,方向資料的單位是角度。
為了得到精確的角度資料,E-compass需要擷取G-sensor的資料,
經過計算生產O-sensor資料 ,否則只能擷取水平方向的角度。
方向感應器提供三個資料,分別為azimuth、pitch和roll。
azimuth:方位,返回水平時磁北極和Y軸的夾角,範圍為0°至360°。
0°=北,90°=東,180 °=南,270°=西。
pitch:x軸和水平面的夾角,範圍為-180°至180°。
當z軸向y軸轉動時, 角度為正值。
roll:y軸和水平面的夾角,由於曆史原因,範圍為-90°至90°。
當x軸向z軸移 動時,角度為正值。
電子羅盤在擷取正確的資料前需要進行校準,通常可用8字校準法。
8字 校準法要求使用者使用需要校準的裝置在空中做8字晃動,
原則上盡量多的讓裝置法線方向指向空間的所 有8個象限。
手機中使用的電子羅盤晶片有AKM公司的897X系列,ST公司的LSM系列以及雅馬哈公司等 等。
由於需要讀取G-sensor資料並計算出M-sensor和O-sensor資料,
因此廠商一般會提供一個 後台daemon來完成工作,電子羅盤演算法一般是公司私人產權。