こんにちは。岸田です。先日、Arduino Luckyシールドなる商品の販売を開始しました。いろんなセンサが乗っていて遊ぶに最適な商品です。今回はこれを使った作例を紹介します。
ところで皆様、節分には恵方巻きがつきものですよね。恵方を向いて無言で食べると縁起が良いとされているあれです。でも、方角は普段細かく気にしないなものですから、どちらを向けばいいのかわかりません。なので、今年の恵方を示す道具をつくってみました。
今年の恵方は南南東らしいです。角度にすると、南から反時計回りに15°くらいですね。
一見なんの変哲もないシールドですが・・・
今年の恵方に向けると光ります!画像左中央のLEDに注目してください。
これで、安心して恵方巻きを食べることができますね。以下、詳しい説明です。
今回主に利用したLucky Shieldには、以下のセンサが乗っています。
- 加速度センサ
- 磁気センサ
- 人感センサ
- 温度/気温/湿度センサ
また、自由に使えるスイッチやLEDなども乗っています。
本作例では、磁気センサを主に利用します。これらを活用して
- 現在向いている方位の取得
- 正しい方向を向いていることを知らせる
ということをやってみました。
■用意するもの
Lucky Shield
Arduino UNO R3
ソースコードですが、磁気センサを利用するArduinoむけスケッチがこちらのページ(Sparkfunのbreakoutboardの商品ページ)にて公開されています。今回はこれをベースに書き足しました。本作例のスケッチはこちらです。
使い方
起動直後は磁気較正モードになっています。このモードは、基板上のスイッチ(PB1のシルク)を押すことでも開始できます。デフォルトでは較正は10秒間行われます。
較正が始まると低いブザー音、終わると少し高いブザー音が鳴ります。較正中は基板上のLED1がついたままになります。この間に、「8の字を描くように回す」「各軸ごとに数回回す」などの方法で、センサをまんべんなく回転させてください。
較正が終わると、方向検知モードに戻ります。今年の恵方の方向に基板を向けると、LED2が光り、ブザーから高い音が鳴ります。基板の方向は、シールド上でターミナル端子が出ている辺を向ける形になります。
どういう動作をしているかは、詳しくはソースコード中のコメントをお読みください。
内部で何を行っているか
まず磁気センサの較正を行います。較正することで、地磁気ベクトルのみを各測定軸成分に取得できます。今回は、センサが平面にあることを想定し、xy成分を逆三角関数に代入して方位を取得しています。簡単な較正なので超高精度というわけにはいきませんが、期待していたよりも十分な精度がありました。画像では2°くらいずれてますね。ただし、微弱でも磁気を発するものを近づけると途端におかしくなってしまいます。センシングは難しいですね。