GY-87 clone (HW-290) Addressing issues

I have purchased a gy87 clone (HW-290) and I am in the process of testing the module.

a similar thread covering majority of the topic can be found at https://forum.arduino.cc/index.php?topic=223345.0

My setup is using Arduino IDE 1.87, NANO using atmega328P “old boot loader”

The pin outs and code are exactly the same as http://www.techmonkeybusiness.com/the-gy87-combined-sensor-test-sketch.html

Noting the obvious “can not find sensors” messages in serial monitor; I did an I2c sniff and got the following addresses on my arduino NANO

Scanning…
I2C device found at address 0x0D !
I2C device found at address 0x68 !
I2C device found at address 0x77 !
done

The following address is different to the one originality specified in this thread.

I2C device found at address 0x0D !

So my next task was to find the data sheet https://store.invensense.com/datasheets/invensense/MPU-6050_DataSheet_V3%204.pdf

Page 25 7.10 states Logic conditions for communication.

Page 26 7.11 states that there is a “Master” and “PassThrough” mode.

Page 28 7.13 states there is an "interface bypass multiplexer to get to a third party external compass sensor which my module has.

Can some one please explain to me how on Page 38 section 10 ; how to set the conditions required to set the slave mode AND sniff for the addresses my module actually uses.

page 15 section 6.4 states two I2c addresses AD0 = 0, 1101000 AD1 = 1, 1101001 is this useful?

Thank you for reading

page 15 section 6.4 states two I2c addresses AD0 = 0, 1101000 AD1 = 1, 1101001 is this useful?

Not at all. You must have missed the two sentences preceding what you presented. The device address depends upon the state of the AD0 pin. One can deduce that AD0 is low because there was an I2C device found at 0x68 which is the MPU6050. All normal there.

But, it looks like your 5883 has a different address as you found, perhaps it’s a different device manufacturer. Not sure if there is anything conclusive in this: wrong i2c address - Raspberry Pi Forums

Based on the different device, I’d say your test sketch needs some mods. Ah, the joys of buying cheap clones with no datasheets.

Edit: just noted in another thread:

Note that there are QMC5883 modules that are falsely advertised as HMC5883. The QMC5883 ICs require a different library.

[http://forum.arduino.cc/index.php?topic=579163.0[/quote]

](http://forum.arduino.cc/index.php?topic=579163.0)

I understand now that the ADO pin voltage is basically the on off switch to the slave communications circuit and the binary addresses provided allows me to manipulate the slave circuits state.

I get what they have done now. The MPU6050 is a slave to the Arduino processor and master for the sensors it is attached to, the bypass mode is really only there for high speed direct manipulation for more demanding applications.

Looks like I got overwhelmed with all the information and I guess I had to ask some one else to, well… state the obvious. I’m lucky we have guys like you on this forum for this reason, thank you wattsthat for your help.

I know 0x77 is the barometer and I get the correct readouts using the adafruit library, 0x68 is the MPU6050 and works via tockns library.

You are right The last component is different to a gy-87. The IC is a DA 5883 7005. Obviously I will have to track down what it is and what it does and how to address it correctly.

This problem has been encountered before and the link for the magnetometer's data sheet can be found at

The DA 5883 xxxx is a Chinese clone.

I2c address 0x0D
Operating modes on page 13.
Register addresses can be found on page 16.

Here is a tested and working library for the qmc5883l.

Hello everyone, I purchase GY87 clone(HW-290). and i am trying to connect it with arduino uno. But I am facing problem with it's I2C address.

I scan for I2C address and I found

Scanning...
I2C device found at address 0x68 !
I2C device found at address 0x77 !
done

I facing problem with Magnetometer
in my HW-290 I found DB 5883 sensor is used

I am facing the same problem of skjalal149 .
I am getting just 2 addresses :

Scanning…
I2C device found at address 0x68 !
I2C device found at address 0x77 !
done

and I am also using HW-290

My code is :

#include <Wire.h>

void setup()
{
	Wire.begin();

	Serial.begin(9600);
	while (!Serial);             // Leonardo: wait for serial monitor
	Serial.println("\nI2C Scanner");
}

void loop()
{
	byte error, address;
	int nDevices;

	Serial.println("Scanning...");

	nDevices = 0;
	for (address = 1; address < 127; address++)	//can use 248
	{
		// The i2c_scanner uses the return value of
		// the Write.endTransmisstion to see if
		// a device did acknowledge to the address.
		Wire.beginTransmission(address);
		error = Wire.endTransmission();

		if (error == 0)
		{
			Serial.print("I2C device found at address 0x");
			if (address < 16)
				Serial.print("0");
			Serial.print(address, HEX);
			Serial.println("  !");

			nDevices++;
		}
		else if (error == 4)
		{
			Serial.print("Unknown error at address 0x");
			if (address < 16)
			{
				Serial.print("0");
			}
			Serial.println(address, HEX);
		}
	}
	if (nDevices == 0)
		Serial.println("No I2C devices found\n");
	else
		Serial.println("done\n");

	delay(5000);           // wait 5 seconds for next scan
}