In this example we show how to connect a SHT31 humidity sensor to a MSP-EXP432P401R LaunchPad, the example will use the Energia IDE.
I used a SHT31 module in this example, which you can see below
The SHT31 humidity sensor series takes sensor technology to a new level. As the successor of the SHT2x series it is determined to set the next industry standard in humidity sensing. The SHT3x humidity sensor series consists of a low-cost version with the SHT30 humidity sensor, a standard version with the SHT31 humidity sensor, and a high-end version with the SHT35 humidity sensor.
The SHT3x humidity sensor series combines multiple functions and various interfaces (I2C, analog voltage output) with a applications-friendly, very wide operating voltage range (2.4 to 5.5 V).
More info – SHT31 website
Connection
Here is a picture of the launchpad so you can see what pins we are referring to below in the table
| Module Connection | MSP432 Connection |
| SDA | J1-10 SDA |
| SCL | J1-9 SCL |
| Gnd | J3-22 Gnd |
| Vcc | J1-1 3.3v |
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 and you should see something like this
Temperature in Celsius :29.97 C
Temperature in Fahrenheit :85.95 F
Relative Humidity :39.29 %RH
Temperature in Celsius :30.55 C
Temperature in Fahrenheit :86.98 F
Relative Humidity :44.32 %RH
Temperature in Celsius :30.93 C
Temperature in Fahrenheit :87.67 F
Relative Humidity :48.15 %RH
Temperature in Celsius :31.32 C
Temperature in Fahrenheit :88.38 F
Relative Humidity :51.27 %RH
Temperature in Celsius :31.48 C
Temperature in Fahrenheit :88.66 F
Relative Humidity :53.68 %RH
Links
1PCS/LOT SHT31 Temperature & SHT31-D Humidity Sensor module Breakout Weather for Arduino


