SparkFun Temperature Sensor - STTS22H (Qwiic) Hookup Guide
2024-01-02 | By SparkFun Electronics
License: See Original Project
Courtesy of SparkFun
Guide by ELL C
Introduction
The SparkFun Temperature Sensor - STTS22H (Qwiic) and the SparkFun Micro Temperature Sensor - STTS22H (Qwiic) are Qwiic enabled breakout boards based on the ultralow-power, high-accuracy, digital temperature sensor STTS22H from ST Microelectronics. Thanks to its factory calibration the STTS22H offers high-end accuracy performance over the entire operating temperature range, reaching as low as ±0.5 °C without requiring any further calibration at the application level.
Required Materials
To follow along with this tutorial, you will need the following materials. You may not need everything though depending on what you have. Add it to your cart, read through the guide, and adjust the cart as necessary.
SparkFun Temperature Sensor - STTS22H (Qwiic) Hookup Guide Wish List SparkFun Wish List
- SparkFun Micro Temperature Sensor - STTS22H (Qwiic)
- SparkFun Temperature Sensor - STTS22H (Qwiic)
- SparkFun RedBoard Qwiic
- Qwiic Cable - 100mm
- IC Hook with Pigtail
- Reversible USB A to Reversible Micro-B Cable - 0.8m
VIEW SPARKFUN TEMPERATURE SENSOR - STTS22H (QWIIC) HOOKUP GUIDE WISH LIST ON SPARKFUN.COM
Suggested Reading
If you aren't familiar with the Qwiic system, we recommend reading here for an overview.
We would also recommend taking a look at the following tutorials if you aren't familiar with them.
- What is an Arduino?: What is this 'Arduino' thing anyway? This tutorial dives into what an Arduino is and along with Arduino projects and widgets.
- Installing Arduino IDE: A step-by-step guide to installing and testing the Arduino software on Windows, Mac, and Linux.
- How to Install FTDI Drivers: How to install drivers for the FTDI Basic on Windows, Mac OS X, and Linux.
- Using the Arduino Pro Mini 3.3V: This tutorial is your guide to all things Arduino Pro Mini. It explains what it is, what it's not, and how to get started using it.
Hardware Overview
STTS22
The STTS22H is an ultralow-power, high-accuracy, digital temperature sensor offering high performance over the entire operating temperature range. Thanks to its factory calibration the STTS22H offers high-end accuracy performance over the entire operating temperature range, reaching as low as ±0.5 °C without requiring any further calibration at the application level. The sensor operating mode is user-configurable and allows selecting between different ODRs (down to 1 Hz) or the one-shot mode for battery saving. In one-shot mode, the sensor current consumption falls to 1.75 µA. For more information, refer to the datasheet.
STTS22
STTS22 on Micro
Qwiic Connectors
There are two Qwiic connectors on either side of the SparkFun Temperature Sensor - STTS22H to provide power and I2C connectivity simultaneously. The Micro version has a single Qwiic connector that again provides power and I2C connectivity. The I2C address of both boards is 0x3C by default, but the 1x1 board has 3 other addresses the board can be configured to use, while the Micro has 1 other address available.
Qwiic Connectors
Qwiic Connector on Micro
Power
Ideally, power will be supplied via the Qwiic connector(s). Alternatively, power can be supplied through the header along the bottom side of the board labeled 3V3 and GND. The input voltage range should be between 1.5-3.6V. The Micro version has a single Ground Pin available.
3.3V & GND Pins
GND Pin on Micro
Note: There is no onboard voltage regulation on either of these boards. If you choose to provide power via the plated through holes, ensure that your voltage does not exceed 5.5V.
Interrupt Pin
An interrupt pin is available to signal the application whenever the selectable high or low threshold has been exceeded.
Interrupt Pin
Interrupt Pin on Micro
Power LED
Hopefully, this is self-explanatory, but this LED lights up when power is supplied to the board.
Power LED
Power LED on Micro
Exposed Pad
There's an extra pad on the bottom side of each board that allows for the most accurate possible readings.
Exposed Pad
Exposed Pad on Micro
Jumpers
LED Jumper
If power consumption is an issue, cut this jumper to disable the LED on the front of the board.
Power LED Jumper
Power LED Jumper on Micro
Address Jumpers
The 1x1 board has two address jumpers available. The default I2C address is 0x3C. By cutting various trace combinations, there are three other I2C addresses available.
Address Jumper
Address Jumper 1
The Micro version of this board has a single address jumper that affords the ability to change the I2C address from 0x3C (Default) to 0x38.
I2C Jumper
These boards are both equipped with pull-up resistors. If you are daisy chaining multiple Qwiic devices, you will want to cut this jumper; if multiple sensors are connected to the bus with the pull-up resistors enabled, the parallel equivalent resistance will create too strong of a pull-up for the bus to operate correctly. As a general rule of thumb, disable all but one pair of pull-up resistors if multiple devices are connected to the bus. To disable the pull up resistors, use an X-acto knife to cut the joint between the two jumper pads highlighted below.
I2C Jumper
I2C Jumper on Micro
Board Outline
The standard Temperature Sensor STTS22H Breakout measures 1" x 1".
The Micro Temperature Sensor STTS22H Breakout measures 0.75" x 0.3".
Hardware Hookup
The delightful thing about our Qwiic System is that it makes hooking up your project as easy as plug and play. Pop one end of your Qwiic connector into the controlling board and plug the other end of your Qwiic connector into your Temperature Sensor board! Voila!
Software Setup
Note: Make sure you are using the latest stable version of the Arduino IDE on your desktop. If this is your first time using Arduino, please review our tutorial on installing the Arduino IDE. If you have not previously installed an Arduino library, please check out our installation guide.
SparkFun has written a library to work with the SparkFun Temperature Sensor - STTS22H (Qwiic). You can obtain this library through the Arduino Library Manager by searching for "STTS22H". Find the one written by SparkFun Electronics and install the latest version. If you prefer downloading libraries manually, you can grab them from the GitHub Repository.
SPARKFUN STTS22H ARDUINO LIBRARY GITHUB
Examples
Example 1: Basic
Now that we've got our library installed and our hardware all hooked up, let's look at some examples.
This first example just does some basic measurements. To find Example 1, go to File > Examples > SparkFun Temperature Sensor - STTS22H > example1-basic:
Or alternatively you can copy and paste the code below into a nice shiny new Arduino window:
/*
example1-basic.ino
This example shows basic data retrieval from the SparkFun Temperature Sensor - STTS22H.
Output Data Rates:
STTS22H_POWER_DOWN
STTS22H_ONE_SHOT
STTS22H_1Hz
STTS22H_25Hz
STTS22H_50Hz
STTS22H_100Hz
STTS22H_200Hz
Written by:
Elias Santistevan @ SparkFun Electronics December, 2022
Products:
SparkFun Temperature Sensor - STTS2H https://www.sparkfun.com/products/21262
SparkFun Micro Temperature Sensor - STTS2H https://www.sparkfun.com/products/21051
Repository:
https://github.com/sparkfun/SparkFun_STTS22H_Arduino_Library
SparkFun code, firmware, and software is released under the MIT
License(http://opensource.org/licenses/MIT).
*/
#include <Wire.h>
#include "SparkFun_STTS22H.h"
SparkFun_STTS22H mySTTS;
float temp;
void setup()
{
Wire.begin();
Serial.begin(115200);
if( !mySTTS.begin() )
{
Serial.println("Did not begin.");
while(1);
}
Serial.println("Ready");
// Other output data rates can be found in the description
// above. To change the ODR or mode, the device must first be
// powered down.
mySTTS.setDataRate(STTS22H_POWER_DOWN);
delay(10);
mySTTS.setDataRate(STTS22H_1Hz);
// Enables incrementing register behavior for the IC.
// It is not enabled by default as the datsheet states and
// is vital for reading the two temperature registers.
mySTTS.enableAutoIncrement();
delay(100);
}
void loop()
{
// Only use data ready for one-shot mode or 1Hz output.
if( mySTTS.dataReady() )
{
mySTTS.getTemperatureF(&temp);
// Temperature in different units can be retrieved
// using the following functions.
//mySTTS.getTemperatureC(&temp);
//mySTTS.getTemperatureK(&temp);
Serial.print("Temp: ");
Serial.print(temp);
Serial.println("F");
}
// delay = 1/ODR
delay(1000);
}
Once you're ready to go, go ahead and hit the upload button (the right facing arrow button under the "Edit" menu item). Once your code is uploaded, open the Serial Monitor and you'll see information start printing out.
Example 2: Interrupt
Example 2 can be found under File > Examples > SparkFun Temperature Sensor - STTS22H > example2-interrupt:
You can also copy the code below into a new Arduino file:
/*
example2_basic.ino
This example desmonstrates how to set temperature thresholds to trigger an interrupt.
Output Data Rates:
STTS22H_POWER_DOWN
STTS22H_ONE_SHOT
STTS22H_1Hz
STTS22H_25Hz
STTS22H_50Hz
STTS22H_100Hz
STTS22H_200Hz
Written by:
Elias Santistevan @ SparkFun Electronics December, 2022
Products:
SparkFun Temperature Sensor - STTS2H https://www.sparkfun.com/products/21262
SparkFun Micro Temperature Sensor - STTS2H https://www.sparkfun.com/products/21051
Repository:
https://github.com/sparkfun/SparkFun_STTS22H_Arduino_Library
SparkFun code, firmware, and software is released under the MIT
License(http://opensource.org/licenses/MIT).
*/
#include <Wire.h>
#include "SparkFun_STTS22H.h"
SparkFun_STTS22H mySTTS;
float temp;
// These values are in Farenheit
float interruptHighValue = 90.5;
float interruptLowValue = 42.0;
int tempInterrupt = 2;
void setup()
{
Wire.begin();
Serial.begin(115200);
pinMode(tempInterrupt, INPUT);
if( !mySTTS.begin() )
{
Serial.println("Did not begin.");
while(1);
}
Serial.println("Ready");
// Other output data rates can be found in the description
// above. To change the ODR or mode, the device must first be
// powered down.
mySTTS.setDataRate(STTS22H_POWER_DOWN);
delay(10);
mySTTS.setDataRate(STTS22H_25Hz);
// Enables incrementing register behavior for the IC.
// It is not enabled by default as the datsheet states and
// is vital for reading the two temperature registers.
mySTTS.enableAutoIncrement();
// Set interrupts for both lower and higher thresholds.
// Note: These functions accept Farenheit as their arguments.
// Other functions for different units just below.
mySTTS.setInterruptLowF(interruptLowValue);
mySTTS.setInterruptHighF(interruptHighValue);
//mySTTS.setInterruptLowC(interruptLowValue);
//mySTTS.setInterruptHighC(interruptHighValue);
//mySTTS.setInterruptLowK(interruptLowValue);
//mySTTS.setInterruptHighK(interruptHighValue);
delay(100);
}
void loop()
{
// Checking if data ready is not necessary when output is set higher
// than 1Hz.
mySTTS.getTemperatureF(&temp);
// Temperature in different units can be retrieved
// using the following functions.
//mySTTS.getTemperatureC(&temp);
//mySTTS.getTemperatureK(&temp);
Serial.print("Temp: ");
Serial.print(temp);
Serial.println("F");
if( digitalRead(tempInterrupt) == LOW )
{
Serial.println("Temperature threshold");
while(1);
}
// delay = 1/ODR
delay(1000);
}
Note that depending on which processor board you are using, you may need to alter the Interrupt Pin. Since we're using a RedBoard here, our Interrupt Pin is 2 (int tempInterrupt = 2;). Also, in this example, we've used an IC hook with a pigtail to connect the Interrupt Pin to the RedBoard pin 2, but you can also solder headers to the STTS22H Temperature Sensor so you can use the interrupt pin. Your hardware hookup should look something like the following:
Once you're ready to go, go ahead and hit the upload button (the right facing arrow button under the "Edit" menu item). Once your code is uploaded, open the Serial Monitor and you'll see information start printing out.
If you have a look at the code, you'll notice that we've set our upper threshhold to 90.5 degrees F, and our lower threshhold to 42 degrees F. I held the sensor in front of a heater to hit the upper threshhold:
The lower threshhold was reached by sticking the sensor in a plastic bag and then putting that plastic bag into ice water:
Example 3: One Shot
In Example 3, we're going to have a look at the One-Shot functionality. To find Example 3, go to File > Examples > SparkFun Temperature Sensor - STTS22H > example3-one_shot:
Or you can copy and paste the code below into a clean Arduino sketch:
/*
example3-one_shot.ino
This example shows basic data retrieval using the "one-shot" feature i.e. - get the temp
now feature.
Output Data Rates:
STTS22H_POWER_DOWN
STTS22H_ONE_SHOT < -------- This one.
STTS22H_1Hz
STTS22H_25Hz
STTS22H_50Hz
STTS22H_100Hz
STTS22H_200Hz
Written by:
Elias Santistevan @ SparkFun Electronics December, 2022
Products:
SparkFun Temperature Sensor - STTS2H https://www.sparkfun.com/products/21262
SparkFun Micro Temperature Sensor - STTS2H https://www.sparkfun.com/products/21051
Repository:
https://github.com/sparkfun/SparkFun_STTS22H_Arduino_Library
SparkFun code, firmware, and software is released under the MIT
License(http://opensource.org/licenses/MIT).
*/
#include <Wire.h>
#include "SparkFun_STTS22H.h"
SparkFun_STTS22H mySTTS;
float temp;
void setup()
{
Wire.begin();
Serial.begin(115200);
if( !mySTTS.begin() )
{
Serial.println("Did not begin.");
while(1);
}
Serial.println("Ready");
// Other output data rates can be found in the description
// above. To change the ODR or mode, the device must first be
// powered down.
mySTTS.setDataRate(STTS22H_POWER_DOWN);
delay(10);
// Force new reading, temp sensor will power down after conversion.
mySTTS.setDataRate(STTS22H_ONE_SHOT);
// Enables incrementing register behavior for the IC.
// It is not enabled by default as the datsheet states and
// is vital for reading the two temperature registers.
mySTTS.enableAutoIncrement();
delay(100);
}
void loop()
{
// Temp sensor will power down automatically after single read.
if( mySTTS.dataReady() )
{
mySTTS.getTemperatureF(&temp);
// Temperature in different units can be retrieved
// using the following functions.
//mySTTS.getTemperatureC(&temp);
//mySTTS.getTemperatureK(&temp);
Serial.print("Temp: ");
Serial.print(temp);
Serial.println("F");
// Wait 10 seconds for until we initiate another read.
delay(10000);
// Enable another reading.
mySTTS.setDataRate(STTS22H_ONE_SHOT);
}
// Demonstrative delay.
delay(100);
}
Once you're ready to go, go ahead and hit the upload button (the right facing arrow button under the "Edit" menu item). Once your code is uploaded, open the Serial Monitor and you'll see information start printing out.
This really isn't all that exciting until you measure the current consumption!
Troubleshooting
Not working as expected and need help?
If you need technical assistance and more information on a product that is not working as you expected, we recommend heading on over to the SparkFun Technical Assistance page for some initial troubleshooting.
SPARKFUN TECHNICAL ASSISTANCE PAGE
If you don't find what you need there, the SparkFun Forums are a great place to find and ask for help. If this is your first visit, you'll need to create a Forum Account to search product forums and post questions.
CREATE NEW FORUM ACCOUNT LOG INTO SPARKFUN FORUMS
Resources and Going Further
SparkFun Temperature Sensor - STTS22H (Qwiic):
SparkFun Micro Temperature Sensor - STTS22H (Qwiic):
General Information:
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.
Visit TechForum