内置传感器---智能手机(资料)
1.? 簡(jiǎn)單介紹
手機(jī)傳感器介紹手機(jī)傳感器檢測(cè)安卓手機(jī)上全部可用感應(yīng)器,并通過圖像生動(dòng)的展示它們是怎樣運(yùn)作的。
手機(jī)傳感器也可以識(shí)別該手機(jī)硬件支持哪些傳感器,并提供對(duì)我們?nèi)粘I钇鹬匾饔玫膫鞲泄ぞ摺J謾C(jī)傳感器僅僅能檢測(cè)到變化。假設(shè)屬性沒有變化。它顯示的溫度值、距離值、光和壓力的值可能不準(zhǔn)確。
2. 手機(jī)中經(jīng)常使用的傳感器
在Android2.3 gingerbread系統(tǒng)中,google提供了11種傳感器供應(yīng)用層使用。
#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 //光線感應(yīng)
#define SENSOR_TYPE_PRESSURE 6 //壓力
#define SENSOR_TYPE_TEMPERATURE 7 //溫度
#define SENSOR_TYPE_PROXIMITY 8 //接近
#define SENSOR_TYPE_GRAVITY 9 //重力
#define SENSOR_TYPE_LINEAR_ACCELERATION10//線性加速度
#define SENSOR_TYPE_ROTATION_VECTOR 11//旋轉(zhuǎn)矢量
我們依次看看這十一種傳感器
2.1 加速度傳感器
加速度傳感器又叫G-sensor,返回x、y、z三軸的加速度數(shù)值。
該數(shù)值包括地心引力的影響,單位是m/s^2。
將手機(jī)平放在桌面上。x軸默覺得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)品,市場(chǎng)上的加速度傳感器種類非常多。
手機(jī)中經(jīng)常使用的加速度傳感器有BOSCH(博世)的BMA系列,AMK的897X系列。ST的LIS3X系列等。
這些傳感器一般提供±2G至±16G的加速度測(cè)量范圍。採用I2C或SPI接口和MCU相連。數(shù)據(jù)精度小于16bit。
?
????? ?加速度傳感器是為了檢測(cè)物體的加速度的傳感器。物體運(yùn)動(dòng)加速度也跟著變化,假設(shè)能取到加速度。物體受到什么樣的作用力或則物體進(jìn)行什么樣的運(yùn)動(dòng),我們就能夠知道。使用加速度,我們就能做模擬計(jì)步器、物體運(yùn)動(dòng)的應(yīng)用程序。
?????? 加速度傳感器的values變量的3個(gè)元素值分別表示X、Y、Z軸的加速值。
? 重力傳感器與加速度傳感器使用同一套坐標(biāo)系。values數(shù)組中三個(gè)元素分別表示了X、Y、Z軸的重力大小。
2.2 磁力傳感器
磁力傳感器簡(jiǎn)稱為M-sensor,返回x、y、z三軸的環(huán)境磁場(chǎng)數(shù)據(jù)。
該數(shù)值的單位是微特斯拉(micro-Tesla),用uT表示。
單位也能夠是高斯(Gauss)。1Tesla=10000Gauss。
硬件上一般沒有獨(dú)立的磁力傳感器。磁力數(shù)據(jù)由電子羅盤傳感器提供(E-compass)。
電子羅盤傳感器同一時(shí)候提供下文的方向傳感器數(shù)據(jù)。
2.3 方向傳感器
方向傳感器簡(jiǎn)稱為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)動(dòng)時(shí),角度為正值。
roll:y軸和水平面的夾角,因?yàn)闅v史原因。范圍為-90°至90°。
當(dāng)x軸向z軸移動(dòng)時(shí),角度為正值。
電子羅盤在獲取正確的數(shù)據(jù)前須要進(jìn)行校準(zhǔn),通常可用8字校準(zhǔn)法。
8字校準(zhǔn)法要求用戶使用須要校準(zhǔn)的設(shè)備在空中做8字晃動(dòng)。
原則上盡量多的讓設(shè)備法線方向指向空間的全部8個(gè)象限。
手機(jī)中使用的電子羅盤芯片有AKM公司的897X系列,ST公司的LSM系列以及雅馬哈公司等等。
因?yàn)轫氁x取G-sensor數(shù)據(jù)并計(jì)算出M-sensor和O-sensor數(shù)據(jù)。
因此廠商通常會(huì)提供一個(gè)后臺(tái)daemon來完畢工作,電子羅盤算法通常是公司私有產(chǎn)權(quán)。
2.4 陀螺儀傳感器
陀螺儀傳感器叫做Gyro-sensor,返回x、y、z三軸的角加速度數(shù)據(jù)。
角加速度的單位是radians/second。
依據(jù)Nexus S手機(jī)實(shí)測(cè):
水平逆時(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的nexus s中使用該種傳感器。
2.5 光線感應(yīng)傳感器
光線感應(yīng)傳感器檢測(cè)實(shí)時(shí)的光線強(qiáng)度。光強(qiáng)單位是lux,其物理意義是照耀到單位面積上的光通量。
光線感應(yīng)傳感器主要用于Android系統(tǒng)的LCD自己主動(dòng)亮度功能。
能夠依據(jù)採樣到的光強(qiáng)數(shù)值實(shí)時(shí)調(diào)整LCD的亮度。
2.6 壓力傳感器
壓力傳感器返回當(dāng)前的壓強(qiáng),單位是百帕斯卡hectopascal(hPa)。
2.7 溫度傳感器
溫度傳感器返回當(dāng)前的溫度。
2.8 接近傳感器
接近傳感器檢測(cè)物體與手機(jī)的距離,單位是厘米。
一些接近傳感器僅僅能返回遠(yuǎn)和近兩個(gè)狀態(tài),
因此,接近傳感器將最大距離返回遠(yuǎn)狀態(tài),小于最大距離返回近狀態(tài)。
接近傳感器可用于接聽電話時(shí)自己主動(dòng)關(guān)閉LCD屏幕以節(jié)省電量。
一些芯片集成了接近傳感器和光線傳感器兩者功能。
以下三個(gè)傳感器是Android2新提出的傳感器類型,眼下還不太清楚有哪些應(yīng)用程序使用。
2.9 重力傳感器
重力傳感器簡(jiǎn)稱GV-sensor,輸出重力數(shù)據(jù)。
在地球上,重力數(shù)值為9.8。單位是m/s^2。
坐標(biāo)系統(tǒng)與加速度傳感器同樣。
當(dāng)設(shè)備復(fù)位時(shí),重力傳感器的輸出與加速度傳感器同樣。
2.10 線性加速度傳感器
線性加速度傳感器簡(jiǎn)稱LA-sensor。
線性加速度傳感器是加速度傳感器減去重力影響獲取的數(shù)據(jù)。
單位是m/s^2。坐標(biāo)系統(tǒng)與加速度傳感器同樣。
加速度傳感器、重力傳感器和線性加速度傳感器的計(jì)算公式例如以下:
加速度 = 重力 + 線性加速度
2.11 旋轉(zhuǎn)矢量傳感器
旋轉(zhuǎn)矢量傳感器簡(jiǎn)稱RV-sensor。
旋轉(zhuǎn)矢量代表設(shè)備的方向,是一個(gè)將坐標(biāo)軸和角度混合計(jì)算得到的數(shù)據(jù)。
RV-sensor輸出三個(gè)數(shù)據(jù):
x*sin(theta/2)
y*sin(theta/2)
z*sin(theta/2)
sin(theta/2)是RV的數(shù)量級(jí)。
RV的方向與軸旋轉(zhuǎn)的方向同樣。
RV的三個(gè)數(shù)值。與cos(theta/2)組成一個(gè)四元組。
RV的數(shù)據(jù)沒有單位。使用的坐標(biāo)系與加速度同樣。
舉例:
sensors_event_t.data[0] = x*sin(theta/2)
sensors_event_t.data[1] = y*sin(theta/2)
sensors_event_t.data[2] = z*sin(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)。
?
總結(jié)
以上是生活随笔為你收集整理的内置传感器---智能手机(资料)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: codevs——2853 方格游戏(棋盘
- 下一篇: Bitmasking for intro