# Adafruit TMP117 High Accuracy I2C Temperature Monitor

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/097/367/medium800/adafruit_products_4821_kit_ORIG_2020_12.jpg?1606936474)

The **TMP117 Precision Temperature Sensor** is an I2C temperature sensor that will help you easily add temperature measurement and adjustment to your project. In addition to the obvious support for reading the temperature, the TMP117 can also monitor the temperature and alert you when corrective action needs to be taken.

![](https://cdn-learn.adafruit.com/assets/assets/000/097/371/medium800/adafruit_products_4821_quarter_ORIG_2020_12.jpg?1606937280)

With **16-bit** measurement resolution and up to **±0.1°C accuracy** , as well as high and low **temperature alerts** and interrupt support, and hardware support required for NIST traceability, this temperature sensor is perfect for applications where you need to keep a close eye on temperature. The manufacturer, Texas Instruments, even suggest it for use in sensitive applications like thermostats and cold chain asset tracking or even gas and heat meters!

![](https://cdn-learn.adafruit.com/assets/assets/000/097/369/medium800/adafruit_products_4821_iso_ORIG_2020_12x.jpg?1606936522)

To make using it as easy as possible, we’ve put the TMP117 on a breakout PCB&nbsp; in our [Stemma QT form factor](https://www.adafruit.com/?q=Stemma+QT+Sensor) with a sprinkle of support circuitry to give you options when testing. You can either use a breadboard or the[**SparkFun qwiic**](https://www.sparkfun.com/qwiic) compatible [**STEMMA QT**](https://learn.adafruit.com/introducing-adafruit-stemma-qt) connectors, and compatibility with 5V voltage levels as commonly found on [Arduinos](https://www.adafruit.com/category/17), as well as 3.3V logic used by many other boards like the Raspberry Pi or our Feathers.

To get started, all you need to do is look over the Pinouts page to familiarize yourself with the board, and then use the Arduino or Python & CircuitPython pages for instructions on how to wire up the TMP117 to your board, as well as libraries and example code to get you started.

# Adafruit TMP117 High Accuracy I2C Temperature Monitor

## Featured Features

![](https://cdn-learn.adafruit.com/assets/assets/000/097/360/medium800/adafruit_products_image.png?1606870455 Photo by Andrea Piacquadio from Pexels)

The TMP117 is not merely a temperature sensor, any hunk of silicon can do that. It comes with a handful of relevant features that help you make best use of this information.

## Temperature offset management

When you're trying to get an accurate measurement, despite your best efforts it's common that the temperature reported by your measurement is different than the actual value. You might be sitting in your kitchen, surrounded by thermometers telling you that the room is in fact 40 degrees Celcius, however due to specifics of the immediate environment of the sensor, it may declare with the upmost certainty that it is actually 43 degrees C.

This type of change from the actual value will most times stay the same or close to it as the sensor finds itself in different locations with different temperature. This type of deviation from the known value is called an offset. No matter where the sensor is, the sensor will measure the temperature, but because of how air flows around the sensor, or how heat moves through the circuit board, or one of a thousand other things, it then takes this temperature and sets it off to the side, always the same amount. The offset remains relatively constant because the factors causing it are not changing, so their effect on the temperature also does not change.

![](https://cdn-learn.adafruit.com/assets/assets/000/097/359/medium800/adafruit_products_image.png?1606869642 Photo by Digital Buggu from Pexels)

Because they're constant, a temperature offset is easy to fix by adding or subtracting it from the reported temperature. The TMP117 will manage this for you by allowing you to set the offset amount which is then added to the measured temperature before it is reported to you. If the sensor says itself 43 degrees but you know from other sources that it is actually 40 degrees, setting an offset of -3 will account for it. After setting the offset, the TMP117 will take the measured 43 degrees, add -3 to it to account for the offset before reporting the adjusted value to you.

## Temperature thresholds

Measuring temperature is all well and good, everyone needs to know the temperature at some point, but usually you want to know the temperature not out of pure curiosity but because you want to do something differently depending on what the temperature is. If it's colder than 60ºF degrees outside, you probably want to wear a hoodie. If instead it's -10ºC and you're in Saskatoon, you probably want to think about putting on an extra pair of dungarees.

The clever people at Texas Instruments were smart enough to predict this important decision point and they added high and low temperature thresholds to the TMP117. This allows you to delegate this decision to it and let it make decisions on your behalf. Most people may be hesitant to allow a machine to make such an important pants-related decision, however unlike your friend Joe who is well meaning but inattentive, the TMP117 won't get distracted by other stuff. All it's doing is sitting there, doing its part as a cog in the machine, measuring, reporting, and if appropriate, acting on the temperature.

By setting the high and low temperature thresholds, the TMP117 can then tell you when either threshold is exceeded. If you know you always wear pants when the temperature is below 60 degrees, set the low temperature threshold to 60 degrees and let the TMP117 tell you when it's time for pants.

If like me you also believe that wearing pants when the temperature is above 75 degrees is tepidly tyrannical, you may then also wish to set a high temperature threshold that well tell you when it's time to release the bonds of your pants and be free of their stifling embrace.

![](https://cdn-learn.adafruit.com/assets/assets/000/097/335/medium800/adafruit_products_image.png?1606856429 Figure 18 from the TMP117 Datasheet. Link is available on the downloads page.)

## Threshold behavior

This behavior essentially boils down to "tell me when it's hot" and "tell me when it's cold". You still have to decide what that \_means\_. Alternatively, you could ask the TMP117 to answer the question: "Should I be wearing a skirt"?. In this case, you don't care if the temperature is high or low exactly, you want to know if the temperature is in a range where wearing a skirt is warranted. In this case, obviously if the temperature is over a certain amount, you're going to be wearing a skirt. But if the temperature goes below 40 degrees, are you going to immediately take off your skirt and put on some capris? No, you're going to keep your skirt on as long as possible, so you want to wait not until it's OK to wear capris, but when must you wear capris.

In this case, you would want to use the TMP117's "THERM" mode. When configured this way, only the high threshold alert will be used. Instead of the low threshold being the "it's cold" temperature, it is instead used as a "it's not hot anymore" value.

![](https://cdn-learn.adafruit.com/assets/assets/000/097/336/medium800/adafruit_products_image.png?1606856467 Figure 19 from the TMP117 Datasheet. Link is available on the downloads page.)

## Measurement Delay

The TMP117 also allows you to made adjustments to the measurement behavior. Unlike things like "speed" or "fashion", temperature doesn't change all that fast. If it's too cold for a skirt one second, it's going to still be too cold 15 seconds later, barring unexpected lava.

To make use of this, the TMP117 allows you to change how often it calculates the temperature. By specifying a read delay, the TMP117 can go into a low power mode when continuing to read new values would be redundant.

![](https://cdn-learn.adafruit.com/assets/assets/000/097/356/medium800/adafruit_products_image.png?1606868195 Figure 16 from the TMP117 Datasheet. Link is available on the downloads page.)

## Sample Count and Averaging

As we've established, from a human perspective, temperature doesn't change very quickly. Sensor are not humans however; they don't "have a feeling" about what the temperature is, they \_measure\_ it. That means that even if just one second ago the temperature was exactly 36.42 degrees C, if moments later a draft or paranormal phenomenon causes a micro-current of cold air to wisp across the sensor, the temperature \*for the sensor\* will drop, if only for a fraction of a second.

![](https://cdn-learn.adafruit.com/assets/assets/000/097/350/medium800/adafruit_products_image.png?1606863342 The overall measurement behavior and timing is determined by the combination of Sample Count and Measurement Delay. Figure 15 from the TMP117 Datasheet. Link is available on the downloads page.)

The result of this is that if you were to take that single measurement that occurred while the sensor was momentarily in a cold spot, while technically accurate it won't be representative of the overall temperature. Like good scientists, we know that to account for this inevitable fluctuation we should instead take several measurements and average them to get a more representative value.

The TMP117 also allows you to specify the number of readings that are taken and averaged. While they only take approximately 15.5 milliseconds, they will add up, so the more you average, the longer it will take to return a result.

# Adafruit TMP117 High Accuracy I2C Temperature Monitor

## Pinouts

![](https://cdn-learn.adafruit.com/assets/assets/000/097/370/medium800/adafruit_products_4821_top_ORIG_2020_12xx.jpg?1606936634)

## **Power Pins**

- **VCC** - this is the power pin. To power the board, give it the same power as the logic level of your microcontroller - e.g. for a 5V microcontroller like Arduino, use 5V
- **GND** - common ground for power and logic

 **I2C Logic Pins**

- **SCL** - I2C clock pin, connect to your microcontroller I2C clock line. This pin is level shifted so you can use 3-5V logic, and there's a **10K pullup** on this pin.
- **SDA** - I2C data pin, connect to your microcontroller I2C data line. This pin is level shifted so you can use 3-5V logic, and there's a **10K pullup** on this pin.
- **ADDR/AD0 Jumper** &nbsp;- **I2C Address pin**. Pulling this pin high or bridging the solder jumper on the back will change the I2C address from&nbsp; **0x48** &nbsp;to&nbsp; **0x49**  
  
  
- [**STEMMA QT**](https://learn.adafruit.com/introducing-adafruit-stemma-qt) **&nbsp;-** These connectors allow you to connectors to dev boards with&nbsp; **STEMMA QT** connectors or to other things with&nbsp;[various associated accessories](https://www.adafruit.com/?q=JST%20SH%204)

## **Other Pins**

- **INT** -This is the primary interrupt pin. You can setup the TMP117 to pull this low when certain conditions are met such as new measurement data being available, or if high or low temperature alerts are triggered.
- **ADDR** - The address pin can be used to change the I2C address from its default value of&nbsp; **0x48** to another value depending on the voltage it is tied to, according to the table below

You can solder the back jumper closed to change the address from 0x48 to 0x49

![adafruit_products_4821_quarter_ORIG_2020_12.jpg](https://cdn-learn.adafruit.com/assets/assets/000/097/374/medium640/adafruit_products_4821_quarter_ORIG_2020_12.jpg?1606937467)

# Adafruit TMP117 High Accuracy I2C Temperature Monitor

## Arduino

Using the TMP117 with Arduino is a simple matter of wiring up the sensor to your Arduino-compatible microcontroller, installing the [Adafruit TMP117](https://github.com/adafruit/Adafruit_TMP117) library we've written, and running the provided example code.

## **I2C Wiring**

Use this wiring if you want to connect via I2C interface. The default I2C address for the TMP117 is **0x48** but it can be switched to **0x49** &nbsp;by pulling the address pin high to VCC.&nbsp;

Here is how to wire up the sensor using one of the [**STEMMA QT**](https://learn.adafruit.com/introducing-adafruit-stemma-qt) connectors. The examples show a Metro but wiring will work the same for an Arduino or other compatible board.

- Connect&nbsp;**board VIN (red wire)** to&nbsp; **Arduino 5V** &nbsp;if you are running a **5V** board Arduino (Uno, etc.).&nbsp;If your board is **3V,** connect to that instead.
- Connect **board GND (black wire)&nbsp;**to&nbsp; **Arduino**  **GND**
- Connect **board SCL (yellow wire)&nbsp;**to&nbsp; **Arduino**  **SCL**
- Connect **board SDA (blue wire)&nbsp;**to&nbsp; **Arduino**  **SDA**

![adafruit_products_image.png](https://cdn-learn.adafruit.com/assets/assets/000/097/079/medium640/adafruit_products_image.png?1605568536)

Here is how to wire the sensor to a board using a solderless breadboard:

- Connect&nbsp;**board VIN (red wire)** to&nbsp; **Arduino 5V** &nbsp;if you are running a **5V** board Arduino (Uno, etc.).&nbsp;If your board is **3V,** connect to that instead.
- Connect **board GND (black wire)&nbsp;**to&nbsp; **Arduino**  **GND**
- Connect **board SCL (yellow wire)&nbsp;**to&nbsp; **Arduino**  **SCL**
- Connect **board SDA (blue wire)&nbsp;**to&nbsp; **Arduino**  **SDA**

![adafruit_products_image.png](https://cdn-learn.adafruit.com/assets/assets/000/097/084/medium640/adafruit_products_image.png?1605568596)

## **Library Installation**

You can install the **Adafruit TMP117 l** ibrary for Arduino using the Library Manager in the Arduino IDE.

![](https://cdn-learn.adafruit.com/assets/assets/000/097/375/medium800/adafruit_products_sensors_managelib.png?1606937447)

Click the&nbsp; **Manage Libraries ...** menu item, search for **Adafruit TMP117** ,&nbsp;and select the&nbsp; **Adafruit TMP117** &nbsp;library:

![](https://cdn-learn.adafruit.com/assets/assets/000/097/376/medium800/adafruit_products_Capture.jpg?1606937559)

Follow the same process for the&nbsp; **Adafruit BusIO** &nbsp;library.

![](https://cdn-learn.adafruit.com/assets/assets/000/097/377/medium800/adafruit_products_Capture2.jpg?1606937615)

Finally follow the same process for the&nbsp; **Adafruit Unified Sensor** library:

![](https://cdn-learn.adafruit.com/assets/assets/000/097/378/medium800/adafruit_products_Untitled3.jpg?1606937798)

## **Load Basic Example**

Open up&nbsp; **File -\> Examples -\>Adafruit TMP117 -\> basic\_test**

![](https://cdn-learn.adafruit.com/assets/assets/000/097/385/medium800/adafruit_products_Untitled2.jpg?1606938756)

After opening the demo file, upload to your Arduino wired up to the sensor. Once you upload the code, you will see the **Temperature** &nbsp;values being printed when you open the Serial Monitor ( **Tools-\>Serial Monitor** ) at **115200 baud** , similar to this:

## **Basic Example Code**
![](https://cdn-learn.adafruit.com/assets/assets/000/097/069/medium800/adafruit_products_image.png?1605559084)

https://github.com/adafruit/Adafruit_TMP117/blob/master/examples/basic_test/basic_test.ino

&nbsp;In addition to the basic examples, we have a few other options in the examples directory, including one for using the build in alerts.

## **Load Alerts Example**

Open up&nbsp; **File -\> Examples -\> Adafruit TMP117 -\> alerts**

![](https://cdn-learn.adafruit.com/assets/assets/000/097/383/medium800/adafruit_products_image.png?1606938687)

You may want to adjust the high and low temperature limits to fit your conditions to see how they trigger. If the default values don't work for your setup, changing the argument for `setLowThreshold` and `setHighThreshold` will specify a new temperature to use.

```cpp
// You may need to adjust these thresholds to fit the temperature range of where the test is
// being run to be able to see the alert status change.
tmp117.setHighThreshold(35.0);
Serial.print("High threshold: "); Serial.println(tmp117.getHighThreshold(), 1);
tmp117.setLowThreshold(28.5);
Serial.print("Low threshold: "); Serial.println(tmp117.getLowThreshold(), 1);
```

Once any adjustments are made, the file should be compiled and uploaded to your connected board. Once finished, you can see the temperature being reported along with the states of the two alerts.

![](https://cdn-learn.adafruit.com/assets/assets/000/097/070/medium800/adafruit_products_image.png?1605559330)

Once you've got the alerts triggering, try changing the code below to enable or disable "Therm" mode which makes the thresholds work more like a target temperature and hysteresis value to designate the lower bounds of the acceptable temperature range.

```cpp
// Set the enable flag below to see how the low temp limit can be used as a
// hysteresis value that defines the acceptable range for the temperature values where
// the high temp alert is not active
tmp117.thermAlertModeEnabled(true);
```

## Alerts Example Code
https://github.com/adafruit/Adafruit_TMP117/blob/master/examples/alerts/alerts.ino

# Adafruit TMP117 High Accuracy I2C Temperature Monitor

## Arduino Docs

# Adafruit TMP117 High Accuracy I2C Temperature Monitor

## Python & CircuitPython

It's easy to use the **TMP117** with Python or CircuitPython, and the [Adafruit CircuitPython TMP117](https://github.com/adafruit/Adafruit_CircuitPython_TMP117) module. This module allows you to easily write Python code that reads the temperature from the **TMP117** sensor.

You can use this sensor with any CircuitPython microcontroller board or with a computer that has GPIO and Python [thanks to Adafruit\_Blinka, our CircuitPython-for-Python compatibility library](https://learn.adafruit.com/circuitpython-on-raspberrypi-linux).

## **CircuitPython Microcontroller Wiring**

First wire up a TMP117 to your board exactly as shown below. Here's an example of wiring a Feather M4 to the sensor with I2C using one of the handy [**STEMMA QT**](https://learn.adafruit.com/introducing-adafruit-stemma-qt) connectors:

- **Board 3V** &nbsp;to&nbsp;**sensor VIN (red wire)**
- **Board GND** &nbsp;to&nbsp;**sensor GND (black wire)**
- **Board SCL** &nbsp;to&nbsp;**sensor SCL (yellow wire)**
- **Board SDA** &nbsp;to&nbsp;**sensor SDA (blue wire)**

![adafruit_products_image.png](https://cdn-learn.adafruit.com/assets/assets/000/097/082/medium640/adafruit_products_image.png?1605568764)

You can also use the standard **0.100" pitch** headers to wire it up on a breadboard:

- **Board 3V** &nbsp;to&nbsp;**sensor VIN (red wire)**
- **Board GND** &nbsp;to&nbsp;**sensor GND (black wire)**
- **Board SCL** &nbsp;to&nbsp;**sensor SCL (yellow wire)**
- **Board SDA** &nbsp;to&nbsp;**sensor SDA (blue wire)**

![adafruit_products_image.png](https://cdn-learn.adafruit.com/assets/assets/000/097/081/medium640/adafruit_products_image.png?1605568717)

## **Python Computer Wiring**

Since there's _dozens_ of Linux computers/boards you can use, we will show wiring for Raspberry Pi. For other platforms, [please visit the guide for CircuitPython on Linux to see whether your platform is supported](https://learn.adafruit.com/circuitpython-on-raspberrypi-linux).&nbsp;

Here's the Raspberry Pi wired to the sensor using I2C and a [**STEMMA QT**](https://learn.adafruit.com/introducing-adafruit-stemma-qt) connector:

- **Pi 3V** &nbsp;to&nbsp;**sensor VCC (red wire)**
- **Pi GND** &nbsp;to&nbsp;**sensor GND (black wire)**
- **Pi SCL** &nbsp;to&nbsp;**sensor SCL (yellow wire)**
- **Pi SDA** &nbsp;to&nbsp;**sensor SDA (blue wire)**

![adafruit_products_RasPi_TMP117_STEMMA_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/487/medium640/adafruit_products_RasPi_TMP117_STEMMA_bb.jpg?1673378635)

Finally here is an example of how to wire up a Raspberry Pi to the sensor using a solderless breadboard

- **Pi 3V** &nbsp;to&nbsp;**sensor VCC (red wire)**
- **Pi GND** &nbsp;to&nbsp;**sensor GND (black wire)**
- **Pi SCL** &nbsp;to&nbsp;**sensor SCL (yellow wire)**
- **Pi SDA** &nbsp;to&nbsp;**sensor SDA (blue wire)**

![adafruit_products_image.png](https://cdn-learn.adafruit.com/assets/assets/000/097/083/medium640/adafruit_products_image.png?1606864911)

## **CircuitPython Installation of TMP117 Library**

You'll need to install the [Adafruit CircuitPython TMP117](https://github.com/adafruit/Adafruit_CircuitPython_TMP117) library on your CircuitPython board.

First make sure you are running the&nbsp;[latest version of Adafruit CircuitPython](https://learn.adafruit.com/welcome-to-circuitpython/installing-circuitpython)&nbsp;for your board.

Next you'll need to install the necessary libraries&nbsp;to use the hardware--carefully follow the steps to find and install these libraries from&nbsp;[Adafruit's CircuitPython library bundle](https://circuitpython.org/libraries).&nbsp; Our CircuitPython starter guide has [a great page on how to install the library bundle](https://learn.adafruit.com/welcome-to-circuitpython/circuitpython-libraries).

Before continuing make sure your board's **lib** folder or root filesystem has the **adafruit\_TMP117.mpy** file **and adafruit\_bus\_device** folder **&nbsp;** copied over.

Next&nbsp;[connect to the board's serial REPL&nbsp;](https://learn.adafruit.com/welcome-to-circuitpython/the-repl)so you are at the CircuitPython&nbsp; **\>\>\>** &nbsp;prompt.

## **Python Installation of TMP117 Library**

You'll need to install the **Adafruit\_Blinka** library that provides the CircuitPython support in Python. This may also require enabling I2C on your platform and verifying you are running Python 3.&nbsp;[Since each platform is a little different, and Linux changes often, please visit the CircuitPython on Linux guide to get your computer ready](https://learn.adafruit.com/circuitpython-on-raspberrypi-linux)!

Once that's done, from your command line run the following command:

- sudo pip3 install adafruit-circuitpython-TMP117

If your default Python is version 3 you may need to run 'pip' instead. Just make sure you aren't trying to use CircuitPython on Python 2.x, it isn't supported!

## **Basic CircuitPython & Python Usage**

To demonstrate the usage of the sensor we'll initialize it and read the temperature measurements from the board's Python REPL.

Run the following code to import the necessary modules and initialize the I2C connection with the sensor:

```python
import time
import board
import adafruit_tmp117

i2c = board.I2C()
tmp117 = adafruit_tmp117.TMP117(i2c)
```

![](https://cdn-learn.adafruit.com/assets/assets/000/102/066/medium800/adafruit_products_tmp117.png?1620650789)

Now you're ready to read values from the sensor using the&nbsp; **temperature** property:

- **temperature&nbsp;** - The temperature measured by the sensor, a value in degrees Celsius.

```python
print("Temperature: %.2f degrees C" % tmp117.temperature)
```

![](https://cdn-learn.adafruit.com/assets/assets/000/097/386/medium800/adafruit_products_image.png?1606939102)

## **Basic Example Code**
https://github.com/adafruit/Adafruit_CircuitPython_TMP117/blob/main/examples/tmp117_simpletest.py

## Temperature Alerts Example
Once you've tried out the basic example, you can play with setting and checking high and low temperature alerts. Use the code above to set up a TMP117 instance in the REPL and then use the **`high_limit`** and **`low_limit`&nbsp;** properties to set alerts for high and low temperatures:

```python
tmp117.high_limit = 25
tmp117.low_limit = 10
```

The above will set the alert temperatures to 25 and 10 degrees C respectively. You may wish to change these values to suit your needs.

![](https://cdn-learn.adafruit.com/assets/assets/000/097/077/medium800/adafruit_products_image.png?1605561440)

Once the limits are set, we can check them using the&nbsp;`alert_status` property to read the state of the temperature limits:

```python
alert_status = tmp117.alert_status
print("High alert:", alert_status.high_alert)
print("Low alert:", alert_status.low_alert)
```

![](https://cdn-learn.adafruit.com/assets/assets/000/097/078/medium800/adafruit_products_image.png?1605561695)

## Temperature Alerts Example Code
https://github.com/adafruit/Adafruit_CircuitPython_TMP117/blob/main/examples/tmp117_limits_test.py

# Adafruit TMP117 High Accuracy I2C Temperature Monitor

## Python Docs

# Adafruit TMP117 High Accuracy I2C Temperature Monitor

## WipperSnapper

![](https://cdn-learn.adafruit.com/assets/assets/000/123/482/medium800/adafruit_products_Screenshot_2023-08-15_163525.png?1692113929)

## What is WipperSnapper

WipperSnapper is a firmware designed to turn any WiFi-capable board into an Internet-of-Things device without programming a single line of code. WipperSnapper connects to [Adafruit IO](https://io.adafruit.com/), a web&nbsp;platform designed ([by Adafruit!](https://www.adafruit.com/about)) to&nbsp;_display_,&nbsp;_respond_, and&nbsp;_interact_&nbsp;with your project's data.

Simply load the WipperSnapper firmware onto your board, add credentials, and plug it into power. Your board will automatically register itself with your Adafruit IO account.

From there, you can add&nbsp;_components_&nbsp;to your board such as buttons, switches, potentiometers, sensors, and more! Components are&nbsp;_dynamically&nbsp;_added to hardware, so you can&nbsp;immediately start interacting, logging, and streaming the data your projects produce without writing code.

If you've never used WipperSnapper, click below to read through the quick start guide before continuing.

[Quickstart: Adafruit IO WipperSnapper](https://learn.adafruit.com/quickstart-adafruit-io-wippersnapper)
## Wiring
First, wire up a TMP117 to your board exactly as follows. Here is an example of the TMP117 wired to an&nbsp;[Adafruit ESP32 Feather V2](https://www.adafruit.com/product/5400)&nbsp;using I2C&nbsp;[with a STEMMA QT cable (no soldering required)](https://www.adafruit.com/product/4210)

- **Board 3V** &nbsp;to&nbsp;**sensor VIN (red wire on STEMMA QT)**  
- **Board GND** &nbsp;to&nbsp;**sensor GND (black wire on STEMMA QT)**  
- **Board SCL** &nbsp;to&nbsp;**sensor SCL (yellow wire on STEMMA QT)**  
- **Board SDA** &nbsp;to&nbsp;**sensor SDA (blue wire on STEMMA QT)**

![Circuit showing TMP117 joined to Feather with Stemma QT / Qwiic / JST-SH 4-pin cable.](https://cdn-learn.adafruit.com/assets/assets/000/123/399/medium640/adafruit_products_TMP117_bb.jpg?1692280822)

![Circuit showing TMP117 mounted to Breadboard along with Feather, with jumper wires connected as described](https://cdn-learn.adafruit.com/assets/assets/000/123/401/medium640/adafruit_products_TMP117_Breadboard_bb.jpg?1692280644)

## Usage

Connect your board to Adafruit IO Wippersnapper and **[navigate to the WipperSnapper board list](https://io.adafruit.com/wippersnapper).**

On this page, **select the WipperSnapper board you're using** to be brought to the board's interface page.

![](https://cdn-learn.adafruit.com/assets/assets/000/128/359/medium800/adafruit_products_02_DeviceSelection_croppped.png?1709238457)

If you do not see your board listed here - you need [to connect your board to Adafruit IO](https://learn.adafruit.com/quickstart-adafruit-io-wippersnapper) first.

On the device page, quickly&nbsp; **check that you're running the latest version of the WipperSnapper firmware**.

The device tile on the left indicates the version number of the firmware running on the connected board.

- **If the firmware version is green with a checkmark -** &nbsp;continue with this guide.
- **If the firmware version is red with an exclamation mark "!" -** &nbsp;[update to the latest WipperSnapper firmware](https://learn.adafruit.com/quickstart-adafruit-io-wippersnapper)&nbsp;on your board before continuing.

![adafruit_products_CroppedVersion.png](https://cdn-learn.adafruit.com/assets/assets/000/123/496/medium640/adafruit_products_CroppedVersion.png?1692118649)

![adafruit_products_DeviceListPage_UpdateRequired.png](https://cdn-learn.adafruit.com/assets/assets/000/123/587/medium640/adafruit_products_DeviceListPage_UpdateRequired.png?1692284558)

Next, make sure the sensor is plugged into your board and click the **&nbsp;I2C Scan&nbsp;** button.

![](https://cdn-learn.adafruit.com/assets/assets/000/113/177/medium800/sensor_page_crop_scan.png?1657724520)

You should see the TMP117's default I2C address of&nbsp;`0x48`&nbsp;pop-up in the I2C scan list.

![](https://cdn-learn.adafruit.com/assets/assets/000/123/588/medium800/adafruit_products_Screenshot_2023-08-17_145455.png?1692284664)

###  I don't see the sensor's I2C address listed! 


First, double-check the connection and/or wiring between the sensor and the board.

Then, reset the board and let it re-connect to Adafruit IO WipperSnapper.

With the sensor detected in an I2C scan, you're ready to add the sensor to your board.

**Click the New Component button or the + button** to bring up the component picker.

![](https://cdn-learn.adafruit.com/assets/assets/000/127/931/medium800/sensor_page_temperature___humidity_06_AddComponent.png?1708631009)

Adafruit IO supports a large amount of components. To quickly find your sensor, type&nbsp;`TMP117`&nbsp;into the search bar, then select the&nbsp; **TMP117** component.

![](https://cdn-learn.adafruit.com/assets/assets/000/128/358/medium800/adafruit_products_7OA3iF5VKP.png?1709238425)

On the component configuration page, the TMP117's sensor address should be listed along with the sensor's settings.

The&nbsp; **Send Every** &nbsp;option is specific to each sensor's measurements. This option will tell the Feather how often it should read from the TMP117 sensor and send the data to Adafruit IO. Measurements can range from every 30 seconds to every 24 hours.

For this example, set the&nbsp; **Send Every&nbsp;** interval to every 30 seconds.

![](https://cdn-learn.adafruit.com/assets/assets/000/123/490/medium800/adafruit_products_Screenshot_2023-08-15_171955.png?1692117735)

Your device interface should now show the sensor components you created. After the interval you configured elapses, WipperSnapper will automatically read values from the sensor(s) and send them to Adafruit IO.

![](https://cdn-learn.adafruit.com/assets/assets/000/123/491/medium800/adafruit_products_Screenshot_2023-08-15_172027.png?1692117958)

To view the data that has been logged from the sensor, click on the graph next to the sensor name.

![](https://cdn-learn.adafruit.com/assets/assets/000/123/492/medium800/adafruit_products_FeedArrowScreenshot_2023-08-15_172027.png?1692118078)

Here you can see the feed history and edit things about the feed such as the name, privacy, webhooks associated with the feed and more. If you want to learn more about how feeds work, [check out this page](https://learn.adafruit.com/all-the-internet-of-things-episode-four-adafruit-io/advanced-feeds).

![](https://cdn-learn.adafruit.com/assets/assets/000/123/493/medium800/adafruit_products_Screenshot_2023-08-15_172443.png?1692118106)

# Adafruit TMP117 High Accuracy I2C Temperature Monitor

## Downloads

## **Files**

- [TMP117 Datasheet](https://www.ti.com/lit/ds/symlink/tmp117.pdf)
- [EagleCAD files on GitHub](https://github.com/adafruit/Adafruit-TMP117-PCB)
- [Fritzing object in the Adafruit Fritzing Library](https://github.com/adafruit/Fritzing-Library/blob/master/parts/Adafruit%20TMP117.fzpz)

## Schematic
![](https://cdn-learn.adafruit.com/assets/assets/000/097/061/medium800/adafruit_products_image.png?1605301879)

## Fab Print
![](https://cdn-learn.adafruit.com/assets/assets/000/097/062/medium800/adafruit_products_image.png?1605304039)


## Primary Products

### Adafruit TMP117 ±0.1°C High Accuracy I2C Temperature Sensor

[Adafruit TMP117 ±0.1°C High Accuracy I2C Temperature Sensor](https://www.adafruit.com/product/4821)
The **TMP117 Precision Temperature Sensor** is an I2C temperature sensor that will help you easily add temperature measurement and adjustment to your project. In addition to the obvious support for reading the temperature, the TMP117 can also monitor the temperature and alert you...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4821)
[Related Guides to the Product](https://learn.adafruit.com/products/4821/guides)

## Featured Products

### STEMMA QT / Qwiic JST SH 4-pin to Premium Male Headers Cable

[STEMMA QT / Qwiic JST SH 4-pin to Premium Male Headers Cable](https://www.adafruit.com/product/4209)
This 4-wire cable is a little over 150mm / 6" long and fitted with JST-SH female 4-pin connectors on one end and premium Dupont male headers on the other. Compared with the chunkier JST-PH these are 1mm pitch instead of 2mm, but still have a nice latching feel, while being easy to insert...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4209)
[Related Guides to the Product](https://learn.adafruit.com/products/4209/guides)
### JST SH 4-pin Cable with Alligator Clips - STEMMA QT / Qwiic

[JST SH 4-pin Cable with Alligator Clips - STEMMA QT / Qwiic](https://www.adafruit.com/product/4398)
This cable will make it super easy to use our plug-and-play STEMMA QT boards with boards like Circuit Playground. On one end you get a Qwiic / STEMMA QT connector (technically known as a JST SH 4-pin plug)&nbsp; into 4 individual wires with grippy alligator clips. We're carrying these to...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4398)
[Related Guides to the Product](https://learn.adafruit.com/products/4398/guides)
### 4-pin JST PH to JST SH Cable - STEMMA to QT / Qwiic

[4-pin JST PH to JST SH Cable - STEMMA to QT / Qwiic](https://www.adafruit.com/product/4424)
Are you a maker in the midst of&nbsp;a [**STEMMA**](https://learn.adafruit.com/introducing-adafruit-stemma-qt/what-is-stemma) dilemma? This 200mm long 4-wire cable is a fantastic chimera-cable fitted with **STEMMA QT / Sparkfun Qwiic JST SH** on one end,...

In Stock
[Buy Now](https://www.adafruit.com/product/4424)
[Related Guides to the Product](https://learn.adafruit.com/products/4424/guides)
### STEMMA QT / Qwiic JST SH 4-pin Cable with Premium Female Sockets

[STEMMA QT / Qwiic JST SH 4-pin Cable with Premium Female Sockets](https://www.adafruit.com/product/4397)
This 4-wire cable is a little over 150mm / 6" long and fitted with JST-SH female 4-pin connectors on one end and premium female headers on the other. Compared with the chunkier JST-PH these are 1mm pitch instead of 2mm, but still have a nice latching feel, while being easy to insert and...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4397)
[Related Guides to the Product](https://learn.adafruit.com/products/4397/guides)
### STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long

[STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long](https://www.adafruit.com/product/4210)
This 4-wire cable is a little over 100mm / 4" long and fitted with JST-SH female 4-pin connectors on both ends. Compared with the chunkier JST-PH these are 1mm pitch instead of 2mm, but still have a nice latching feel, while being easy to insert and remove.

<a...></a...>

Out of Stock
[Buy Now](https://www.adafruit.com/product/4210)
[Related Guides to the Product](https://learn.adafruit.com/products/4210/guides)

## Related Guides

- [Adafruit HMC5883L Breakout - Triple-Axis Magnetometer Compass Sensor](https://learn.adafruit.com/adafruit-hmc5883l-breakout-triple-axis-magnetometer-compass-sensor.md)
- [Adafruit AS7341 10-Channel Light / Color Sensor Breakout](https://learn.adafruit.com/adafruit-as7341-10-channel-light-color-sensor-breakout.md)
- [Adafruit RS232 Pal](https://learn.adafruit.com/adafruit-rs232-pal.md)
- [ADXL345 Digital Accelerometer](https://learn.adafruit.com/adxl345-digital-accelerometer.md)
- [Adafruit LTC4316 I2C Address Translator](https://learn.adafruit.com/adafruit-ltc4316-i2c-address-translator.md)
- [Adafruit pIRkey](https://learn.adafruit.com/adafruit-pirkey-python-programmable-infrared-usb-adapter.md)
- [Adafruit 2.4" PiTFT HAT with Resistive Touchscreen Mini Kit](https://learn.adafruit.com/adafruit-2-4-pitft-hat-with-resistive-touchscreen-mini-kit.md)
- [Adafruit 16-channel PWM/Servo Shield](https://learn.adafruit.com/adafruit-16-channel-pwm-slash-servo-shield.md)
- [Calibrating Sensors](https://learn.adafruit.com/calibrating-sensors.md)
- [Adafruit SCD-40 and SCD-41](https://learn.adafruit.com/adafruit-scd-40-and-scd-41.md)
- [Adafruit LPS33/LPS35 Water Resistant Pressure Sensor](https://learn.adafruit.com/lps35hw-water-resistant-pressure-sensor.md)
- [AFMotor Library Reference](https://learn.adafruit.com/afmotor-library-reference.md)
- [Adafruit 10-DOF IMU Breakout](https://learn.adafruit.com/adafruit-10-dof-imu-breakout-lsm303-l3gd20-bmp180.md)
- [Adafruit 555 PWM Output STEMMA](https://learn.adafruit.com/adafruit-555-pwm-output-stemma.md)
- [Adafruit SI1145 Breakout Board - UV index / IR / Visible Sensor](https://learn.adafruit.com/adafruit-si1145-breakout-board-uv-ir-visible-sensor.md)
