It's easy to use the Adafruit Sensirion SHT40 and SHT45 Temperature & Humidity Sensors with CircuitPython and the Adafruit CircuitPython SHT4x module.  This module allows you to easily write Python code that reads temperature and humidity data from either sensor.

You can use these sensors with any CircuitPython microcontroller board or with a computer that has GPIO and Python thanks to Adafruit_Blinka, our CircuitPython-for-Python compatibility library.

The wiring and code for the SHT40 works exactly the same way with the SHT45.

Even though this page references the SHT40, the code and wiring for the SHT45 are exactly the same! Follow the instructions as-is to use the SHT45.

CircuitPython Microcontroller Wiring

First wire up an SHT40 to your board exactly as follows. Here is an example of the SHT40 wired to a Feather using I2C:

  • Board 3V to sensor VIN
  • Board GND to sensor GND
  • Board SCL to sensor SCL
  • Board SDA to sensor SDA

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

Here's the Raspberry Pi wired with I2C:

  • Pi 3V3 to sensor VIN
  • Pi GND to sensor GND
  • Pi SCL to sensor SCL
  • Pi SDA to sensor SDA

CircuitPython Installation of SHT4x Library

You'll need to install the Adafruit CircuitPython SHT4x library on your CircuitPython board.

First make sure you are running the latest version of Adafruit CircuitPython for your board.

Next you'll need to install the necessary libraries to use the hardware--carefully follow the steps to find and install these libraries from Adafruit's CircuitPython library bundle.  Our CircuitPython starter guide has a great page on how to install libraries from the library bundle.

Copy the following file from the bundle to the lib folder on your CIRCUITPY drive:

  • adafruit_sht4x.mpy

Before continuing make sure your board's lib folder or root filesystem has the adafruit_sht4x.mpy file copied over.

Next connect to the board's serial REPL so you are at the CircuitPython >>> prompt.

Python Installation of SHT4x 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. Since each platform is a little different, and Linux changes often, please visit the CircuitPython on Linux guide to get your computer ready!

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

  • pip3 install adafruit-circuitpython-sht4x

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!

CircuitPython & Python Usage

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

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

import board
import adafruit_sht4x

sht = adafruit_sht4x.SHT4x(board.I2C())

Now you're ready to read values from the sensor using these properties:

  • relative_humidity - The current relative humidity in % rH
  • temperature - The current temperature in degrees celsius
print(sht.temperature)
print(sht.relative_humidity)

That's all there is to reading temperature and humidity from the SHT40 sensor!

Full Example Code

# SPDX-FileCopyrightText: Copyright (c) 2020 ladyada for Adafruit Industries
#
# SPDX-License-Identifier: MIT

import time
import board
import adafruit_sht4x

i2c = board.I2C()  # uses board.SCL and board.SDA
# i2c = board.STEMMA_I2C()  # For using the built-in STEMMA QT connector on a microcontroller
sht = adafruit_sht4x.SHT4x(i2c)
print("Found SHT4x with serial number", hex(sht.serial_number))

sht.mode = adafruit_sht4x.Mode.NOHEAT_HIGHPRECISION
# Can also set the mode to enable heater
# sht.mode = adafruit_sht4x.Mode.LOWHEAT_100MS
print("Current mode is: ", adafruit_sht4x.Mode.string[sht.mode])

while True:
    temperature, relative_humidity = sht.measurements
    print("Temperature: %0.1f C" % temperature)
    print("Humidity: %0.1f %%" % relative_humidity)
    print("")
    time.sleep(1)

This guide was first published on Feb 04, 2021. It was last updated on Jan 17, 2023.

This page (Python & CircuitPython) was last updated on May 29, 2023.

Text editor powered by tinymce.