Product Overview
The GY-65 BMP085 Barometric Pressure Sensor Module is a high-precision, ultra-low power digital pressure and temperature sensor module designed for altitude measurement, weather monitoring, and GPS navigation applications. Based on the Bosch BMP085 sensor chip, this module provides accurate absolute pressure readings (300 to 1100 hPa) and can calculate altitude with a resolution as fine as 0.25 meters in high-resolution mode .
The BMP085 sensor integrates a high-linearity pressure sensor with a 16-bit ΣΔ ADC (Analog-to-Digital Converter), a factory-calibrated temperature sensor, and a control unit with E²PROM. It is factory-calibrated with 11 coefficients stored in its internal memory, eliminating the need for user calibration and ensuring consistent, reliable readings out of the box .
What sets the GY-65 apart is its combination of high precision and ultra-low power consumption. With active current as low as 5 µA in standard mode and standby current of just 0.1 µA, it is perfectly suited for battery-powered portable devices . The sensor operates over a wide pressure range covering altitudes from below sea level up to approximately 9,000 meters (30,000 feet).
The GY-65 breakout board includes all necessary support components and communicates via the I²C interface, making it compatible with a vast range of microcontrollers, including Arduino, ESP32, ESP8266, STM32, and Raspberry Pi. The module is 3.3V and 5V compatible, allowing direct connection to most development boards without level shifters .
Key Features
-
High-Precision Pressure Sensing: Pressure range of 300 to 1100 hPa, covering altitudes from -500 meters to +9,000 meters .
-
Exceptional Resolution: Ultra-high resolution mode achieves 0.03 hPa accuracy, translating to altitude resolution of approximately 0.25 meters (8 inches) .
-
Integrated Temperature Sensor: Built-in temperature output with factory calibration for accurate thermal compensation of pressure readings .
-
Ultra-Low Power Consumption: Active current of 5 µA in standard mode, standby current of 0.1 µA – ideal for battery-powered IoT devices .
-
I²C Digital Interface: Simple 2-wire communication (SDA, SCL) with standard I²C protocol .
-
Wide Voltage Compatibility: Operates on 3.3V or 5V power, compatible with both 3.3V and 5V logic systems .
-
Factory Calibrated: 11 calibration coefficients stored in internal E²PROM ensure accurate readings without user calibration .
-
Fast Response Time: 7.5 ms conversion time for pressure and temperature readings .
-
Temperature Compensation: Built-in temperature sensor automatically compensates pressure readings for ambient temperature variations .
-
Compact Form Factor: Small module size easy to integrate into space-constrained projects .
Technical Specifications
Pinout & Connection Guide
The GY-65 module features a 6-pin configuration, though only 4 pins are required for basic operation .
Pin Definitions
I²C Pin Mapping for Common Development Boards
Wiring Diagram (Arduino Uno)
GY-65 Module → Arduino Uno
─────────────────────────────────────────
VCC → 5V
GND → GND
SCL → A5 (SCL)
SDA → A4 (SDA)
Important Note: Most GY-65 modules include onboard pull-up resistors, but if you experience communication issues, you may need to add external 4.7kΩ pull-up resistors on the SDA and SCL lines.
Theory of Operation
Pressure-to-Altitude Relationship
Atmospheric pressure decreases with increasing altitude. The BMP085 measures absolute barometric pressure, from which altitude can be calculated using the barometric formula. The high resolution of the sensor (0.03 hPa in ultra-high resolution mode) enables altitude detection with approximately 0.25 meter resolution .
Oversampling (OSS) Settings
The BMP085 supports multiple oversampling settings that trade off between conversion speed and noise level:
Higher OSS settings provide better noise reduction and resolution but require longer conversion times. For altitude measurement applications requiring centimeter-level accuracy, OSS=2 or OSS=3 are recommended.
Temperature Compensation
The BMP085 includes an integrated temperature sensor that is used to compensate the pressure readings. The 16-bit ADC measures both pressure and temperature, and the factory-stored calibration coefficients are applied to obtain accurate, temperature-compensated results .
Usage Guide
Software Setup (Arduino IDE)
Step 1: Install Required Libraries
The BMP085 is supported by several libraries. The most commonly used are:
Option A: “Adafruit BMP085” Library – Simple, well-documented, and widely used
Option B: “BMP085” Library – Lightweight alternative
Install via Arduino Library Manager:
-
Open Arduino IDE → Sketch → Include Library → Manage Libraries
-
Search for “BMP085”
-
Install the library by Adafruit (recommended)
Step 2: Basic Test Sketch
GY-65 BMP085 Barometric Pressure Sensor Example
Reads pressure, temperature, and calculates altitude
*/
#include <Wire.h>
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;
const float SEA_LEVEL_PRESSURE_HPA = 1013.25;
void setup() {
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("BMP085 sensor not found! Check wiring.");
while (1);
}
Serial.println("GY-65 BMP085 Sensor Ready");
Serial.println("-----------------------------");
}
void loop() {
float temperature = bmp.readTemperature();
int32_t pressurePa = bmp.readPressure();
float pressureHPa = pressurePa / 100.0;
float altitude = bmp.readAltitude();
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Pressure: ");
Serial.print(pressureHPa);
Serial.println(" hPa");
Serial.print("Pressure: ");
Serial.print(pressurePa);
Serial.println(" Pa");
Serial.print("Altitude: ");
Serial.print(altitude);
Serial.println(" m");
Serial.println("-----------------------------");
delay(2000);
}
Step 3: Selecting Oversampling Mode
For higher accuracy, you can modify the oversampling setting:
Adafruit_BMP085 bmp(BMP085_ULTRA_HIGH_RES);
Altitude Calculation Tips
For accurate altitude readings, you should provide the local sea-level pressure. This can be obtained from:
float altitude = bmp.readAltitude(localSeaLevelPressure);
Using with Different Microcontrollers
Arduino (5V Logic):
ESP32 / ESP8266 (3.3V Logic):
-
Connect VCC to 3.3V
-
Connect SCL/SDA to appropriate I²C pins (GPIO21/22 for ESP32, GPIO4/5 for ESP8266)
-
The sensor works well with both 3.3V and 5V logic
Raspberry Pi (Python):
-
Enable I²C via raspi-config
-
Install required libraries: pip3 install Adafruit_BMP
-
Connect VCC to 3.3V (Pin 1), GND to GND, SCL to GPIO3 (Pin 5), SDA to GPIO2 (Pin 3)
Q: How accurate is the altitude measurement?
The BMP085 can achieve altitude resolution of approximately 0.25 meters (8 inches) in ultra-high resolution mode . However, absolute accuracy depends on proper calibration with local sea-level pressure. For relative altitude changes (e.g., climbing stairs), the sensor is extremely precise.
Q: What is the difference between GY-65 and BMP180/BMP280 sensors?
The GY-65 uses the BMP085 sensor, which is an older but still capable sensor. The BMP180 and BMP280 offer improved specifications (lower noise, wider range) but the BMP085 remains a cost-effective choice for many altitude and weather applications. The GY-65 module is widely available and well-supported by libraries .
Q: Can I use this sensor with 5V logic microcontrollers like Arduino Uno?
Yes. The GY-65 module is both 3.3V and 5V compatible, so it can be used directly with 5V Arduinos without level shifters .
Q: What is the default I²C address of the GY-65 module?
The BMP085 has a fixed I²C address of 0x77 (119 decimal) .
Q: Why is my module not detected on the I²C bus?
Common issues:
-
Wiring: Verify VCC, GND, SCL, and SDA connections
-
Pull-up resistors: Ensure 4.7kΩ pull-ups are present on SCL and SDA lines
-
Power: Ensure your power supply can provide adequate current
-
Library: Verify the correct library is installed
Q: How do I improve altitude reading stability?
For stable altitude readings:
-
Use ultra-high resolution mode (OSS=3) for maximum precision
-
Apply a moving average filter to smooth readings
-
Allow the sensor to warm up for a few minutes before critical measurements
-
Protect the sensor from direct airflow (wind)
-
Re-calibrate the sea-level pressure reference when moving to different locations
Q: What oversampling setting should I use?
The choice depends on your application:
-
OSS=0 (Ultra-Low Power): Battery-powered, low-power applications
-
OSS=1 (Standard): General purpose, default setting
-
OSS=2 (High Resolution): Higher accuracy needs
-
OSS=3 (Ultra-High Resolution): Maximum precision (0.25m altitude resolution)
Q: Do I need to calibrate the sensor?
No. The BMP085 sensor is factory-calibrated, and the 11 calibration coefficients are stored in the sensor’s internal E²PROM. Your library will automatically read these coefficients and use them to convert raw ADC readings to accurate pressure and temperature values. No user calibration is required .
Q: Is the GY-65 suitable for use in drones or UAVs?
The BMP085 works well for altitude hold in drones, but it has a slower update rate than newer sensors like the BMP280 or MS5611. For basic altitude stabilization, it is sufficient, but for acrobatic or high-speed flight, a faster sensor is recommended.
Q: What is the power consumption in different modes?
The sensor is very power-efficient:
-
Active mode (converting): 5 µA typical
-
Standby mode: 0.1 µA
-
For battery-powered applications, place the sensor in standby between readings to conserve power