Site Loader
Zlatiborska 10a

Wemos D1 Mini -- BME280 Weather Station

The BME280 is the next generation sensor from Bosch and follows its predecessors BMP085 -- BME180. Price for it is now under $3 with free shipping.

Key parameters

  •  Pressure range 300 … 1100 hPa (equiv. to +9000…-500 m above/below sea level)
  •  Package 8-pin LGA metal-lid
  • Footprint : 2.0 × 2.5 mm², height: 0.95 mm
  •  Relative accuracy ±0.12 hPa, equiv. to ±1 m
  •  (950 … 1050hPa @25°C)
  •  Absolute accuracy typ. ±1 hPa  (950 …1050 hPa, 0 …+40 °C)
  •  Temperature coefficient offset 1.5 Pa/K, equiv. to 12.6 cm/K  (25 … 40°C @900hPa)
  •  Digital interfaces I²C (up to 3.4 MHz) SPI (3 and 4 wire, up to 10 MHz)
  •  Current consumption 2.7µA @ 1 Hz sampling rate
  •  Temperature range -40 … +85 °C

For connecting the BMP280 to ESP8266 the following pins need to be connected:

BMP280 NodeMCU / WeMos D1 mini Other ESP8266


The BMP280 supports the I²C and SPI digital interfaces; it acts as a slave for both protocols.

The I²C interface supports the Standard, Fast and High Speed modes.

The SPI interface supports both SPI mode ‘00’ (CPOL = CPHA = ‘0’) and mode ‘11’ (CPOL = CPHA = ‘1’) in 4- wire and 3-wire configuration. The following transactions are supported: Single byte write  multiple byte write (using pairs of register addresses and register data) single byte read multiple byte read (using a single register address which is auto-incremented)

Connect the CSB pin to GND to have SPI and to VCC(3V3) for I2C.

The 7-bit device address is 111011x. The 6 MSB bits are fixed. The last bit is changeable by SDO value and can be changed during operation.

Connecting SDO to GND results in slave address 1110110 (0x76), connecting it to VCC results in slave address 1110111 (0x77), which is the same as BMP180’s I²C address.

The SDO pin cannot be left floating, if left floating, the I²C address will be undefined.

In my setup I’ve connected CSB and SDO to VCC to have I2C and 0x77 as address.

To run a quick test I’ve installed the Adafruit Sensor library and Adafruit BMP280 library .

The code to test the BMP280 is the example code from library.

This code assume that the SDA and SCL are connected on GPIO 4 and GPIO 5. If you need to assign new pins to your BMP280 use the Wire.begin(2,0) where the GPIO 2 is connected to SDA and GPIO 0 is connected to  SCL.

Now its time to add some code to read the temperature and pressure, and broadcast it in home wifi. ESP8266 Home  application can handle this data.

Here is source code:

You can just copy this code and program your Wemos D1 mini. You need put your SSID (AP name) to allow auto connection.




If you like my work 🙂


Also my code is free but my time not, so if you need talk with me put 5$ on

Post Author: Admin

Leave a Reply

Your email address will not be published. Required fields are marked *