3-Axis Compass Magnetometer Sensor Module GY-273 - Digital Output, I2C Interface - HMC5883L

  • Was  RM25.00 
  • RM15.00

  • Product Code: GY-273
  • Availability: In Stock

The GY-273 module is based on the Honeywell HMC5883L IC for low-field magnetic sensing with a digital interface for applications such as lowcost compassing and magnetometry. The HMC5883L includes state-of-theart, high-resolution HMC118X series magneto-resistive sensors plus an ASIC containing amplification, automatic degaussing strap drivers, offset cancellation, and a 12-bit ADC that enables 1° to 2° compass heading accuracy. The I2C serial bus allows for easy interface.

The HMC5883L utilizes Honeywell’s Anisotropic Magnetoresistive (AMR) technology that provides advantages over other magnetic sensor technologies. These anisotropic, directional sensors feature precision in-axis sensitivity and linearity. These sensors’ solid-state construction with very low cross-axis sensitivity is designed to measure both the direction and the magnitude of Earth’s magnetic fields, from milli-gauss to 8 gauss.


  • HMC5883L module (three-axis magnetic field module)
  • Model: GY-273
  • IC: HMC5883L
  • Module Power supply : 3-5v
  • Communication: IIC communication protocol
  • Measuring range: ± 1.3-8 gauss
  • Size: 13.9 x 18.5mm






#include <Wire.h> //I2C Arduino Library

#define addr 0x1E //I2C Address for The HMC5883

void setup(){
  Wire.beginTransmission(addr); //start talking
  Wire.write(0x02); // Set the Register
  Wire.write(0x00); // Tell the HMC5883 to Continuously Measure

void loop(){
  int x,y,z; //triple axis data

  //Tell the HMC what regist to begin writing data into
  Wire.write(0x03); //start with register 3.
 //Read the data.. 2 bytes for each axis.. 6 total bytes
  Wire.requestFrom(addr, 6);
    x = Wire.read()<<8; //MSB  x 
    x |= Wire.read(); //LSB  x
    z = Wire.read()<<8; //MSB  z
    z |= Wire.read(); //LSB z
    y = Wire.read()<<8; //MSB y
    y |= Wire.read(); //LSB y
  // Show Values
  Serial.print("X Value: ");
  Serial.print("Y Value: ");
  Serial.print("Z Value: ");

Open the Serial Monitor and Verify Your Output.

Your output should look something like:

X Value: 200
Y Value: 191
Z Value: -356

....... etc

Once you’ve established that you have an output,  try turning your device along it’s various axes and view the results.

Write a review

Note: HTML is not translated!
    Bad           Good