ハンダ付けを終えたSAM4SAボード、自分のプロジェクトととしてはMiniSAMボードと命名したので、以後この名前で呼んでいくことにします。SAM3S本体は動いているので、続いて加速度センサーのMMA8452Qの動作確認に入いるつもりです。
MMA8452Qには、MMA8451Q, MMA8453Qという兄弟デバイスもあり、加速度データのビット長やFIFO機能の有無といった違いがあるようです。MMA8451Qがフル機能で、MMA8452QはそこからFIFO機能を削ったもののようです。もっともこういう違いを認識したのは買った後の話でして、もともとSparkfunがMMA8452Q単体やBreakout boardを販売していたので、これが一番メジャーなんだろうと思って買っただけのことです。機能重視するんだったら対して値段も変わらないことだしMMA8451Qを買ってもいいでしょう。前回の記事でも触れたようにMMA8452Qはとっても安くて機能も豊富なのに、不思議と国内では趣味の電子工作で使われた例を見かけない気がします。やはり小さいからでしょうか。高くても入手性の良い秋月のセンサーがダントツでポピュラーですよね。Switch science magazineのこの記事なんかじゃ、「単純に値段で選ぶならコレ」という調子で紹介されていますが、ちゃっと可哀想すぎる扱いです。そこで、今回はこのセンサーの概要について簡単に書いておくことにします。
まず、ハード的な使い方は上図のとおり。I2Cでつないで、レジスタを読み出すことで加速度データやイベントを読み取ります。アナログ出力がないので、I2Cでレジスタ読んでみないとちゃんと動いているかどうかの確認ができません。今回はどうやら無事にハンダ付けできたようで、3軸加速度の値が変化することを確認できました。割り込み要求のラインが2本あり、ホストに対してイベントの発生を通知することができます。SA0はI2Cのデバイスアドレスの最下位ビット値選択用です。
レジスタを設定することで、いろいろな動作をさせることができます。
加速度とその持続時間を閾値として設定しておくことで、自由落下や動きを検出する機能は、秋月が扱っているKXP84-2050なんかにも備わっていますが、MMA8452Qではタップ検出や向き検出までやってくれるというのに興味をひかれた次第です。これらの検出も関係するパラメータをレジスタで設定しておけば、対応するイベントが発生した時に割り込みで通知してくれます。そのため、マイコン側処理としては割り込み要因を解析する程度の処理をすれば良く、加速度データを読み出してその変化を解析するようなソフトウェア処理をまったく必要としません。
こりゃ楽チンですね。そういうわけで、まずはタップ、ダブルスタップの検出を試してみるつもりです。
MMA8452Qには、MMA8451Q, MMA8453Qという兄弟デバイスもあり、加速度データのビット長やFIFO機能の有無といった違いがあるようです。MMA8451Qがフル機能で、MMA8452QはそこからFIFO機能を削ったもののようです。もっともこういう違いを認識したのは買った後の話でして、もともとSparkfunがMMA8452Q単体やBreakout boardを販売していたので、これが一番メジャーなんだろうと思って買っただけのことです。機能重視するんだったら対して値段も変わらないことだしMMA8451Qを買ってもいいでしょう。前回の記事でも触れたようにMMA8452Qはとっても安くて機能も豊富なのに、不思議と国内では趣味の電子工作で使われた例を見かけない気がします。やはり小さいからでしょうか。高くても入手性の良い秋月のセンサーがダントツでポピュラーですよね。Switch science magazineのこの記事なんかじゃ、「単純に値段で選ぶならコレ」という調子で紹介されていますが、ちゃっと可哀想すぎる扱いです。そこで、今回はこのセンサーの概要について簡単に書いておくことにします。
まず、ハード的な使い方は上図のとおり。I2Cでつないで、レジスタを読み出すことで加速度データやイベントを読み取ります。アナログ出力がないので、I2Cでレジスタ読んでみないとちゃんと動いているかどうかの確認ができません。今回はどうやら無事にハンダ付けできたようで、3軸加速度の値が変化することを確認できました。割り込み要求のラインが2本あり、ホストに対してイベントの発生を通知することができます。SA0はI2Cのデバイスアドレスの最下位ビット値選択用です。
レジスタを設定することで、いろいろな動作をさせることができます。
- 省電力だけども精度は低い動作と電流は消費するけど精度の高い動作モードを選べる。データの更新頻度も選択でき、それによっても消費電流が異なる。
- 自由落下や一定以上の加速度の検出をトリガとして割り込みをかけられる。
- タップ、ダブルタップの検出ができる。
- 縦向きから横向き、横向きから縦向きに変わったことを検出できる。
加速度とその持続時間を閾値として設定しておくことで、自由落下や動きを検出する機能は、秋月が扱っているKXP84-2050なんかにも備わっていますが、MMA8452Qではタップ検出や向き検出までやってくれるというのに興味をひかれた次第です。これらの検出も関係するパラメータをレジスタで設定しておけば、対応するイベントが発生した時に割り込みで通知してくれます。そのため、マイコン側処理としては割り込み要因を解析する程度の処理をすれば良く、加速度データを読み出してその変化を解析するようなソフトウェア処理をまったく必要としません。
こりゃ楽チンですね。そういうわけで、まずはタップ、ダブルスタップの検出を試してみるつもりです。