STM32 Nucleo and SHT31 temperature and humidity sensors Arduino example

OK we are now going to look at an SHT31 attached to the STM32 Nucleo and all development will be done on the Arduino IDE – Install STM32 support in the Arduino IDE

SHT31 is the next generation of Sensirion’s temperature and humidity sensors. It builds on a new CMOSens® sensor chip that is at the heart of Sensirion’s new humidity and temperature platform.

The SHT3x-DIS has increased intelligence, reliability and improved accuracy specifications compared to its predecessor. Its functionality includes enhanced signal processing, two distinctive and user selectable I2C addresses and communication speeds of up to 1 MHz. The DFN package has a footprint of 2.5 x 2.5 mm2 while keeping a height of 0.9 mm.

This allows for integration of the SHT3x-DIS into a great variety of applications.


Fully calibrated, linearized, and temperature compensated digital output
Wide supply voltage range, from 2.4 V to 5.5 V
I2C Interface with communication speeds up to 1 MHz and two user selectable addresses





stm32 and sht31
stm32 and sht31


This example uses the adafruit sht31 library –

#include <Arduino.h>
#include <Wire.h>
#include "Adafruit_SHT31.h"
Adafruit_SHT31 sht31 = Adafruit_SHT31();
void setup() 
  if (! sht31.begin(0x44)) 
    Serial.println("Couldn't find SHT31");
    while (1) delay(1);
void loop() 
  float t = sht31.readTemperature();
  float h = sht31.readHumidity();
  if (! isnan(t)) 
    Serial.print("Temp *C = "); Serial.println(t);
    Serial.println("Failed to read temperature");
  if (! isnan(h)) 
    Serial.print("Hum. % = "); Serial.println(h);
    Serial.println("Failed to read humidity");


Open the serial monitor and you will see something like this

Temp *C = 21.86
Hum. % = 65.23

Temp *C = 22.00
Hum. % = 69.66

Temp *C = 22.13
Hum. % = 72.73

Temp *C = 22.25
Hum. % = 74.86

Temp *C = 22.35
Hum. % = 75.87


1PCS/LOT SHT31 Temperature & SHT31-D Humidity Sensor module Breakout Weather for Arduino