It's easy to use the Adafruit Sensirion SHT40, SHT41, 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 SHT41 and 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:
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:
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!
# 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)
Page last edited January 22, 2025
Text editor powered by tinymce.