Skip to main content

Quick Start

Connect the breakout to a microcontroller over I2C, install the library, and print pressure and temperature readings.

You program the controller connected to this breakout. The breakout itself is not flashed.

The board is 3.3 V only. It has no regulator or level shifter, and the BMP585 is rated to 3.6 V. Do not connect 5 V to 3V3 or to the signal pins.

1. Connect the breakout board​

Wire the header's four pins to your controller's 3.3 V supply, ground and I2C pins. A Qwiic cable does the same in one plug: each Qwiic connector carries 3V3, SDA, SCL and GND.

The table below uses a NULA DeepSleep. With Soldered NULA DeepSleep ESP32S3 selected as the board, the ESP32 board package sets GPIO 8 as SDA and GPIO 9 as SCL, and Wire.begin() with no arguments uses those pins.

NULA DeepSleepSoldered Pressure & Temperature Sensor BMP585 breakout
GNDGND
3V33V3
IO8SDA
IO9SCL
Wiring diagram: the NULA DeepSleep connected to the Soldered Pressure & Temperature Sensor BMP585 breakout: GND to GND, 3V3 to 3V3, IO8 to SDA, IO9 to SCL

Either GND pin on the board works: both are the same ground.

2. Install the library​

Install Soldered BMP585 Barometric Pressure Sensor from its GitHub repository.

🔗Soldered BMP585 Arduino library

Verified Arduino library at commit c24648c

→

Tip: downloading from GitHub. On the library's GitHub page, click the green Code button and choose Download ZIP, then add it in Arduino IDE with Sketch → Include Library → Add .ZIP Library....

3. Run the first example​

Open basicReadings from the library's examples, select your board and port, and upload it. The sketch starts the sensor at its default address, 0x47, and prints a reading ten times a second.

Select Board
basicReadings.ino
#include <BMP585-SOLDERED.h>

// Create an instance of the BMP585 sensor
Soldered_BMP585 pressureSensor;

void setup()
{
// Initialize serial for output
Serial.begin(115200);
Serial.println("BMP585 Example - Basic Readings");

// Initialize I2C bus
Wire.begin();

// Check if sensor is connected and initialize it.
// Address is optional, defaults to 0x47
while (pressureSensor.begin() != BMP5_OK)
{
Serial.println("Error: BMP585 not connected, check wiring and I2C address!");
delay(1000);
}

Serial.println("BMP585 connected!");
}

void loop()
{
// Get new measurements from the sensor. This must be called before
// accessing the pressure and temperature data, otherwise it will never update
if (pressureSensor.getSensorData() == BMP5_OK)
{
Serial.print("Pressure: ");
Serial.print(pressureSensor.pressure, 2);
Serial.print(" Pa\t");
Serial.print("Temperature: ");
Serial.print(pressureSensor.temperature, 2);
Serial.println(" degC");
}

// Print 10x per second
delay(100);
}

4. Check the result​

Open the Serial Monitor at 115200 baud. When the sensor answers, you see:

Serial MonitorAutoscrollShow timestampNewline115200 baud
Message (Enter to send message to the board)
BMP585 Example - Basic Readings
BMP585 connected!
Pressure: 101316.52 Pa Temperature: 23.42 degC
Pressure: 101316.86 Pa Temperature: 23.43 degC
Pressure: 101318.69 Pa Temperature: 23.43 degC
Pressure: 101317.38 Pa Temperature: 23.42 degC

A new line arrives every 100 ms: the pressure in pascals and the temperature in °C, each with two decimals.

If you see Error: BMP585 not connected, check wiring and I2C address! once a second instead, the sensor is not answering at 0x47.

5. If it does not work​

Continue with Troubleshooting and retry this smallest example after each change.