Before we start lets first name off the different ways to interface things to your raspberry pi. I2c, SPI, UART, digital pins, usb (which will be one of the previous serial protocols just converted to USB), and ethernet (same as usb serial with some MCU with an ethernet interface). If the raspberry pi had an ADC I would've included some of them. If you want to use an analog sensor you'd need to find an ADC --> I2c/SPI board/module.
This list I will update as I find more:
Sensor |
Temperature Low |
Temperature High |
Precision |
Interface |
Price
(usd) |
DS18B20 |
-55°C (-67°F) |
125°C (257°F) |
0.0625°C (0.11°F) |
Dallas 1-Wire |
$2 |
DHT11 |
0°C (32°F) |
50°C (122°F) |
1°C (3.3°F) |
1-wire |
$5 |
DHT22/AM2302 |
-40°C (-40°F) |
80°C (176°F) |
0.1°F (0.18°F) |
1-wire |
$5 |
AM2312 |
-40°C (-40°F) |
80°C (176°F) |
0.1°C (0.18°F) |
I2c |
$15 |
MCP9808 |
-40°C (-40°F) |
125°C (257°F) |
0.0625°C (0.11°F) |
I2c |
$5 |
East of Setup: Medium
Temperature Range: -55°C to +125°C (-67°F to +257°F)
Interface: Digital 1-Wire
Benefits: Can daisy chain many of them along the same serial bus.
Limitation: Requires a 4.7k resistor. The communication is slow (about 1 second per sensor) which can slow down how often you're getting updates if you have 10+ on the bus. For I2c/UART (need interface board for I2c/UART)
Price: $2
Links For Setup:
Adafruit Tutorial,
ModMiPi Tutorial,
Some Python Libraries:
Github
I put these three together because of their similarities. The AM2302 / DHT 22 have a higher and lower temperature range. Each type requires a 10k resistor per sensor.
Temperature Range: AM2302/DHT22 -40°C to +80°C (-40°F to +176°F)
Temperature Range: DHT11 0°C to +50°C (32°F to +122°F)
Interface: Digital 1-wire (not same as Dallas 1-Wire protocol)
Benefits: Senses humidity. DHT11 isn't too expensive
Limitations: DHT11 has a limited temperature range. Not waterproof unless you buy an encapsulated version, which will not sense humidity as well.
Price: DHT11 ~$5, AM2302 / DHT22 ~$6-$20
Since this sensor uses I2c I separated it from the above AM2302/DHT22. Requires pull-up resistor 3l-10k.
Temperature Range: -40°C to 80°C (-40°F to +176°F)
Interface: I2C
Benefits: Senses humidity.
Price: $15
Temperature Range: -55°C to +125°C (-67°F to +257°F)
Interface: I2c
Benefits: Can connect up to 8 different modules. High precision .0625°C
Price: $2
Links For Setup:
Adafruit Tutorial
Some Python Libraries:
Github
Other ones to look into:
BMP180 Barometric Pressure Sensor I2c, which has temperature sensing abilities. $7
MPL115A2 Adafruit's barometric Pressure Sensor I2c includes temperature sensing, $15
LM75 I2c Temperature sensor -25°C~100°C.