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
[codesyntax lang=”cpp”]
#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); }
[/codesyntax]
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