Subscribe to Arduino Academy and start learning today for FREE!

ESP8266 BME280 Weather Station

One of our favorite new toys is the ESP8266 WiFi module. A very powerful microcontroller in it’s own right, it’s easily programmed with the Arduino IDE, and uses the same code we have come to know and love.

Now pushing data to web server!

So lets start:

We received a NodeMCU ESP8266 microcontroller and a BME280 Temperature / Humidity / Barometric Pressure module from IC Station.

Both the ESP8266 and the BME280 are 3.3v devices, so no level shifting required. The BME280 is an I2C device, so I connect SCL to D1 on the ESP8266, and SDA to D2. VCC goes to 3V3 and GND to GND. That’s it for wiring.

I need to add the ESP8266 to the Arduino IDE, so head over to here for a quick tutorial.

You will need two libraries from Adafruit, both the BME280 and the Sensor libraries –

I used their example sketch, but modified the metric outputs to American, and added calculations for Dew Point and Heat Index.

Once the board is installed, you are ready to upload the modified sketch:

The output of the serial monitor should look like this:

Our next step with this is to push the data to our new IOT web / database server, with live charts, gauges, and database storage. Stay tuned!

Become the Maker you were born to be. Try Arduino Academy for FREE!



Notify of
Inline Feedbacks
View all comments
Dave Kelly
6 years ago

Love this. Might try the wifi module with a water tank level monitor project.
6 years ago

Thanks for your awesome project, looking forward to your further awesome projects.

6 years ago

Do you find the BME280 over-reads temperature because of self-heating? I'm seeing about 2ยฐC error consistently.

Steve Spence
6 years ago

No, but I'm seeing negative temperatures after a few days of running. Needs a reboot to clear.

douma rahma
6 years ago

Hi, I have a question. Why I get the temperature and pressure (without humidity) values only while using BMP280 librabry?! Using BME280 always give me the check wiring message.

6 years ago

Try changing the BME address to 0x76.
Line 32 in Adafruit_BME280.h

5 years ago

Excellent project, exactly what I search it ! ๐Ÿ™‚
On IOT Web is nice, but how can be added a matrix LED display to show data?

5 years ago

How can be formula changed to metric units ?
Celsius degrees..

Steve Spence
5 years ago

if you look into the code, you will see the celsius measurement commented out. Just uncomment:
//Serial.println(" *C");


Would love your thoughts, please comment.x