micro:bitでPython[コンパス]
micro:bitに搭載されているセンサーの中の一つである電子コンパスを使ってみます。
公式サイトのHardwareページにこのセンサーについても説明がされてます。センサーチップはFreescale製MAG3110です。
従来の磁石を利用したコンパスではXY平面の2次元センサーでしたが、このセンサーはXYZの3軸センサーとなってます。概略仕様は以下になります。
- サンプリング周波数:80Hz
- 検出軸:XYZ3軸
- フルスケール:±1000μT(T=Tesla)
- 感度:0.10μT(T=Tesla)
参考までに、磁場の強さは磁束密度の単位Teslaで表し、地球上の地点で異なるとのことです、
東京では約45μT。
電子コンパス
下図にボード上の位置画像を載せてます。
キャリブレーション
電子コンパス共通のことなのですが、正確な方位データを得るために使う前にキャリブレーションが必要でして、このmicro:bitの場合も同様です。
キャリブレーションを起動する関数が用意されているのでプログラムで詳細手順をコーディングする必要はなくて単にキャリブレーション関数comapss.calibrate()を呼び出すだけで済みます。
実際の手順は
①LED(5×5)表示で”TILT TO FILL SCREEN”とフロー表示される。
②文字通りmicro:bitボードを傾けてLED(5×5)が全点灯するように埋めていきます。
<スタート直後の状態>LEDx2個が点灯。
<点灯しているLEDで埋める>残LED数=11個
③LED全点灯で終了
サンプルプログラム
サンプルプログラムがmicro:bit、microPytonの公式サイトに載ってます。
from microbit import * # 調整の開始 compass.calibrate() # 針が(大まかに)正しい方向を向くようにします while True: sleep(100) needle = ((15 - compass.heading()) // 30) % 12 display.show(Image.ALL_CLOCKS[needle])
プログラムを起動するとキャリブレーション実行が促されるので、それを実施すると方位表示がLED(5×5)にて示されます。
LEDを棒状に表示し北方角を指し示す。