Getting back to my IoT projects, I decided to pick up a temperature sensor. While looking through the Adafruit breakout boards, I found they offered nine different digital temperature sensors! This list is in addition to the analog TMP36 temperature sensor, so that’s ten. I needed an Adafruit Temperature Sensor comparison.
With so many options, I quickly found myself getting lost between the various modules. The 10 I found all measured temperature and provided an I2C interface. Except for the MCP9808 board, they all made at least one other type of measurement. The MCP9808 is the cheapest digital temperature sensor breakout that Adafruit offers, and also the most accurate.
I couldn’t find a comparison in my quick search, so I built my own comparison table. Here’s my chart for an Adafruit Temperature Sensor comparison of their breakout boards.
If you want three measurements: Temperature, Humidity, and Barometric pressure the clear winner is the Bosch BME280 board. At about 20 bucks, there isn’t a combination of other breakouts that would work. The tradeoff, however, is that it’s humidity sensor isn’t as accurate as some of the other options.
If you’re interested in any of the boards, just the SKU in the first column to either search their site or go directly there with this URL:
Understanding the Adafruit Temperature Sensor Comparison Chart
While most of my columns are probably obvious, I’ve written some notes about each.
Sensor / Board VCC
These sensors can work on 3.3V systems, while most will work at lower voltages. Adafruit’s breakout boards contain 3.3V regulators and level-shifters for boards not compatible with 5V systems. I broke out the information into two columns. If you’re considering one of these sensors for a project without an Adafruit board, keep in mind, most are designed for 3.3V logic.
Also, in most cases, there are pull-up resistors on the breakout boards. Don’t forget those when you are designing the chip into your own PCB.
Except for the BMP183, all of these modules support I2C. Only two offer user-settable addresses. You’ll want to keep this in mind for whatever other I2C devices your project contains. You may also want to consider one of the SPI alternatives if you suspect an address collision may happen. (Each I2C widget needs its own address.)
There are several Bosch sensors offered by Adafruit. It is pretty easy to get all of the part numbers mixed up. The BMP180 and BMP183 appear to be the same sensor, but different with ad digital interface. Also, don’t confuse the BMP280 and the BME280. The “P” model lacks the humidity sensor.
Using the BME280 on a Raspberry Pi? Check out this BME280 I2C Temperature Sensor in Python Tutorial.
If you read the Adafruit descriptions, any of the sensors that offer a barometric sensor you can also make altitude “measurements.” However, only the MPL3115A2 based board provides a built-in altitude measurement.
After building my Adafruit temperature sensor comparison, I found the clear winner for me. For my data logging project, the Adafruit BME280 breakout’s combination of temperature, humidity, and barometric pressure is perfect. After I get it in my lab, I will let you know how I integrated it with MQTT. Want to see what I’m working on? Subscribe to my RSS or email to find out in a future post. 😉