Android操作系統(tǒng)11種傳感器介紹
在Android2.3 gingerbread系統(tǒng)中准验,google提供了11種傳感器供應(yīng)用層使用勒葱。
#defineSENSOR_TYPE_ACCELEROMETER 1 //加速度
#defineSENSOR_TYPE_MAGNETIC_FIELD 2 //磁力
#defineSENSOR_TYPE_ORIENTATION 3 //方向
#defineSENSOR_TYPE_GYROSCOPE 4 //陀螺儀
#defineSENSOR_TYPE_LIGHT 5 //光線感應(yīng)
#defineSENSOR_TYPE_PRESSURE 6 //壓力
#defineSENSOR_TYPE_TEMPERATURE 7 //溫度
#defineSENSOR_TYPE_PROXIMITY 8 //接近
#defineSENSOR_TYPE_GRAVITY 9 //重力
#define SENSOR_TYPE_LINEAR_ACCELERATION 10//線性加速度
#defineSENSOR_TYPE_ROTATION_VECTOR 11//旋轉(zhuǎn)矢量
1 加速度傳感器
加速度傳感器又叫G-sensor世囊,返回x、y坎吻、z三軸的加速度數(shù)值。
該數(shù)值包含地心引力的影響晓铆,單位是m/s^2。
將手機(jī)平放在桌面上绰播,x軸默認(rèn)為0骄噪,y軸默認(rèn)0,z軸默認(rèn)9.81链蕊。
將手機(jī)朝下放在桌面上,z軸為-9.81谬泌。
將手機(jī)向左傾斜滔韵,x軸為正值。
將手機(jī)向右傾斜呵萨,x軸為負(fù)值奏属。
將手機(jī)向上傾斜跨跨,y軸為負(fù)值潮峦。
將手機(jī)向下傾斜,y軸為正值勇婴。
加速度傳感器可能是最為成熟的一種mems產(chǎn)品忱嘹,市場上的加速度傳感器種類很多。
手機(jī)中常用的加速度傳感器有BOSCH(博世)的BMA系列耕渴,AMK的897X系列拘悦,ST的LIS3X系列等。
這些傳感器一般提供±2G至±16G的加速度測量范圍橱脸,采用I2C或SPI接口和MCU相連础米,數(shù)據(jù)精度小于16bit。
2 磁力傳感器
磁力傳感器簡稱為M-sensor添诉,返回x屁桑、y、z三軸的環(huán)境磁場數(shù)據(jù)栏赴。
該數(shù)值的單位是微特斯拉(micro-Tesla)蘑斧,用uT表示。
單位也可以是高斯(Gauss)须眷,1Tesla=10000Gauss竖瘾。
硬件上一般沒有獨(dú)立的磁力傳感器,磁力數(shù)據(jù)由電子羅盤傳感器提供(E-compass)花颗。
電子羅盤傳感器同時(shí)提供下文的方向傳感器數(shù)據(jù)捕传。
3 方向傳感器
方向傳感器簡稱為O-sensor,返回三軸的角度數(shù)據(jù)扩劝,方向數(shù)據(jù)的單位是角度乐横。
為了得到精確的角度數(shù)據(jù)求橄,E-compass需要獲取G-sensor的數(shù)據(jù),
經(jīng)過計(jì)算生產(chǎn)O-sensor數(shù)據(jù)葡公,否則只能獲取水平方向的角度罐农。
方向傳感器提供三個(gè)數(shù)據(jù),分別為azimuth催什、pitch和roll涵亏。
azimuth:方位,返回水平時(shí)磁北極和Y軸的夾角蒲凶,范圍為0°至360°气筋。
0°=北,90°=東旋圆,180°=南宠默,270°=西。
pitch:x軸和水平面的夾角灵巧,范圍為-180°至180°搀矫。
當(dāng)z軸向y軸轉(zhuǎn)動時(shí),角度為正值刻肄。
roll:y軸和水平面的夾角瓤球,由于歷史原因,范圍為-90°至90°敏弃。
當(dāng)x軸向z軸移動時(shí)卦羡,角度為正值。
電子羅盤在獲取正確的數(shù)據(jù)前需要進(jìn)行校準(zhǔn)麦到,通陈潭可用8字校準(zhǔn)法。
8字校準(zhǔn)法要求用戶使用需要校準(zhǔn)的設(shè)備在空中做8字晃動瓶颠,
原則上盡量多的讓設(shè)備法線方向指向空間的所有8個(gè)象限拟赊。
手機(jī)中使用的電子羅盤芯片有AKM公司的897X系列,ST公司的LSM系列以及雅馬哈公司等等步清。
由于需要讀取G-sensor數(shù)據(jù)并計(jì)算出M-sensor和O-sensor數(shù)據(jù)要门,
因此廠商一般會提供一個(gè)后臺daemon來完成工作,電子羅盤算法一般是公司私有產(chǎn)權(quán)廓啊。
4 陀螺儀傳感器
陀螺儀傳感器叫做Gyro-sensor欢搜,返回x、y谴轮、z三軸的角加速度數(shù)據(jù)炒瘟。
角加速度的單位是radians/second。
根據(jù)Nexus S手機(jī)實(shí)測:
水平逆時(shí)針旋轉(zhuǎn)第步,Z軸為正疮装。
水平逆時(shí)針旋轉(zhuǎn)缘琅,z軸為負(fù)。
向左旋轉(zhuǎn)廓推,y軸為負(fù)刷袍。
向右旋轉(zhuǎn),y軸為正樊展。
向上旋轉(zhuǎn)呻纹,x軸為負(fù)。
向下旋轉(zhuǎn)专缠,x軸為正雷酪。
ST的L3G系列的陀螺儀傳感器比較流行,iphone4和google的nexuss中使用該種傳感器涝婉。
5 光線感應(yīng)傳感器
光線感應(yīng)傳感器檢測實(shí)時(shí)的光線強(qiáng)度哥力,光強(qiáng)單位是lux,其物理意義是照射到單位面積上的光通量墩弯。
光線感應(yīng)傳感器主要用于Android系統(tǒng)的LCD自動亮度功能吩跋。
可以根據(jù)采樣到的光強(qiáng)數(shù)值實(shí)時(shí)調(diào)整LCD的亮度。
6 壓力傳感器
壓力傳感器返回當(dāng)前的壓強(qiáng)最住,單位是百帕斯卡hectopascal(hPa)钞澳。
7 溫度傳感器
溫度傳感器返回當(dāng)前的溫度怠惶。
8 接近傳感器
接近傳感器檢測物體與手機(jī)的距離涨缚,單位是厘米。
一些接近傳感器只能返回遠(yuǎn)和近兩個(gè)狀態(tài)策治,
因此脓魏,接近傳感器將最大距離返回遠(yuǎn)狀態(tài),小于最大距離返回近狀態(tài)通惫。
接近傳感器可用于接聽電話時(shí)自動關(guān)閉LCD屏幕以節(jié)省電量茂翔。
一些芯片集成了接近傳感器和光線傳感器兩者功能。
下面三個(gè)傳感器是Android2新提出的傳感器類型履腋,目前還不太清楚有哪些應(yīng)用程序使用珊燎。
9 重力傳感器
重力傳感器簡稱GV-sensor,輸出重力數(shù)據(jù)遵湖。
在地球上悔政,重力數(shù)值為9.8,單位是m/s^2延旧。
坐標(biāo)系統(tǒng)與加速度傳感器相同谋国。
當(dāng)設(shè)備復(fù)位時(shí),重力傳感器的輸出與加速度傳感器相同迁沫。
10 線性加速度傳感器
線性加速度傳感器簡稱LA-sensor芦瘾。
線性加速度傳感器是加速度傳感器減去重力影響獲取的數(shù)據(jù)捌蚊。
單位是m/s^2,坐標(biāo)系統(tǒng)與加速度傳感器相同近弟。
加速度傳感器缅糟、重力傳感器和線性加速度傳感器的計(jì)算公式如下:
加速度 = 重力 + 線性加速度
11 旋轉(zhuǎn)矢量傳感器
旋轉(zhuǎn)矢量傳感器簡稱RV-sensor。
旋轉(zhuǎn)矢量代表設(shè)備的方向祷愉,是一個(gè)將坐標(biāo)軸和角度混合計(jì)算得到的數(shù)據(jù)溺拱。
RV-sensor輸出三個(gè)數(shù)據(jù):
xsin(theta/2)
ysin(theta/2)
zsin(theta/2)
sin(theta/2)是RV的數(shù)量級。
RV的方向與軸旋轉(zhuǎn)的方向相同谣辞。
RV的三個(gè)數(shù)值迫摔,與cos(theta/2)組成一個(gè)四元組。
RV的數(shù)據(jù)沒有單位泥从,使用的坐標(biāo)系與加速度相同句占。
舉例:
sensors_event_t.data[0] = xsin(theta/2)
sensors_event_t.data[1] = ysin(theta/2)
sensors_event_t.data[2] = zsin(theta/2)
sensors_event_t.data[3] = cos(theta/2)
GV、LA和RV的數(shù)值沒有物理傳感器可以直接給出躯嫉,
需要G-sensor纱烘、O-sensor和Gyro-sensor經(jīng)過算法計(jì)算后得出。
算法一般是傳感器公司的私有產(chǎn)權(quán)祈餐。