SparkFun Digital Temperature Sensor Breakout - TMP102

This is a breakout board for the incredibly small TMP102 digital temperature sensor. The TMP102 is a digital sensor (I2C a.k.a. TWI), has a resolution of 0.0625°C, and is accurate up to 0.5°C. This is a very handy sensor that requires a very low-current.

Communication with the TMP102 is achieved through a two-wire serial interface. There is no on-board voltage regulator, so supplied voltage should be between 1.4 to 3.6VDC. Filtering capacitors and pull-up resistors are included as shown.

Replaces: SEN-9418

  • 12-bit, 0.0625°C resolution
  • Accuracy: 0.5°C (-25°C to +85°C)
  • Low quiescent current
    • 10µA Active (max)
    • 1µA Shutdown (max)
  • 1.4V to 3.6VDC supply range
  • Two-wire serial interface
  • 2x Mounting Holes

SparkFun Digital Temperature Sensor Breakout - TMP102 Product Help and Resources

Photon Remote Temperature Sensor

March 1, 2016

Learn how to build your own Internet-connect, solar-powered temperature collection station using the Photon from Particle.

TMP102 Digital Temperature Sensor Hookup Guide

February 2, 2017

How to connect and use the SparkFun Digital Temperature Sensor Breakout - TMP102 with an Arduino.

HIH-4030 Humidity Sensor Hookup Guide

December 6, 2016

Measure relative humidity with SparkFun's HIH-4030 Humidity Sensor Breakout.

Graph Sensor Data with Python and Matplotlib

July 23, 2018

Use matplotlib to create a real-time plot of temperature data collected from a TMP102 sensor connected to a Raspberry Pi.

Core Skill: Soldering

This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.

1 Soldering

Skill Level: Noob - Some basic soldering is required, but it is limited to a just a few pins, basic through-hole soldering, and couple (if any) polarized components. A basic soldering iron is all you should need.
See all skill levels


Core Skill: Programming

If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.

2 Programming

Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels


Core Skill: Electrical Prototyping

If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.

1 Electrical Prototyping

Skill Level: Noob - You don't need to reference a datasheet, but you will need to know basic power requirements.
See all skill levels


Comments

Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • -------------------- Tech Support Tips/Troubleshooting/Common Issues --------------------

    Example Code

    For some strange reason, the link to the "Example Code" (TMP102.ino and defs.h) did not work for me. The example code might not have been reading the correct registers correctly or there was a bad conversion. It would read:

    TMP120 test-111
    -111
    -111
    -111
    .
    .
    .
    

    If you use the bildr tutorial [ http://bildr.org/2011/01/tmp102-arduino/ ] with an Arduino Uno, you will be able to read the temperature sensor.

    I had to power cycle the sensor after using the TMP102.ino and defs.h example.

    Default Address

    The default address is 0x48 (or 0b01001000 or 72 in decimal) as stated on Table 12 of the datasheet [page 10 - https://www.sparkfun.com/datasheets/Sensors/Temperature/tmp102.pdf ].

    More Examples

    This code from the Arduino.cc Playground worked without any issues too => [ http://playground.arduino.cc/Code/TMP102 ].

  • Member #67534 / about 8 years ago / 1

    Just fired it up and the sensor is reporting approx. a 10 def F discrepancy relative to several mechanical thermometers and thermostat. I'm using the same code in the bildr example to get the temp. Any suggestions?

  • andygrove / about 8 years ago / 1

    I wrote a Rust crate for this sensor: https://github.com/andygrove/tmp102-rs

  • Member #561550 / about 9 years ago / 1

    Found a great hookup guide for arduino here: http://www.onemansanthology.com/blog/sparkfun-tmp102-temperature-sensor-and-arduino-code/

  • Member #403458 / about 11 years ago / 3

    Thanks Sparkfun! Now I know that my microwaved burrito is a cozy 102.2 F

  • tooleyc / about 11 years ago / 2

    Has anyone else had trouble getting the other addressing modes to work (73, 74, or 75)? With this new revision of the board it seems I can only get it to work on the default 72. (The earlier board layout worked fine for me)

    • Serban / about 11 years ago * / 1

      There's a drop of soldering paste just above the ADD0 pin on the new breakout board layout. Use some soldering wick and a soldering gun to remove it and the Universe will be spinning again. You will be able to use the ADD0 pin just like on the old board (attach it to GND, VCC, SDA, SCL to obtain up to 4 I2C addresses). Do not attempt to connect the ADD0 directly to VCC without removing this "jumper" as it will create a short between VCC and GND and will probably end up toasting something in your circuit (depending on the connections you have there).

      • Member #557916 / about 10 years ago / 1

        I'm really struggling to remove this "soldering paste". My challenge is the size - it's so small that I can barely get my iron and the wick in place to still see what I am doing - regardless of a magnifying glass. Any other recommendations?

        • Member #557916 / about 10 years ago / 1

          Well, I figured it out, for anyone that cares. Serban recommended removing the soldering paste above the ADD0 pin. Using a DMM, I was able to determine that I still had continuity issues. So, I used really small wick (0.025"), a better iron and magnifying glass and my DMM confirmed that I got rid of ALL of the paste - no more continuity = no more problem changing the address.

          Now, I have one TMP102 that I used female headers on - I've since changed my design and removed the headers, but I still have solder in the pin holes (or whatever they're called). The wick doesn't seem to be pulling out the solder, so I am going to try the "add more solder, then use the wick" technique to pull out the solder so that I can put male header pins in place and re-use my last TMP102. Wish me luck, hope this helps someone.

  • dallanic / about 9 years ago / 1

    I tried to connect the TMP-102 sensor to the Edison I2C block. "i2cdetect" replies with errors “i2c_dw_handle_tx_abort: lost arbitration.”

  • Member #595585 / about 10 years ago / 1

    I wanted TMP-102 sensor to work with Edison I2C block. Won’t. Using i2cdetect replies with errors “i2c_dw_handle_tx_abort: lost arbitration.” Using pull up resistors from 680 to 10k changed nothing. The TMP-102 fails with the Edison-Arduino board and with the Edison mini-breakout board, with or without level shifting or pull up resistors.

  • Member #651989 / about 10 years ago / 1

    I can't find the Fritzing file. The only tmp102 available in Fritzing (as of download a few weeks ago) is the old format. Where can I find the files for this breakout?

  • stevenvh17 / about 10 years ago * / 1

    I'd like to see a temperature sensor breakout board with an NXP PCT2075, instead of the TI TMP102. The TMP102 costs 3 times as much as the PCT2075! Granted, the PCT2075 is "only" 1°C accurate, versus 0.5°C for the TMP102, but for any everyday use that's good enough. (If you need better than 1°C accuracy then chances are that 0.5°C isn't sufficient either.)

    Important point: the PCT2075 can operate at both 3.3V and 5V, whereas the TMP102 is 3.3V only. No level shifters = cheaper still.

  • I really like this sensor, I just wish that there was a solder jumpers to disable the pull up resistors like on the BMP180 breakout. It wasn't much hassle to simply remove the resistors though; I just dislike putting 0603s back.

  • Member #57358 / about 10 years ago / 1

    Has anyone had a problem with receiving 0xFF for both the MSB and LSB when reading the temperature? I'm using the code linked above in the "bildr Tutorial". I have tried all four possible addresses, even though 72 is supposed to work. Doesn't matter, though, this thing just keeps send back 0xFF for both bytes. Any ideas?

  • Owenw / about 10 years ago / 1

    Nooby question: can I fit screw terminals to this, like these: PRT-10571 (or different size terminals).

  • Member #525942 / about 10 years ago / 1

    This sensor works great on the pcduino3. I have a short writeup with the python code I used.

    http://www.onemansanthology.com/blog/getting-to-know-the-pcduino3/

  • Member #425330 / about 11 years ago / 1

    It appears the note in the schematic for ADD0 to VCC is incorrect, at least when using the basic code from the bildr tut. It appears left shifted one bit, 10010010 (0x92) instead of 1001001 (0x48). I am new to all this but when using the address in the schematic it does not respond but, using 0x48 it does. I am not sure if/how forcing the 8 bit address mode in wire.requestFrom() would affect this.

  • Member #225064 / about 11 years ago / 1

    The data sheet indicates max temperature error of +/- 2C from -25C to 85C (pg 3) but also suggests max error of +0.5/-0.15C (fig 3) over the same range (although all figs are subject to the qualifier "typical characteristics"). Any idea which accuracy limit is correct? Fig 6 also seems too good to be true, it would be useful if TI specified the maximum temperature error at 25C.

  • jbdatko / about 11 years ago / 1

    If anybody wants to use this with the BeagleBone black, I have a tutorial here: http://datko.net/2013/11/04/bbb_tmp102/

    Source code is on GitHub: https://github.com/jbdatko/tmp102

  • scharkalvin / about 11 years ago / 1

    The data sheet indicates that this device is NOT 5 volt tolerant on the I2C interface pins. The bildr Turtorial shows it hooked up to an arduino which would drive it at 5v. Probably not a good idea, one should use an I2C capabile level converter with this to communicate with a 5v processor.

    To this end, you should make the 1k pullup resistors on the I2C lines defeatable with jumpers in case you already have pullups on the level converter, or on another I2C device. If I get this device I will need to unsolder those resistors.

    • Looks to me like the bldr shows the device connected to the 3V3 VCC line. So the pull ups will only be able to bring the I2C lines to 3.3V No?

      • scharkalvin / about 11 years ago * / 1

        True, but the DATA lines on the Arduino have a logic "1" output of 5V. There are Arduino clones that run at 3.3 volts, but the one in the example wasn't one of them. I don't think the AVR ports can be made to work in open collector (drain) mode.

        • Maybe we are looking at 2 different bldr tutorials. I click on the one here and see a schematic where the device is connected to the SDA and SCL pins of the arduino, which are the A4 and A5 Analog Inputs being used in i2c mode, thus by default they have to be open drain. The pullups are via the 3.3V resistors on the breakout board. So i don't see how they would be exposed to 5V.

          • scharkalvin / about 11 years ago / 1

            I wasn't sure that the MASTER side of the I2C operated in open drain, I know the SLAVE side does. It that is true then you are correct.

            • Member #356528 / about 11 years ago * / 1

              I'm not an expert on this, but I fried a similar I2C device that can only tolerate 3.3v by using it with a 5v system. I had a bmp085 hooked up to an arduino's 3.3v and directly to A4/A5 for I2C without any logic shifters. It worked fine for about 10 days and then died.

              I think it's best to use a level shifter, but maybe I'm missing something. Unfortunately for me the BMP085 is $20...

              • sirkha / about 10 years ago / 1

                I hooked mine up to the SCL/SDA lines on a 5V pro micro, using a 3.3v regulator to drive the VCC and pullups. I measured the measured the max voltage on both lines using my Fluke 289 and both showed a maximum voltage of about 3.3v.

                Thermometer Prototype

                Design

              • MatthewR / about 11 years ago / 1

                Because the bus can only be driven low, the pullups determine the bus voltage. As long as you use pullups to 3v3 (and you don't have any other pullups on the bus to a higher voltage), it is safe to use with a 5v Arduino.

Customer Reviews

4.4 out of 5

Based on 7 ratings:

Currently viewing all customer reviews.

3 of 3 found this helpful:

works great

It works great. The only suggestion I would have is to get the bildr and mbed tutorials updated to match the new pin locations.

1 of 1 found this helpful:

A+

This temperature sensor works great with my PyBoard. Super easy to use. I'm jazzed!

2 of 2 found this helpful:

I bought this to work with a Raspberry Pi. Works great, just as advertised.

4 of 4 found this helpful:

Good board - beware the solder jumper

Everything works ducky, unless you don't know that the ADD0 is solder-bridged to GND; you have to remove that solder to give it any other address. Nothing in the data sheet alerts you to this (at least not that I saw). It might be something that's well-known for pros, but it cost me a good deal of time researching the problem.

Very good, no problems

A lot of fun for less money! (With PCDuino1/3)

Great price!

Built a QuaCKibator which is just an egg incubator. Currently using a DHT22 sensor so hoping to eliminate that and use this instead. This was cheaper than buying the DHT22 sensor so decided to try and go with this instead.