LED コンパス
このセクションでは、MB2 の LED を使ってコンパスを実装します。本物のコンパスと同じように、 この LED コンパスも何らかの方法で北を指さなければなりません。これは外周の LED の 1 つを点灯することで実現します。点灯した LED が北の方向を指すようにします。
磁場には、ガウスまたはテスラで測定される 大きさ と、方向 の両方があります。MB2 上の 磁力計は外部磁場の大きさと方向の両方を測定しますが、返してくるのは、その磁場を その軸 に沿って 分解 した成分です。
磁力計には、それに対応する 3 つの軸があります。ボードを平らに持ち、LED が上向き、 ロゴが前を向くようにすると、X 軸と Y 軸は床の平面を張ります。X 軸はボードの左端を 指します。Y 軸はボードの下端(カードコネクタ側の端)を指します。Z 軸は「床の中」、つまり下向きを 指します。チップが背面に実装されているため、「上下逆」になっているわけです。これは「右手系」の 座標系です。報告される磁場強度は磁場ベクトルの成分なので、少しわかりにくいところです。
I2C の章の内容から、磁力計のデータを RTT コンソールに継続的に表示する
プログラムは、もう書けるはずです。そのプログラム
(examples/show-mag.rs)を書いたら、今いる場所で北がどちらにあるかを確認してください。次に、
MB2 をその方向に合わせて、センサーの X と Y の測定値がどのようになるか観察しましょう。
次に、ボードを地面と平行に保ったまま 90 度回転させてください。このとき、X、Y、Z の値は どう見えますか。その後、さらにもう 90 度回転させてください。どのような値が見えますか。
NOTE これを書いている時点で手元にある 2 台の MB2 のうち、1 台は 磁力計が少し壊れているようです。Z 軸に実用にならないほどのオフセットがあります。メーカーには、 これを検出するためのセルフテスト手順と、この種の「ハードアイアン」 障害を軽減するためのキャリブレーション手順があります。これは通常、MB2 がどこかの時点で 強い磁場にさらされた結果です。しかし、
lsm303agrクレートは現時点ではそのどちらも サポートしておらず、組み込みシステム入門ガイドで扱うには少し荷が重いように思えます。 MB2 が 1 台しかなく、それがうまく動いていないようなら、next chapter に スキップした方がよいかもしれません。安価なハードウェアですからね。どうしようもありません。
地球の磁北は気まぐれなものです。地球上のほとんどの場所では真北と異なり、 ときにはかなり大きくずれます。かなり地面の中へ向いていることもあります。 また、時間とともに変化します。こうしたことをすべて考慮しなければ、MB2 の磁力計 が完璧であったとしても(実際にはそうではありません)、あまり正確なコンパスは得られません。 米国 NOAA のこの計算機 https://www.ngdc.noaa.gov/geomag/calculators/mobileDeclination.shtml はモバイル デバイスから利用でき、真北だけでなく磁北についても良い推定値を得られます。英国 BGS の calculator に緯度、経度、高度を与えると、偏角と伏角の両方を取得できます。私の いる場所では、「declination」(真北と磁北の差)は約 15° で、 「inclination」は驚くべきことに地面の中へ 67° です。
NOTE LSM303AGR 磁力計は、箱から出してすぐの状態では特別高精度なデバイスではありません。メーカーは、 磁力計の読み取り値に対する補正値を求めるための凝ったキャリブレーション手順を推奨しています。 詳細情報、キャリブレーション実装のサンプル、およびもう少し凝った コンパスのグラフィックスについては appendix 3 を参照してください。この章では磁力計で かなり基本的なことしかしないので、ここでは気にしないことにします。