【加速度センサー入門】 第11回:モーション検出を作ってみた(その2)

【加速度センサー入門】シリーズでは、アナログ・デバイセズ社の加速度センサーを中心に、基本的な使い方や応用方法を解説します。今回は「モーション検知を作ってみた(その1)」の続きとなります。前回はアクティブ検知のモーションを作成しました。そして今回はインアクティブ検知のモーションを追加したいと思います。

【加速度センサー入門】シリーズ一覧はこちらから

インアクティブ検知の機能の追加

ここではインアクティブ(InActivity)を「加速度変化が閾値範囲内に一定時間滞在する」状態と定義します。つまり下図のように加速度が一定時間、加速度閾値の範囲にいるとインアクティブの状態とします。この機能はアクティブ検知と合わせて使うことにより、加速度センサーのモーション検知としての使い方の幅が広がります。例えば下図のように、携帯電話のようなポータブルデバイスを机の上から持ち上げることで、スタンバイ状態から復帰させる「起動スイッチ機能」をアクティブ検知で行います。また、机の上に戻すと自動的に、スタンバイ状態に戻る「停止スイッチ機能」をインアクティブ検知で実現することが可能となります。今回は、「モーション検知を作ってみた(その1)」にインアクティブ検知を実装し、LEDの制御を行う「モーションスイッチ」を作成してみたいと思います。

準備するもの

今回、加速度センサーを評価するうえで準備したものはこちらです。

 

・Arduino IDE がインストール済みの PC (Arduino IDE のダウンロードはこちらから)

Arduino Nano 互換品ボード 

加速度センサー ADXL345 

・その他(USB ケーブル (Arduino と PC 接続用)、ブレッドボード、ワイヤー)

 

上記の部品を組み合わせて、下図のように回路を組んでいきます。Arduino Nano への電源は、PC からの USB バスパワーで供給します。ADXL345は、SPI インターフェースとI2C インターフェースに対応していますが、今回はI2C インターフェースを使用します。

また割り込みピンのINT1ピン、INT2ピンは使用しないため、今回は接続不要となります。

接続図
接続図

プログラムの内容

「モーション検出」はユーザー側で設定したアクティブ閾値加速度を超えた際に、ステータスをアクティブに変更させ、LEDを点灯させます。また、一定時間の間、加速度変化がインアクティブ閾値内にいた場合にアクティブからインアクティブにステータスを変更させ、LEDを消灯させます。下記が主な流れになります。

①一定時間の周期でX,Y,Zの加速度データを取得
②取得データにフィルターをかける(取得加速度データから重力加速度を取り除く)
③フィルター後のデータと加速度閾値の比較を行う
④アクティブ・インアクティブのステータスの更新
 (アクティブ:一つ前の取得データがアクティブ閾値を超えていない状態から、最新の取得データが閾値を超えた場合にアクティブステータスに移行する)
 (インアクティブ:アクティブステータスから、加速度閾値が一定時間収まっている場合にインアクティブステータスに移行する)
⑤アクティブ・インアクティブによる制御(LEDの点灯・消灯)をおこなう

なお今回のプログラムはZ軸のみを有効としたアクティブ・インアクティブ検知となります。
Arduino IDE で作成したプロジェクトファイルはダウンロードできますので、ご興味のある方は下記「資料ダウンロード」より入手ください。

 

動作確認

作成したプログラムで動作確認をしてみます。静止状態から、大きな動きを加えると、アクティブ検出が行われLEDが点灯されました。その後、動きを加えない状態が一定時間続くとインアクティブ検出がおこなわれLEDが消灯されました。今回追加したインアクティブ検出によりLEDの制御をおこなう「モーションスイッチ」を実現することができました。

インアクティブ検出はADXL345に搭載されている機能ですが、その機能をプログラムで実装するということを試してみました。ソフトウェアで実装するとステータスの変数管理やアルゴリズムの実装によりコードが増えるため、検討事項がふえます。また、マイコン側でデータ処理(閾値比較や時間管理等)をおこなうことで、マイコンをスリープにする省電力化の処理が複雑になります。そのため、バッテリー動作の際にはセンサー側に割り込み機能が搭載されているメリットは非常に大きいと感じました。

今回検証したサンプルコードのダウンロード

今回実施したArduino のプロジェクトファイルを提供しています。こちらからお申し込みの上、ぜひお試しください。

加速度センサー ADXL345 について

今回使用したADXL345 は、3軸のデジタル出力加速度センサーです。主な特長は下記の通りです。

・ADC、演算機能ブロック、FIFO 内蔵で、非常に使いやすいスタンダードな加速度センサー
・加速度データは、デジタルシリアル方式で一般的なI2C/SPIを採用
・3軸タイプのセンサーは直交座標 (X, Y, Z) で、それぞれの軸に働く加速度を取得可能
・最大検出加速度を2g~16gの範囲で設定ができ、サンプリングも~3.2kHzと幅が広いので、衝撃、傾き、モーション検知など様々な用途に応用可能
・消費電流を減らすためのフレキシブルなモードを採用

ADXL345 の詳細は、データシートをご参照ください。また、この加速度センサーは非常に使いやすいので、これから加速度センサーを評価してみたいという方は、ぜひ評価ボードでお試しください。

 

最後に

本記事の内容に関してのご質問、または加速度センサーの選定や使い方にお困りのことがありましたら、以下からお問い合わせください。



アナログ・デバイセズ メーカー情報Topへ

アナログ・デバイセズ メーカー情報Topに戻りたい方は以下をクリックしてください。