- Published on
Arduinoに「HMC5883L-」を接続し制御する
1526文字3分で読めます–––
閲覧数
- Authors
- Name
- 将 有坂
- short bio
- ラズパイやArduinoで電子工作をしてます。
はじめに
Arduinoは様々なセンサーやモジュールを組み合わせて利用できるプログラム可能なマイコンボードです。この記事では、地磁気センサー「HMC5883L」をArduinoに接続し、制御する方法について詳しく解説します。
※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚
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を接続し、地磁気センサーを制御するための基本的な手順が完了しました。このセンサーを活用して、方向検出や位置決めなどのアプリケーションを開発することができます。
※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚