プロジェクト 6:Geomagnetic Sensor

1. 説明

このプロジェクトでは主に micro:bit の地磁気センサーの使い方を紹介します。磁場の強さを検出することに加えて、方位(方向)を判定するためにも使用でき、これはヘディングおよび姿勢基準系(AHRS)の重要な一部でもあります。

FreescaleMAG3110 三軸磁力計を使用しています。I2C インターフェースで外部と通信し、レンジは ±1000µT、最大データ更新レートは 80Hz です。加速度計と組み合わせることで位置を算出できます。さらに、磁気検出やコンパスブロックにも適用されます。

その後、センサーが検出した値を読み取って方位を判定できます。磁気センサーが動作する際は micro:bit 基板のキャリブレーションが必要です。正しいキャリブレーション方法は micro:bit 基板を回転させることです。

また、近くにある物体が読み取り値やキャリブレーションの精度に影響を与える場合があります。

2. 準備

A. USB ケーブルで micro:bit メインボードをコンピュータに接続します

B. Mu のオフライン版を開きます。

3. テストコード1

Mu ソフトを起動し、ファイル “Magnetic sensor -1.py” を開いてコードを読み込みます。編集ウィンドウにコードを直接入力しても構いません。

(注:すべての単語と記号は英語で記述してください。)

from microbit import *

compass.calibrate()

while True:

    if button_a.is_pressed():
        display.scroll(compass.heading())

コードのエラーを確認するには「Check」をクリックします。下線やカーソルが表示されている場合はプログラムに誤りがあります。

コードが正しい場合、micro:bit をコンピュータに接続して「Flash」をクリックし、コードを micro:bit ボードに書き込みます。

4. テスト結果1

コードをボードに正常にダウンロードしたら、micro USB ケーブルまたは外部電源で電源を入れてください(DIP スイッチを ON にする)。そして micro:bit のリセットボタンを押します。

Img

LED ドットマトリクスに “TILT TO FILL SCREEN” が表示されます。ボタン A を押すと、ボードがコンパスのキャリブレーションを要求します。キャリブレーション画面に入ります。下図のように 25 個の赤い LED がすべて点灯するまでボードを回転させます。

その後、スマイルのパターン が表示され、キャリブレーションが完了したことを示します。キャリブレーションが完了すると、ボタン A を押すことで磁力計の読み値が直接画面に表示されます。北、東、南、西の方向はそれぞれ 0°、90°、180°、270° に対応します。

5. テストコード2

下の画像では、値が 292.5 ~ 337.5 の範囲にある場合、矢印は右上を指します。コードには 0.5 を入力できないため、使用する値は 293 と 338 です。

その後、他の文を追加して完全なコードにします。

Mu ソフトを起動し、ファイル “Magnetic sensor -2.py” を開いてコードを読み込みます。編集ウィンドウにコードを直接入力しても構いません。

(注:すべての単語と記号は英語で記述してください。)

from microbit import *
compass.calibrate()
x = 0
while True:
    x = compass.heading()
    if x >= 293 and x < 338:
        display.show(Image("00999:""00099:""00909:""09000:""90000"))
    elif x >= 23 and x < 68:
        display.show(Image("99900:""99000:""90900:""00090:""00009"))
    elif x >= 68 and x < 113:
        display.show(Image("00900:""09000:""99999:""09000:""00900"))
    elif x >= 113 and x < 158:
        display.show(Image("00009:""00090:""90900:""99000:""99900"))
    elif x >= 158 and x < 203:
        display.show(Image("00900:""00900:""90909:""09990:""00900"))
    elif x >= 203 and x < 248:
        display.show(Image("90000:""09000:""00909:""00099:""00999"))
    elif x >= 248 and x < 293:
        display.show(Image("00900:""00090:""99999:""00090:""00900"))
    else:
        display.show(Image("00900:""09990:""90909:""00900:""00900"))

「Check」をクリックしてコードのエラーを確認します。下線やカーソルが表示されている場合はプログラムに誤りがあります。

コードが正しければ、micro:bit をコンピュータに接続して「Flash」をクリックし、コードを micro:bit ボードに書き込みます。

6. テスト結果

コードをボードに正常にダウンロードしたら、micro USB ケーブルまたは外部電源で電源を入れてください(DIP スイッチを ON にする)。そして micro:bit のリセットボタンを押します。

Img

キャリブレーションの後、micro:bit ボードを回転させると、LED ドットマトリクスに方向を示す記号が表示されます。

7. コードの説明

Img