WRX micro:bitを車両で使う その7 加速度センサーの利用

micro:bit, 社外部品・DIY

今回はmicro:bitに搭載されている加速度センサーを利用してみます。加速度センサーではmicro:bit本体を振ったり傾けた時、XYZ方向それぞれの移動速度の変化割合や傾いた角度の大きさを測る事が出来ます。Microsot MakeCodeでは既にmicro:bit本体を振ったり傾けたりといった条件のブロックが用意されているので、数値を意識せずに簡単に利用する事も可能です。

スポンサーリンク

Microsot MakeCodeでのブロック

Microsot MakeCodeで用意されているブロックは基本のブロック(~の時)と、条件としてのブロック(動き)の2種類があります。これらのブロックでは「ゆさぶられた」の他にプルダウンメニューでmicro:bitの状態を選択する事が可能で、ABボタンを押す場合と同様の使い方が可能です。

また数値として利用する場合は、加速度と傾斜の2種類があります。加速度はXYZ方向のいずれかを数値「-1023~1023」の範囲内で指定します。micro:bitが水平(LEDが上)かつ静止状態であればXYはそれぞれ「0」となります。揺らしたり傾けたりすると数値はその方向へ変化します。ただしZの場合はmicro:bitを立てると「0」、立てたまま前後方向に揺らしたり傾けたりすると数値が変化します。

傾斜はピッチとロールの2種類で、ピッチはmicro:bitを水平(LEDが上)に置いた状態から前後方向、ロールは左右方向の傾き角度です。それぞれmicro:bitを裏返すと「-180(°)」になります。

ちなみに、加速度センサーの計測範囲を1G・2G・4G・8Gと設定出来るブロックがあるのですが、私が試した限りではあまり数値変化の大きさに違いを感じません。何か勘違いをしている気もしますが。

水準器を作る

Microsot MakeCodeではチュートリアルとして加速度センサーを利用して、micro:bitを振ってLEDに1~6の数字を乱数で表示させるサイコロプログラムがありますが、これでは機能的にABボタンを押す事とあまり変わらないので、もう少し加速度センサーの特徴を利用した形のプログラムとして水準器を作ります。

Microsot MakeCodeで開く

とりあえず簡単なXY方向の水準器です。micro:bitが水平(LEDが上)になっている時、LEDの中心位置に十字マークが表示されます。micro:bitを振ったり傾けるとその方向に十字マークが動きます。振りや傾きの大きさによって十字マークの移動量も変わりますが、LEDの数が少ないので中心から2段階しかありません。また感度は各範囲で指定している数値次第です。変数に0~4の数値を入力していますが、LEDに十字マークを表示する為です。

Microsot MakeCodeで開く

上記は少しゲーム性を持たせ、micro:bitを手に持って十字マークが動かない様に歩けるか?というプログラムです。最初の状態は単なる水準器ですが、加速度や傾きが一定以上を超えるとその越えた方向が分かる様になっています。Aボタンを押すと一定以上を越えた回数が10回になった時点でゲームオーバー、A+Bボタンで再開、Bボタンで終了(通常の水準器)です。ブザーがあれば音も出ます。

ただしLEDの表示に対してセンサー内部の数値が連続で一定以上を超える事(チャタリング)もあるので、LEDで越えた方向の表示が10回未満でもゲームオーバーになる事があります。また時々LEDが無表示になるバグもあります(A+Bボタンで復帰します)。

車内で使う

Microsot MakeCodeで開く

車内での利用を考えると上記のゲームとほぼ同じプログラムで、運転中の急加減速や急ハンドルの検出を行う事が出来ます。一定以上を超えた時のブザー音はAボタンで有効、Bボタンで無効に出来ます(初期は無効)。

Microsot MakeCodeで開く

加速度センサーを利用する場合も前回の方位センサーと同様に、micro:bitを水平に設置しておく必要があります。従って加速度センサーの数値がオーバーした際の結果(どの方向にオーバーしたか)を、もう1台のmicro:bitに送信する機能も付けています(上記が受信側)。

イメージは某アニメの豆腐です。通常はどちらもLEDの中心に表示があります。

加速度を検出する(送信)側でオーバーした方向に、受信側の■が移動して少し欠けます。また今回はIOブレイクアウトボードを使用して、ボードに搭載されているブザーから音でも認識出来ます。

動画

上記は実際に試してみた様子です。当初、加速度の数値範囲が厳しすぎてブザーが鳴りっぱなしでした。最大300(-300)程度にするとだいぶ落ち着きますが、まだ路面の状態で過敏に反応してしまいます。先のプログラムでは最大400(-400)になっています。

「micro:bit」関連記事

以下は「micro:bit」タグの記事一覧です(投稿順)。現在の記事とこれ以降に投稿した記事も含みます。

その他

「OBD2」関連の記事は以下の記事から始まります。

注記

    • このブログ内で書いている内容はあくまで私の利用する製品(アプリ含む)や機器での場合です。他メーカーの製品や機器をはじめ、同じメーカーの製品・機器であってもバージョン違い等の場合もあるので、記事内容の保証や責任を負う事は出来ません。
    • 記事内で紹介している製品や、その他の類似製品を購入・利用する場合はそのメーカーや購入先で仕様等を確認し、自己判断と自己責任の下で利用して下さい。
    • 記事内で公開しているmicro:bit用プログラムは自由に利用・改変して頂いて構いません。ただし不具合やバグもありますので、プログラムを利用した際の故障や事故等についての保証や責任を負う事は出来ません。自己判断と自己責任の下で利用して下さい。
    • micro:bit製品やプログラミング、その他記事内容について個別の問合せや依頼を頂いても回答する事は出来ませんので、予め御了承下さい。
    • BBC micro:bitは、micro:bit教育財団の登録商標です。その他のブランド名または製品名は各所有者の商標です。