STM32F3 Discoveryで電子コンパスを作ってみよう。
STM32 Eclipse開発環境で実際にマイコン・プログラミングをしてみましょう。 今回は、STM32F3 Discovery を使った電子コンパスを作成します。 STM32F3 Discovery には、STマイクロ製のLSM303DLHCというセンサーが搭載されています。 この、LSM303DLHCはSTM32F3とI2Cで接続されており、3軸の地磁気と加速度を検出することができます。 また、基板上には方角を示すような8つのLEDも搭載されています。 今回は、LSM303DLHCの地磁気センサーとLEDを使って簡単な電子コンパスを作成してみようと思います。 LSM303DLHCの地磁気センサーの使い方 LSM303DLHCの地磁気センサーは、3軸に対する地磁気を検出します。 この磁気センサーは各軸と地磁気の磁束密度を検出するようにできています。 このため、各軸が北を向いたときに最大値となり、逆(南)を向いた時はマイナスの最大値となります。 3つの軸から北を知るには、XYZの3軸で検出された磁束密度の強さをベクトル合成したものが北となります。 STM32F3 Discoveryボード上のLSM303DLHCをよく見ると、1番ピンが下向きにマウントされています。 このため、ボードの上側(USB給電/デバッグポート側)を北に向けたときに、X軸がマイナス値の最大となります。 今回の実装仕様 実装を簡単にするため、XとYだけを使うこととします。 つまり、ボードを水平にした状態での北向き検出します。 この状態で”北”と判断した方角のLEDを点灯し、他は消灯します。 計算方法 LEDは8つしかありません。 従って、LED間の角度は45です。 磁気センサーは、軸が南方向を向くと取得値がマイナスとなるので、数値の正負だけで4方向が特定できます。 このため、数値の正負で4方向を特定し、取得値の絶対値でベクトルを算出してCOS値から詳細な角度を出せばよいのですが、1方向のLEDは0度と45度と90度の3つしかないので、3つのLEDの間、22.5度(0.9238795325...)と67.5度(0.3826834323...)だけ判定できればよいことになります。 I2C通信方法...