In this article we connect a SHT31 temperature and humidity sensors to a MSP430FR4133 LaunchPad
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.
Features
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
Size | 2.5 x 2.5 x 0.9 mm |
Output | I²C, Voltage Out |
Supply voltage range | 2.15 to 5.5 V |
Energy consumption | 4.8µW (at 2.4 V, low repeatability, 1 measurement / s) |
RH operating range | 0 – 100% RH |
T operating range | -40 to +125°C (-40 to +257°F) |
RH response time | 8 sec (tau63%) |
I bought the following module
Parts Required
Name | Link |
MSP430FR4133 LaunchPad | MSP430FR4133 LaunchPad development board MSP-EXP430FR4133 |
SHT31 | |
Connecting wire | Free shipping Dupont line 120pcs 20cm male to male + male to female and female to female jumper wire |
Schematic/Connection
Here are the connectors on the launchpad
MSP430FR4133 Launchpad | Sensor |
3.3v | Vin |
Gnd | Gnd |
SDA P8_2 | SDA |
SCL P8_3 | SCL |
Code
#include <Wire.h>
// SHT31 I2C address is 0x44(68)
#define Addr 0x44
void setup()
{
// Initialise I2C communication as MASTER
Wire.begin();
// Initialise serial communication, set baud rate = 9600
Serial.begin(9600);
delay(300);
}
void loop()
{
unsigned int data[6];
// Start I2C Transmission
Wire.beginTransmission(Addr);
// Send 16-bit command byte
Wire.write(0x2C);
Wire.write(0x06);
// Stop I2C transmission
Wire.endTransmission();
delay(300);
// Start I2C Transmission
Wire.beginTransmission(Addr);
// Stop I2C Transmission
Wire.endTransmission();
// Request 6 bytes of data
Wire.requestFrom(Addr, 6);
// Read 6 bytes of data
// temp msb, temp lsb, temp crc, hum msb, hum lsb, hum crc
if (Wire.available() == 6)
{
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
data[3] = Wire.read();
data[4] = Wire.read();
data[5] = Wire.read();
}
// Convert the data
int temp = (data[0] * 256) + data[1];
float cTemp = -45.0 + (175.0 * temp / 65535.0);
float fTemp = (cTemp * 1.8) + 32.0;
float humidity = (100.0 * ((data[3] * 256.0) + data[4])) / 65535.0;
// Output data to serial monitor
Serial.print("Temperature in Celsius :");
Serial.print(cTemp);
Serial.println(" C");
Serial.print("Temperature in Fahrenheit :");
Serial.print(fTemp);
Serial.println(" F");
Serial.print("Relative Humidity :");
Serial.print(humidity);
Serial.println(" %RH");
delay(500);
}
Output
Open the serial monitor
Temperature in Celsius :22.94 C
Temperature in Fahrenheit :73.30 F
Relative Humidity :42.03 %RH
Temperature in Celsius :22.93 C
Temperature in Fahrenheit :73.27 F
Relative Humidity :42.04 %RH
Temperature in Celsius :22.92 C
Temperature in Fahrenheit :73.25 F
Relative Humidity :42.07 %RH