BME280 breakout
BME280 breakout pinout (4-pin and 6-pin), 0x76 vs 0x77, 3.3 V-only boards vs boards with a regulator, and how to spot a BMP280 sold as a BME280.
Community draft — report a mistake
3.3 V or 5 V? The chip itself is 3.3 V-only. Many purple 6-pin boards have no regulator — feed them 3.3 V only. Boards with a VIN pin and regulator accept 5 V, but keep SDA/SCL at the board's logic level.
The Bosch BME280 measures temperature (±1 °C), humidity (±3 % RH) and air pressure (±1 hPa) in one tiny chip, over I2C or SPI. Pressure gives altitude changes and weather trends; it’s the go-to sensor for weather stations.
Address: the SDO pin sets it — GND gives 0x76, 3.3 V gives 0x77. Four-pin boards fix SDO on the PCB; check with the I2C scanner.
BMP280 vs BME280: they look identical. The BMP has no humidity sensor and costs less, so listings mix them up. The library reports the chip ID: 0x60 is a real BME280, 0x58 is a BMP280.
Pinout
| Pin | What it does |
|---|---|
VIN / VCC | 3.3 V (or 3.3–5 V on boards with a regulator — check for a small 3-pin regulator chip) |
GND | Ground |
SCL | I2C clock (SPI SCK) |
SDA | I2C data (SPI MOSI) |
CSB | 6-pin boards only. Leave HIGH (or unconnected if pulled up on the board) for I2C; LOW selects SPI. |
SDO | 6-pin boards only. GND → address 0x76, 3.3 V → 0x77 (SPI MISO in SPI mode) |
I2C address:0x760x77
Library
Adafruit BME280 Library by Adafruit (also install Adafruit Unified Sensor)
Arduino IDE → Library Manager → search the name above. Each guide lists the exact version we compile against.
Use it with
- BME280 breakout with Arduino Nano Arduino C++
- BME280 breakout with Arduino Nano ESP32 Arduino C++
- BME280 breakout with Arduino Uno R3 Arduino C++
- BME280 breakout with ESP32-C3 SuperMini Arduino C++
- BME280 breakout with ESP32-C6-DevKitC-1 Arduino C++
- BME280 breakout with ESP32 DevKit V1 Arduino C++
- BME280 breakout with ESP32 DevKitC (38-pin) Arduino C++
- BME280 breakout with ESP32-S3-DevKitC-1 Arduino C++
- BME280 breakout with LOLIN S2 Mini Arduino C++
- BME280 breakout with NodeMCU ESP8266 Arduino C++
- BME280 breakout with Raspberry Pi Pico W MicroPython
- BME280 breakout with Wemos D1 mini Arduino C++
- BME280 breakout with XIAO ESP32C3 Arduino C++
- BME280 breakout with XIAO ESP32S3 Arduino C++
Common errors
“Could not find a valid BME280 sensor”
Try the other address: bme.begin(0x76) vs bme.begin(0x77). Run the I2C scanner to see which one answers.
Humidity always 0 % or the library reports chip ID 0x58
You have a BMP280 (temperature + pressure only), often sold as a BME280. The BME280's chip ID is 0x60.
Temperature reads 2–3 °C high
Self-heating from fast sampling, or the board is near a warm ESP32. Use forced mode with one reading a minute and mount it on a short cable.