logo
Published on

Arduinoに「LSM303DLHC」を接続し制御する

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

「LSM303DLHC」は、加速度計と地磁気センサーを組み合わせた小型センサーモジュールであり、Arduinoプロジェクトでの姿勢計測や方位の取得などに利用されます。この記事では、「LSM303DLHC」をArduinoに接続し、制御する方法について解説します。

※モジュールの価格を比較 ▶ TemuAliExpress楽天メルカリ

1. LSM303DLHCセンサーの概要

「LSM303DLHC」は、3軸の加速度計と3軸の地磁気センサーを組み合わせています。これにより、加速度や方向のデータを取得でき、Arduinoを使用してリアルタイムで制御できるようになります。

2. LSM303DLHCの接続

まず、LSM303DLHCをArduinoに接続します。通常、このセンサーモジュールには以下のようなピンがあります。

  • VCC(赤色): 3.3Vの電源
  • GND(茶色): 接地
  • SDA(データ): I2C通信用のデータライン
  • SCL(クロック): I2C通信用のクロックライン

これらを対応するArduinoのピンに接続します。Arduino Unoの場合、通常はA4がSDA、A5がSCLになります。

3. Arduinoコードの作成

次に、Arduino IDEを開いてLSM303DLHCを制御するためのコードを書きます。I2C通信を使用するため、Wire ライブラリを使用します。以下は、簡単な例です。

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM303_U.h>

Adafruit_LSM303_Accel_Unified accel;
Adafruit_LSM303_Mag_Unified mag;

void setup(void) {
  Serial.begin(9600);
  if(!accel.begin() || !mag.begin())
  {
    Serial.println("Could not start LSM303. Please check wiring!");
    while(1);
  }
}

void loop(void) {
  sensors_event_t accelEvent, magEvent;

  accel.getEvent(&accelEvent);
  mag.getEvent(&magEvent);

  Serial.print("Acceleration: ");
  Serial.print(accelEvent.acceleration.x);
  Serial.print(", ");
  Serial.print(accelEvent.acceleration.y);
  Serial.print(", ");
  Serial.print(accelEvent.acceleration.z);
  Serial.println(" m/s^2 ");

  Serial.print("Magnetic Field: ");
  Serial.print(magEvent.magnetic.x);
  Serial.print(", ");
  Serial.print(magEvent.magnetic.y);
  Serial.print(", ");
  Serial.print(magEvent.magnetic.z);
  Serial.println(" uT ");

  delay(1000);
}

このコードは、加速度と地磁気のデータをシリアルモニタに表示する簡単な例です。適宜、取得したデータを用いてプロジェクトを構築することができます。

4. コードのアップロードと動作確認

最後に、書いたコードをArduinoにアップロードし、シリアルモニタでデータが正しく表示されるか確認します。これで、「LSM303DLHC」をArduinoで制御する準備が整いました。

LSM303DLHCは様々なプロジェクトに活用できる汎用的なセンサーであるため、これをベースにして様々なアプリケーションを作成することが可能です。