2016-04-09 24 views
-1

我正在開發一個項目,使用樹莓派2和adxl345加速度計檢測門的運動,並在打開加速度計所連接的門時發出警報。以下是我的代碼,我需要幫助的樣本:如何修改Python中的IF語句以僅使用ADXL345加速度計的軸數據確定運動?

axes = adxl345.getAxes(True) 
if axes['z'] >= 0: 
    print "Intruder Detected" 

我已經輸出從X,Y和Z軸GS讀數一個單獨的Python文件。我很困惑我應該使用哪個軸,或者如果我應該使用軸讀數的組合來確定打開門的動作。任何幫助將不勝感激,因爲這是我的項目的最後一點。謝謝!

+0

這取決於門打開的方式。無論如何,您可能需要附加它並檢查讀者,並將您的算法基於此。 – Rob

+0

我的問題是我實際上並不知道讀什麼尋找。我的物理知識還不是很好,所以我不太瞭解這些軸如何確定運動。 – Teej

+0

這就是我的意思:)。將它連接到門上,並在開門時記錄數值。從這個角度來看,你會發現哪些數值對於檢測門開啓很重要。一扇門打開一圈。我會想象x和y座標將遵循從關閉到打開的正弦路徑 – Rob

回答

2

使用您當前的代碼,它取決於加速度計相對於門的方向。

一個可能的解決方案是確定加速度矢量的長度。這應該以任何方向工作;

axes = adxl345.getAxes(True) 
accel = math.sqrt(axes['x']**2 + axes['y']**2 + axes['z']**2) 

如果你不感興趣的實際值,你可能逃脫剛剛組件總結;

accel = axes['x'] + axes['y'] + axes['z'] 

但在這種情況下,它可能發生上一個軸的正加速度由另一根軸的負加速度抵消!而且你必須測試一個大於閾值和小於閾值負值的值。

編輯

根據該datasheet,將ADXL345是三軸加速度計。這本身可以而不是檢測旋轉! 要檢測旋轉,您需要加速度計和陀螺儀的組合,如MPU-6050

A 可能解決這個問題的方法是將加速度計固定到鉸鏈對面的門邊緣。這樣,當門打開時,它會經歷最直線的加速度。但開門的加速度很低。它可能低於此傳感器的檢測閾值,尤其是當門緩慢打開時。

檢測門打開的更好方法是將一個開關連接到手柄側門與框架之間的pi輸入針腳。即使門打開一小會激活開關。

+0

當前加速度計的方向是這樣,標有x的箭頭直接指向加速度計的背面。 – Teej

+0

如果您可以使其以任何方向工作,則不必擔心傳感器的方向。確保將加速度傳感器放在門把手的側面,而不是放在鉸鏈的側面。 –

+0

經過多次測試後,無論出於何種原因,我的加速度計都無法檢測到任何圓形運動的變化。無論我連接門後如何移動,所有3個軸都保持不變。唯一的變化就是當方向從水平放置在桌面上到垂直放置時。 – Teej

相關問題