images are CC BY 2.0
Description: The SparkFun BME280 Atmospheric Sensor Breakout is the easy way to measure barometric pressure, humidity, and temperature readings all without taking up too much space. Basically, anything you need to know about atmospheric conditions you can find out from this tiny breakout. The BME280 Breakout has been design to be used in indoor/outdoor navigation, weather forecasting, home automation, and even personal health and wellness monitoring.
The on-board BME280 sensor measures atmospheric pressure from 30kPa to 110kPa as well as relative humidity and temperature. The breakout provides a 3.3V SPI interface, a 5V tolerant I2C interface (with pull-up resistors to 3.3V), takes measurements at less than 1mA and idles less than 5µA. The BME280 Breakout board has 10 pins, but no more than six are used at a single time. The left side of the board provide power, ground, and I2C pins. The remaining pins which provide SPI functionality and have another power and ground, are broken out on the other side.
Note: The breakout does NOT have headers installed and will need to purchased and soldered on yourself. Check the Recommended Products section below for the type of headers we use in the Hookup Guide!
Features:
Documents:
Based on 7 ratings:
1 of 1 found this helpful:
The BME280 worked right out of the box and appears to be very accurate. I use it on my weather station and the readings match the others in my area on the wunderground.com. The pinout of the i2c communications header is compatible with the ESP8266 Thing so all I had to do was plug it into the socket I had installed on the Thing, load the SparkFun BME280 Arduino library, and I was up and running.
1 of 1 found this helpful:
I had no difficulty wiring the bme280 to my raspberry PI 3. Just used the python libraries to read the sensor. Highly recommend it!
2 of 3 found this helpful:
Sensor seems to be fairly accurate, can be used via I2C or SPI, is fairly small, and works reliably. I couldn’t have asked for more in an atmospheric sensor.
1 of 2 found this helpful:
By the moment, I do only a little test over this sensor.
Normally Sparkfun gives us good information and examples for Arduino users.
But I normally use PIC16 microcontrollers and do my programs in assembler. Several elements have sufficient information for me; but others require some reversal engineering from the Arduino examples to discover how to use it. Then I prepare my programs.
In the future, it is possible to publish some information about the use of the devices without predefined libraries?
3 of 6 found this helpful:
I connected the power and ground and the I2C interfacce. It worked out of the box with my Arduino redboard using the code I downloaded from the Sparkfun tutorial.
Then I modified the code to take successive readings of the temp, humidity and pressure channels as fast as possible, average them and print the results ever few seconds.
This dramatically reduced the noise and increased the resolution. I can track 0.1 degC changes, 1 foot elevation changes and about 0.5% rh changes.
Would have been truely effortless and instantly plug and play if the board came with a ribbon cable soldered in with pins on the other end to plug into the redboard. I had to take an additional 5 min soldering on the wires.
Dear,
The sensor that I bought with you, met all my expectations. I’m using it on a Raspberry Pi and it was very easy to implement this sensor on this board. My next project is to make this sensor work on a PIC16F877A, but from what I’ve been seeing on the internet, it’s going to be easy to do this implementation.
I take this opportunity to thank you for the cordial service SparkFun has given to me during this purchase. They are to be congratulated.
Regards,
Reynaldo Silva
I bought this to monitor weather data in my bedroom. The hookup guide wasn’t too clear to me on how to get data from it (it was there, just not where I was expecting it) but I eventually got what I needed from it. I put it up against a digital thermostat–not physically–and the two read very close to the same temperature and humidity.
This module is not suitable for high-altitude balloons, despite its perfect size. Only goes to 30,000 ft, while high-altitude balloons go to at least 60,000 ft (generally).
Hey everyone. There’s a few comments here that have to do with the sensor being a few degrees high and I wanted to discuss it.
Specified Accuracy
I looked up datasheets on the various sensors this is being compared to. Here’s the take-away:
TMP36: Specified accurate to +-2 degrees C DHT11: Specified +-2 degrees C MPL3115A2: +-1 degree C at 25C +-3 degrees C over full range BME280: +-0.5 degree C at 25C +-1 degrees C over full range
So, by manufacturer specification the BME280 is the most accurate.
Implementation Impact
Some of the discussion says that maybe the location in the circuit effects the temperature. Noting that self-heating could possibly effect the temperature, I devised a quick experiment to test this.
Here’s the test data:
Conclusion
-MTaylor
I can confirm, that readings seems to be high compared to other I2C sensors. Since all available BME280 libraries give similar results i assume, there could be a misinterpretation of calibration values or a not yet discovered problem with the datasheet. I set up a small test on 3.3V bus with readings all 15s.
These boards aren’t compatible with 5 volts. I had several sensors burn out due to being connected to I2C on a MEGA 2560 without level shifting before I figured this out. See the BME 280 absolute ratings in the datasheet… it states Vdd and Vddio maximum is 4.25V and interface pins maximum is Vddio + 0.3V.
Just a quick note on the library. The hookup guide says that pressure is returned in kilopascals, but unless I’m deep under the ocean and nobody told me, it’s just returning pascals.
I love how easy this device was to set up, and the built-in I2C/SPI support, but I, too, am finding the temp readings from this device to be consistently high, sometimes by as much as 9 degrees F. I have it connected via I2C directly to an ESP8266 thing (WRL13231), with the BME280 board hanging off the edge so it doesn’t pick up heat from the thing, and I have two other thermometers sitting right next to it. The temps all rise and fall together, but the BME280 is between 5 and 9 degrees (F) high. The thing should be delivering 3.3v, so I don’t think it’s over voltage, and it’s in a fairly breezy outdoor location so I also don’t think it’s surrounded by heated air. This is so far off I’m tempted just to call it defective or miscalibrated and order a replacement. It’s a shame we can’t somehow fix the calibration by taking known temps.
Is there a Particle Spark library for this module?
Could be a very simple question. Is this water resistant? I have a PVC rain tower. I want to know what the RH is inside. Obviously the board will get wet. I will use heat shrink on the wiring.
The datasheet says condensation is allowed, but I don’t know if immersion will damage the sensor (or the breakout board).
Is there a Frizting file available for this? I can’t find one, but it looks like the Hook-Up guide is using one.
There is! We’re working to get our Fritzing parts included with the program but we’re not there yet. I’ve gone ahead and added the part to the product github, which you should be able to download through github’s web interface (or you can clone)
https://github.com/sparkfun/SparkFun_BME280_Breakout_Board/tree/master/Fritzing
Hey, thanks for the quick response! I appreciate you adding it to the github.
I got this breakout board (from a reseller in Germany) but all values are way off. Even the temperature shown by the BME280 is about 3 degrees Celsius higher than the real temperature and altitude is about 130 metres to low. Is there any calibration necessary before first use? I could not find any method for this in the library.
Accuracy should be about +/- 0.5 degrees C, so that’s a little odd. Calibration happens from a set of factory programmed registers that the library reads out, then uses for calculations. The barometric readings are highly dependent on temperature, so both being off at the same time isn’t so surprising.
The I2C_ReadAllData sketch displays the calibration words at the start. Even if you are using SPI (just change the .settings.commInterface and .settings.chipSelectPin lines), can you please send me the concatenated calibration words listing?
Mine looks like this:
Note: start code with 4 spaces for our markdown formatting.
Chiming in because I have the same problem! Consistently reading 2.5C to 3C warmer than actual (as measured with a TMP36, and a wall thermometer.)
Temp from my TMP36 sensor: 21.29C
Temp from BME280: 23.94C
Calibration words and first reading from BME280:
Hi Taylor, thanks for your reply, my calibration words are like this:
Today the temp is only about 2,5 degrees too high (measured with a DHT11 and a MPL3115A2) and altitude about 110m too low. Very strange. I just removed all other components from the breadboard, but still the same…
I also have one of these that is giving temperature readings that are 4.25 degrees too high.
I’m reading 28.40 degrees C instead of 24.7 (inside temperature shown on a weather station console)
However that’s when plugged into headers on an ESP8266 Thing. When I instead place it at the end of a 30cm cable, the temperature difference comes down to within half a degree of my other reading.
My elevation is about 30m above see level, not 50m beneath it. However the pressure at sea level at the moment is not 1013.25 hPa as the library assumes. Adafruit’s BME280 library takes the unknown current sea level pressure as an input to the altitude function.
And what about degradation due to permanent humidity (for example in a bathroom)? What do we need to do to protect this Shield against permanent humidity ? Other Humidity sensors (DHT…) have a life time less than a year before beginning to produce incoherent measurements. The other sensor RB-Dfr-460 seems designed to better resist against moisture in time. In other words , how to use it in a sustainable solution for at least 5 years ?
The datasheet says its humidity drift is typically 0.5%/year.
i know it depends on the part the board is built around, but it kills me that every i2c breakout has the pins in a different order.. it’d be so nice to plunk a bunch of them on some stripboard, or to be able to make up a bunch of standard cable assemblies
We have started to use a standard on all new boards (which this should follow) because we got sick of the same thing around here. Sometimes you will see additional pins as well, but SCL, SDA, VCC, and GND should all be in the same order on our new boards. We can’t force everyone to use our standard, but I have a feeling people are starting to come up with their own anyway.
that’s good news!
Our friends over at Adafruit seem to have gotten to a standard ordering: Vin (i.e., +5V), 3.3V, GND, SDA, SCL – most of their boards include a regulator, and are 3.3V logic. (I think I got the order correct, but check the Adafruit website.)
Why doesn’t this come with the headers? Even when I order stuff from AliExpress it comes with headers (not pre-soldered of course), and that’s like the sketchiest place to order electronics from. I love the idea of this breakout board, but when I have to buy two separate items just to get one physical sensor working somethings wrong…
If everything came with headers I’d have a heap of unused headers from soldering wires to my boards. The argument goes both ways and I like the option of getting to choose between headers and wires without clogging up my already overloaded heap ‘o crap.
TheBurrito is completely correct: The main reason why there are no headers per-soldered onto this board is so that you, the end user, get the choice on what sort of connection you want. There are multiple types of headers to choose from, different wires (with and without terminated connectors), and it is a lot easier to solder something on than it is to de-solder that same thing off.
If you take a look at our past in-house assemblies you’ll notice that most, if not all, of them are sold without headers for this same exact reason. So rest assured that nothing is wrong, we just don’t want to make decisions for you that you may not agree with, however, we are sorry for the confusion in this matter. :)
Thank you for that. As a user looking at this I want to be able to decide how it is hooked up. Also I have a bunch of headers I can just use anyways.
I, too, agree. I’m looking at having this on one end of a “flat flexible cable” (might try something like a Raspberry Pi camera cable, or might end up using two of the “flat coax” cables) to put the sensor on the outside of a north-facing window and the computer on the inside of the same window. (Yeah, I’ll have to do some weatherproofing, but details, details.) Or maybe I can cobble up a 4-trace cable with some plastic sheet and copper tape. Nice thing about I2C is I only need 4 conductors (pwr, gnd, SDA, SCL)!