GY-87 10DOF Module MPU6050 HMC5883L BMP180 Sensor

  1. 3-axis Gyro+Acceleration+Magnetic Fiel
  2. Air Pressure Module
  3. Power supply: 3-5V
  4. Build in ultra low noise linear LDO voltage regulator
  5. Built-in onboard filters, which reduce noise from motor and other high current electronics
  6. You can easily select two I2C address for MPU6050 by soldered jumper

Apple Shopping Event

Hurry and get discounts on all Apple devices up to 20%

650,00 EGP

10 People watching this product now!

Payment Methods:

Description

The HW-290/GY-87 10DOF MPU6050+HMC5883L+BMP180 3-axis Gyro + 3-axis Acceleration + 3-axis Magnetic Field + Air Pressure Sensor has 3 in one MPU6050 3x Axis accelerometer sensor and 3x Axis gyroscope sensor, HMC5883L Triple Axis Magnetometer, BMP180 Barometric Pressure Sensor.

It possesses a built-in ultra-low noise linear LDO voltage regulator, built-in onboard filters, which reduce noise from the motor and other high current electronics. It has all sensors connected to the I2C bus, you can easily select two I2C addresses for MPU6050 by soldered jumper, power LED, and build in the Logic level converter for I2C.

There are different types of magnetometer are available; the basic differences between MPU6000MPU6050 and MPU6500 is:

Difference between MPU 6050 Vs 6000 vs 6500

MPU6050 :

The MPU6050 devices combine a 3-axis gyroscope and a 3-axis accelerometer on the same silicon together with an onboard Digital Motion Processor (DMP) capable of processing complex 9-axis MotionFusion algorithms.

The parts’ integrated 9-axis MotionFusion algorithms access external magnetometers or other sensors through an auxiliary master I2C bus, allowing the devices to gather a full set of sensor data without intervention from the system processor. Are the devices offered in the same 4x4x0.9 mm QFN footprint and pinout as the current MPU-3000? the family of integrated 3-axis gyroscopes, providing a simple upgrade path and making it easy to fit on space-constrained boards.

The InvenSense Motion Apps Platform that comes with the MPU-6050 abstracts motion-based complexities, offloads sensor management from the operating system and provides a structured set of APIs for application development. For precision tracking of both fast and slow motions, the parts feature a user-programmable gyro full-scale range of ±250, ±500, ±1000, and ±2000°/sec (DPS) and a user-programmable accelerometer full-scale range of ±2g, ±4g, ±8g, and ±16g.

HMC5883 :

The HMC5883 is a surface mount multi-chip module designed for low field magnetic sensing with a digital interface for applications such as low-cost compassing and magnetometry. The HMC5883 includes our state-of-the-art, high-resolution HMC118X series magneto-resistive sensors plus Honeywell developed ASIC containing amplification, automatic degaussing strap drivers, offset cancellation, 12-bit ADC that enables 1° to 2°compass heading accuracy. Applications for the HMC5883 include Mobile Phones, Netbooks, Consumer Electronics, Auto Navigation Systems, and Personal Navigation Devices.

BMP180 :

This precision sensor is the best low-cost sensing solution for measuring barometric pressure and temperature. Because pressure changes with altitude you can also use it as an altimeter! Using the sensor is easy.

The BMP180 is the next generation of sensors and replaces the BMP085. The good news is that it is completely identical to the BMP085 in terms of firmware/software – you can use our BMP085 tutorial and any example code/libraries as a drop-in replacement. The XCLR pin is not physically present on the BMP180 so if you need to know that data is ready you will need to query the I2C bus.

This board is 5V compliant – a 3.3V regulator and an I2C level shifter circuit are included so you can use this sensor safely with 5V logic and

APPLICATIONS:
  1. FPV, RC, and Robots systems
  2. GPS navigation systems
  3. Impact recognition and logging
  4. Gaming and virtual reality input devices
  5. Motion-activated functions
  6. Intelligent power saving for handheld devices
  7. Vibration monitoring and compensation
  8. Free-fall detection
  9. 6D-orientation detection

Note: You may receive the product with the name printed GY-87 or  HW-290, most probably it’ll be HW-290. Both are the same in functionality. Buy accordingly.

 


Features :

  1. 3-axis Gyro+Acceleration+Magnetic Fiel
  2. Air Pressure Module
  3. Build-in ultra-low noise linear LDO voltage regulator
  4. Built-in onboard filters, which reduce noise from motor and other high current electronics
  5. You can easily select two I2C addresses for MPU6050 by soldered jumper
  6. Power LED
  7. Build in the Logic level converter for I2C
  8. Designed for 5V logic level

Package Includes :

1 x 10DOF HW-290/GY-87 Sensor Module.
1 x Straight pin Male header
1 x Curved pin Male header.

🔌
Pin Connections
1 Table
Pin Connections Table 1
BoardSensor PinConnection
GY-87VCC/GND/SDA/SCL3.3-5V / GND / board SDA / board SCL (shared bus)
📟
GY-87 10DOF Module MPU6050 HMC5883L BMP180 Sensor
7 Examples • C/C++ | Boards: Arduino Uno, Arduino Nano, Arduino Mega, ESP32, ESP8266, STM32, Raspberry Pi Pico
GY-87 10DOF Module MPU6050 HMC5883L BMP180 Sensor - Arduino Uno
GY-87 10DOF Module MPU6050 HMC5883L BMP180 Sensor - Arduino Nano
GY-87 10DOF Module MPU6050 HMC5883L BMP180 Sensor - Arduino Mega
GY-87 10DOF Module MPU6050 HMC5883L BMP180 Sensor - ESP32
GY-87 10DOF Module MPU6050 HMC5883L BMP180 Sensor - ESP8266
GY-87 10DOF Module MPU6050 HMC5883L BMP180 Sensor - STM32
GY-87 10DOF Module MPU6050 HMC5883L BMP180 Sensor - Raspberry Pi Pico
📄 File: gy-87_10dof_module_mpu6050_hmc5883l_bmp180_sensor_-_arduino_uno.inoArduino Uno
1418 characters
1//ekostra.com
2//electronics store in egypt
3//+201008896258
4
5// I2C wiring for Arduino Uno: A4=SDA, A5=SCL. VCC->3.3V or 5V per module label, GND->GND.
6#include <Wire.h>
7#define MPU_ADDR 0x68 // MPU-6050 I2C address (AD0 low)
8
9int16_t ax, ay, az, gx, gy, gz;
10
11void setup() {
12 Serial.begin(115200);
13 Wire.begin(); // uses this board's default SDA/SCL pins
14 Wire.beginTransmission(MPU_ADDR);
15 Wire.write(0x6B); // PWR_MGMT_1 register
16 Wire.write(0); // wake the MPU-6050 up (it starts in sleep mode)
17 Wire.endTransmission(true);
18}
19
20void loop() {
21 Wire.beginTransmission(MPU_ADDR);
22 Wire.write(0x3B); // starting register: ACCEL_XOUT_H
23 Wire.endTransmission(false);
24 Wire.requestFrom(MPU_ADDR, 14, true); // 7 registers x 2 bytes
25
26 ax = Wire.read() << 8 | Wire.read();
27 ay = Wire.read() << 8 | Wire.read();
28 az = Wire.read() << 8 | Wire.read();
29 Wire.read(); Wire.read(); // skip temperature registers
30 gx = Wire.read() << 8 | Wire.read();
31 gy = Wire.read() << 8 | Wire.read();
32 gz = Wire.read() << 8 | Wire.read();
33
34 Serial.print("Accel X="); Serial.print(ax / 16384.0);
35 Serial.print("g Y="); Serial.print(ay / 16384.0);
36 Serial.print("g Z="); Serial.print(az / 16384.0);
37 Serial.print("g Gyro X="); Serial.print(gx / 131.0);
38 Serial.print(" Y="); Serial.print(gy / 131.0);
39 Serial.print(" Z="); Serial.println(gz / 131.0);
40
41 delay(200);
42}
📄 File: gy-87_10dof_module_mpu6050_hmc5883l_bmp180_sensor_-_arduino_nano.inoArduino Nano
1419 characters
1//ekostra.com
2//electronics store in egypt
3//+201008896258
4
5// I2C wiring for Arduino Nano: A4=SDA, A5=SCL. VCC->3.3V or 5V per module label, GND->GND.
6#include <Wire.h>
7#define MPU_ADDR 0x68 // MPU-6050 I2C address (AD0 low)
8
9int16_t ax, ay, az, gx, gy, gz;
10
11void setup() {
12 Serial.begin(115200);
13 Wire.begin(); // uses this board's default SDA/SCL pins
14 Wire.beginTransmission(MPU_ADDR);
15 Wire.write(0x6B); // PWR_MGMT_1 register
16 Wire.write(0); // wake the MPU-6050 up (it starts in sleep mode)
17 Wire.endTransmission(true);
18}
19
20void loop() {
21 Wire.beginTransmission(MPU_ADDR);
22 Wire.write(0x3B); // starting register: ACCEL_XOUT_H
23 Wire.endTransmission(false);
24 Wire.requestFrom(MPU_ADDR, 14, true); // 7 registers x 2 bytes
25
26 ax = Wire.read() << 8 | Wire.read();
27 ay = Wire.read() << 8 | Wire.read();
28 az = Wire.read() << 8 | Wire.read();
29 Wire.read(); Wire.read(); // skip temperature registers
30 gx = Wire.read() << 8 | Wire.read();
31 gy = Wire.read() << 8 | Wire.read();
32 gz = Wire.read() << 8 | Wire.read();
33
34 Serial.print("Accel X="); Serial.print(ax / 16384.0);
35 Serial.print("g Y="); Serial.print(ay / 16384.0);
36 Serial.print("g Z="); Serial.print(az / 16384.0);
37 Serial.print("g Gyro X="); Serial.print(gx / 131.0);
38 Serial.print(" Y="); Serial.print(gy / 131.0);
39 Serial.print(" Z="); Serial.println(gz / 131.0);
40
41 delay(200);
42}
📄 File: gy-87_10dof_module_mpu6050_hmc5883l_bmp180_sensor_-_arduino_mega.inoArduino Mega
1421 characters
1//ekostra.com
2//electronics store in egypt
3//+201008896258
4
5// I2C wiring for Arduino Mega: D20=SDA, D21=SCL. VCC->3.3V or 5V per module label, GND->GND.
6#include <Wire.h>
7#define MPU_ADDR 0x68 // MPU-6050 I2C address (AD0 low)
8
9int16_t ax, ay, az, gx, gy, gz;
10
11void setup() {
12 Serial.begin(115200);
13 Wire.begin(); // uses this board's default SDA/SCL pins
14 Wire.beginTransmission(MPU_ADDR);
15 Wire.write(0x6B); // PWR_MGMT_1 register
16 Wire.write(0); // wake the MPU-6050 up (it starts in sleep mode)
17 Wire.endTransmission(true);
18}
19
20void loop() {
21 Wire.beginTransmission(MPU_ADDR);
22 Wire.write(0x3B); // starting register: ACCEL_XOUT_H
23 Wire.endTransmission(false);
24 Wire.requestFrom(MPU_ADDR, 14, true); // 7 registers x 2 bytes
25
26 ax = Wire.read() << 8 | Wire.read();
27 ay = Wire.read() << 8 | Wire.read();
28 az = Wire.read() << 8 | Wire.read();
29 Wire.read(); Wire.read(); // skip temperature registers
30 gx = Wire.read() << 8 | Wire.read();
31 gy = Wire.read() << 8 | Wire.read();
32 gz = Wire.read() << 8 | Wire.read();
33
34 Serial.print("Accel X="); Serial.print(ax / 16384.0);
35 Serial.print("g Y="); Serial.print(ay / 16384.0);
36 Serial.print("g Z="); Serial.print(az / 16384.0);
37 Serial.print("g Gyro X="); Serial.print(gx / 131.0);
38 Serial.print(" Y="); Serial.print(gy / 131.0);
39 Serial.print(" Z="); Serial.println(gz / 131.0);
40
41 delay(200);
42}
📄 File: gy-87_10dof_module_mpu6050_hmc5883l_bmp180_sensor_-_esp32.inoESP32
1420 characters
1//ekostra.com
2//electronics store in egypt
3//+201008896258
4
5// I2C wiring for ESP32: GPIO21=SDA, GPIO22=SCL. VCC->3.3V or 5V per module label, GND->GND.
6#include <Wire.h>
7#define MPU_ADDR 0x68 // MPU-6050 I2C address (AD0 low)
8
9int16_t ax, ay, az, gx, gy, gz;
10
11void setup() {
12 Serial.begin(115200);
13 Wire.begin(); // uses this board's default SDA/SCL pins
14 Wire.beginTransmission(MPU_ADDR);
15 Wire.write(0x6B); // PWR_MGMT_1 register
16 Wire.write(0); // wake the MPU-6050 up (it starts in sleep mode)
17 Wire.endTransmission(true);
18}
19
20void loop() {
21 Wire.beginTransmission(MPU_ADDR);
22 Wire.write(0x3B); // starting register: ACCEL_XOUT_H
23 Wire.endTransmission(false);
24 Wire.requestFrom(MPU_ADDR, 14, true); // 7 registers x 2 bytes
25
26 ax = Wire.read() << 8 | Wire.read();
27 ay = Wire.read() << 8 | Wire.read();
28 az = Wire.read() << 8 | Wire.read();
29 Wire.read(); Wire.read(); // skip temperature registers
30 gx = Wire.read() << 8 | Wire.read();
31 gy = Wire.read() << 8 | Wire.read();
32 gz = Wire.read() << 8 | Wire.read();
33
34 Serial.print("Accel X="); Serial.print(ax / 16384.0);
35 Serial.print("g Y="); Serial.print(ay / 16384.0);
36 Serial.print("g Z="); Serial.print(az / 16384.0);
37 Serial.print("g Gyro X="); Serial.print(gx / 131.0);
38 Serial.print(" Y="); Serial.print(gy / 131.0);
39 Serial.print(" Z="); Serial.println(gz / 131.0);
40
41 delay(200);
42}
📄 File: gy-87_10dof_module_mpu6050_hmc5883l_bmp180_sensor_-_esp8266.inoESP8266
1428 characters
1//ekostra.com
2//electronics store in egypt
3//+201008896258
4
5// I2C wiring for ESP8266: D2(GPIO4)=SDA, D1(GPIO5)=SCL. VCC->3.3V or 5V per module label, GND->GND.
6#include <Wire.h>
7#define MPU_ADDR 0x68 // MPU-6050 I2C address (AD0 low)
8
9int16_t ax, ay, az, gx, gy, gz;
10
11void setup() {
12 Serial.begin(115200);
13 Wire.begin(); // uses this board's default SDA/SCL pins
14 Wire.beginTransmission(MPU_ADDR);
15 Wire.write(0x6B); // PWR_MGMT_1 register
16 Wire.write(0); // wake the MPU-6050 up (it starts in sleep mode)
17 Wire.endTransmission(true);
18}
19
20void loop() {
21 Wire.beginTransmission(MPU_ADDR);
22 Wire.write(0x3B); // starting register: ACCEL_XOUT_H
23 Wire.endTransmission(false);
24 Wire.requestFrom(MPU_ADDR, 14, true); // 7 registers x 2 bytes
25
26 ax = Wire.read() << 8 | Wire.read();
27 ay = Wire.read() << 8 | Wire.read();
28 az = Wire.read() << 8 | Wire.read();
29 Wire.read(); Wire.read(); // skip temperature registers
30 gx = Wire.read() << 8 | Wire.read();
31 gy = Wire.read() << 8 | Wire.read();
32 gz = Wire.read() << 8 | Wire.read();
33
34 Serial.print("Accel X="); Serial.print(ax / 16384.0);
35 Serial.print("g Y="); Serial.print(ay / 16384.0);
36 Serial.print("g Z="); Serial.print(az / 16384.0);
37 Serial.print("g Gyro X="); Serial.print(gx / 131.0);
38 Serial.print(" Y="); Serial.print(gy / 131.0);
39 Serial.print(" Z="); Serial.println(gz / 131.0);
40
41 delay(200);
42}
📄 File: gy-87_10dof_module_mpu6050_hmc5883l_bmp180_sensor_-_stm32.inoSTM32
1435 characters
1//ekostra.com
2//electronics store in egypt
3//+201008896258
4
5// I2C wiring for STM32: PB7=SDA, PB6=SCL (Blue Pill / F103C8). VCC->3.3V or 5V per module label, GND->GND.
6#include <Wire.h>
7#define MPU_ADDR 0x68 // MPU-6050 I2C address (AD0 low)
8
9int16_t ax, ay, az, gx, gy, gz;
10
11void setup() {
12 Serial.begin(115200);
13 Wire.begin(); // uses this board's default SDA/SCL pins
14 Wire.beginTransmission(MPU_ADDR);
15 Wire.write(0x6B); // PWR_MGMT_1 register
16 Wire.write(0); // wake the MPU-6050 up (it starts in sleep mode)
17 Wire.endTransmission(true);
18}
19
20void loop() {
21 Wire.beginTransmission(MPU_ADDR);
22 Wire.write(0x3B); // starting register: ACCEL_XOUT_H
23 Wire.endTransmission(false);
24 Wire.requestFrom(MPU_ADDR, 14, true); // 7 registers x 2 bytes
25
26 ax = Wire.read() << 8 | Wire.read();
27 ay = Wire.read() << 8 | Wire.read();
28 az = Wire.read() << 8 | Wire.read();
29 Wire.read(); Wire.read(); // skip temperature registers
30 gx = Wire.read() << 8 | Wire.read();
31 gy = Wire.read() << 8 | Wire.read();
32 gz = Wire.read() << 8 | Wire.read();
33
34 Serial.print("Accel X="); Serial.print(ax / 16384.0);
35 Serial.print("g Y="); Serial.print(ay / 16384.0);
36 Serial.print("g Z="); Serial.print(az / 16384.0);
37 Serial.print("g Gyro X="); Serial.print(gx / 131.0);
38 Serial.print(" Y="); Serial.print(gy / 131.0);
39 Serial.print(" Z="); Serial.println(gz / 131.0);
40
41 delay(200);
42}
📄 File: gy-87_10dof_module_mpu6050_hmc5883l_bmp180_sensor_-_raspberry_pi_pico.inoRaspberry Pi Pico
1430 characters
1//ekostra.com
2//electronics store in egypt
3//+201008896258
4
5// I2C wiring for Raspberry Pi Pico: GPIO4=SDA, GPIO5=SCL. VCC->3.3V or 5V per module label, GND->GND.
6#include <Wire.h>
7#define MPU_ADDR 0x68 // MPU-6050 I2C address (AD0 low)
8
9int16_t ax, ay, az, gx, gy, gz;
10
11void setup() {
12 Serial.begin(115200);
13 Wire.begin(); // uses this board's default SDA/SCL pins
14 Wire.beginTransmission(MPU_ADDR);
15 Wire.write(0x6B); // PWR_MGMT_1 register
16 Wire.write(0); // wake the MPU-6050 up (it starts in sleep mode)
17 Wire.endTransmission(true);
18}
19
20void loop() {
21 Wire.beginTransmission(MPU_ADDR);
22 Wire.write(0x3B); // starting register: ACCEL_XOUT_H
23 Wire.endTransmission(false);
24 Wire.requestFrom(MPU_ADDR, 14, true); // 7 registers x 2 bytes
25
26 ax = Wire.read() << 8 | Wire.read();
27 ay = Wire.read() << 8 | Wire.read();
28 az = Wire.read() << 8 | Wire.read();
29 Wire.read(); Wire.read(); // skip temperature registers
30 gx = Wire.read() << 8 | Wire.read();
31 gy = Wire.read() << 8 | Wire.read();
32 gz = Wire.read() << 8 | Wire.read();
33
34 Serial.print("Accel X="); Serial.print(ax / 16384.0);
35 Serial.print("g Y="); Serial.print(ay / 16384.0);
36 Serial.print("g Z="); Serial.print(az / 16384.0);
37 Serial.print("g Gyro X="); Serial.print(gx / 131.0);
38 Serial.print(" Y="); Serial.print(gy / 131.0);
39 Serial.print(" Z="); Serial.println(gz / 131.0);
40
41 delay(200);
42}
Combo breakout: MPU6050 (accel+gyro) + HMC5883L (compass) + BMP180 (pressure) all on one I2C bus at different addresses. This example reads the MPU6050 half; add the HMC5883L example below on the same bus for the compass.

Specification

Specification

WeightWeight6 g
Dimensions3 × 2 × 1 cm
typeGY-87
driver-icMPU6050+HMC5883L+BMP180
operating-voltage-vdc3 ~ 5
gyro-range-s± 250, 500, 1000, 2000
acceleration-rangeg± 2 ± 4 ± 8 ± 16
communicationI2C Protocol

Customer Reviews