logo
Published on

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

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Arduinoは様々なセンサーやモジュールを組み合わせて利用できるプログラム可能なマイコンボードです。この記事では、地磁気センサー「HMC5883L」をArduinoに接続し、制御する方法について詳しく解説します。

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

1. HMC5883L 地磁気センサーの概要

HMC5883Lは、3軸の地磁気センサーで、地球の磁場を検出して角度や方向を測定するのに使用されます。I2C通信プロトコルを介してArduinoと通信します。このセンサーは、コンパクトで高精度な測定が可能であり、ロボットや航法アプリケーションなどで広く利用されています。

2. HMC5883Lの接続

HMC5883LをArduinoに接続するためには、4つのピンがあります。

  • VCC(赤色): 3.3Vまたは5Vの電源
  • GND(茶色): 接地
  • SDA(緑色): I2Cデータライン
  • SCL(青色): I2Cクロックライン

これらのピンを対応するArduinoのピンに接続します。Arduino Unoの場合、SDAピンはA4、SCLピンはA5に接続されることが一般的です。

3. Arduinoコードの作成

Arduino IDEを開いて、HMC5883Lを制御するためのコードを書きます。まず、HMC5883Lを制御するために必要なライブラリを導入します。

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

Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345); // 12345はI2Cアドレス、実際のデバイスによって異なる可能性があります

次に、セットアップとメインのループ内のコードを追加します。

void setup(void) {
  Serial.begin(9600);
  Serial.println("HMC5883L Test");

  if (!mag.begin()) {
    Serial.println("Could not find a valid HMC5883L sensor, check wiring!");
    while (1);
  }
}

void loop(void) {
  sensors_event_t event;
  mag.getEvent(&event);

  float heading = atan2(event.magnetic.y, event.magnetic.x);
  if (heading < 0)
    heading += 2 * PI;

  float degrees = heading * 180 / M_PI;

  Serial.print("Heading: ");
  Serial.print(degrees);
  Serial.println(" degrees");

  delay(500);
}

このコードは、HMC5883Lから得られた地磁気データを読み取り、シリアルモニタに方位角を表示するものです。適宜、コードを変更して必要な処理や表示を行うことができます。

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

最後に、書いたコードをArduinoにアップロードし、シリアルモニタを開いてHMC5883Lが正しく動作しているか確認します。センサーをさまざまな方向に向けてみて、方位角の変化を確認してください。

これで、ArduinoにHMC5883Lを接続し、地磁気センサーを制御するための基本的な手順が完了しました。このセンサーを活用して、方向検出や位置決めなどのアプリケーションを開発することができます。