- Published on
Arduinoに「LIS3MDL」を接続し制御する
1484文字3分で読めます–––
閲覧数
- Authors
- Name
- 将 有坂
- short bio
- ラズパイやArduinoで電子工作をしてます。
はじめに
Arduinoを使用して様々なセンサーやモジュールを制御することで、様々なプロジェクトを実現することができます。この記事では、磁気センサーモジュール「LIS3MDL」をArduinoに接続し、制御する方法について解説します。
※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚
1. LIS3MDLの概要
LIS3MDLは、磁気センサーの一種であり、地磁気や方位を検出するのに利用されます。このモジュールは、三つの軸(X、Y、Z)に対する磁気の強さを測定することができ、I2CまたはSPI通信プロトコルを使用してArduinoと通信します。
2. LIS3MDLの接続
LIS3MDLをArduinoに接続するには、以下のように接続します。なお、接続には4つの線が必要です。
- VCC(赤色): 3.3Vまたは5Vの電源
- GND(茶色): 接地
- SDA(緑色または青色): I2C通信のデータライン
- SCL(黄色または白色): I2C通信のクロックライン
これらを対応するArduinoのピンに接続します。
3. Arduinoコードの作成
次に、Arduino IDEを開いてLIS3MDLを制御するためのコードを書きます。以下は、LIS3MDLが接続されたI2Cアドレスが0x1Eだと仮定した例です。
#include <Wire.h>
#define LIS3MDL_ADDR 0x1E // LIS3MDLのI2Cアドレス
void setup() {
Wire.begin();
Serial.begin(9600);
// LIS3MDLの初期化
Wire.beginTransmission(LIS3MDL_ADDR);
Wire.write(0x20); // コントロールレジスタ1を設定
Wire.write(0x90); // 8ガウスの磁場範囲を選択
Wire.endTransmission();
}
void loop() {
// LIS3MDLからデータを取得
Wire.beginTransmission(LIS3MDL_ADDR);
Wire.write(0x28); // X軸のデータの先頭アドレス
Wire.endTransmission(false);
Wire.requestFrom(LIS3MDL_ADDR, 6, true);
// 取得したデータを表示
int x = Wire.read() | (Wire.read() << 8);
int y = Wire.read() | (Wire.read() << 8);
int z = Wire.read() | (Wire.read() << 8);
Serial.print("X: ");
Serial.print(x);
Serial.print(" Y: ");
Serial.print(y);
Serial.print(" Z: ");
Serial.println(z);
delay(1000); // 1秒待つ
}
このコードは、LIS3MDLから三軸の磁場データを読み取り、シリアルモニターに表示する簡単な例です。
4. コードのアップロードと動作確認
最後に、書いたコードをArduinoにアップロードし、LIS3MDLが正しく動作しているか確認します。アップロードが成功したら、シリアルモニターにX、Y、Z軸の磁場データが表示されるはずです。
これで、ArduinoにLIS3MDLを接続し、磁場データを取得するための基本的な手順が完了しました。さらに、このデータを活用して方位や地磁気の変化を検知するなど、様々なアプリケーションを開発することが可能です。
※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚