C-STyleでコンパス活用

ダイセン電子工業の「HMC6352デジタルコンパスDSR1302」を使えば、今の向きが基準の方向に向いているかどうかが判断できる。

なお、同じセンサ素子を使うストロベリーリナックスの「ディジタルコンパスモジュール HMC6352」も同じようにTJ3Bで使用でき、こちらのほうが安価だが、コネクタや固定用の穴などは自分で用意する必要がある。


▲左はダイセン工業電子、右がストロベリーリナックス。右はユニバーサル基板にセンサとコネクタをハンダ付けし、基板に開けた穴で固定した。I2CコネクタはTJ3Bと同じピン配置にしておくと後で悩まない。


いろいろなところで安価(数百円〜)に売られているHMC5883Lを使ったものはTJ3Bではそのまま使用できないので注意する。使用するためにはC-Styleの改造が必要になる。以下のサイトが参考になるが、内容が理解できない場合は使用をお勧めしない。


C-Style上でコンパスセンサを使った方向チェックでは、今の向きが指定した向きから誤差±何度の範囲内であるかどうかを調べることができる。以下は方向チェックの一例。


このプログラムは北向き(0度)を基準として、

  • ifでだいたい北向き(350〜10度)
  • elseifで東向き(10〜180度 0〜10度部分はifで除外済)
  • elseで上記以外の西向き(180〜350度 350〜0(360)度部分はifで除外済)

の3方向をチェックしている。

elseif では 10〜180度170度分の範囲をチェックしたいので、条件を「95 Deg(+/-)85」としても同様に動作するが、そうするとifの範囲を調整するたびにelseifの条件も調整し直す必要がある。例のように「90 Deg(+/-)90」としておけばifの範囲を変更しても、elseifの範囲は変更する必要がない。なるべく手間がかからない条件設定になるよう工夫する。