The Si7021 I2C Humidity and Temperature Sensor is a monolithic CMOS IC integrating humidity and temperature sensor elements, an analog-to-digital converter, signal processing, calibration data, and an I2C Interface. The Si7021 offers an accurate, low-power, factory-calibrated digital solution ideal for measuring humidity, dew-point, and temperature, in applications ranging from HVAC/R and asset tracking to industrial and consumer platforms.
Features
Precision Relative Humidity Sensor ± 3% RH (max), 0–80% RH
High Accuracy Temperature Sensor ±0.4 °C (max), –10 to 85 °C
0 to 100% RH operating range
Up to –40 to +125 °C operating range
Wide operating voltage – (1.9 to 3.6 V)
Low Power Consumption – 150 μA active current
Layout
Code
No 3rd party libraries required
[codesyntax lang=”cpp”]
#include <Wire.h> const int ADDR =0x40; int X0,X1,Y0,Y1,Y2,Y3; double X,Y,X_out,Y_out1,Y_out2; void setup() { Serial.begin(9600); Wire.begin(); delay(100); Wire.beginTransmission(ADDR); Wire.endTransmission(); } void loop() { /**Send command of initiating temperature measurement**/ Wire.beginTransmission(ADDR); Wire.write(0xE3); Wire.endTransmission(); Serial.print("Temp"); Serial.print("\t"); Serial.println("Humidity"); /**Read data of temperature**/ Wire.requestFrom(ADDR,2); if(Wire.available()<=2); { X0 = Wire.read(); X1 = Wire.read(); X0 = X0<<8; X_out = X0+X1; } /**Calculate and display temperature**/ X=(175.72*X_out)/65536; X=X-46.85; Serial.print(X); Serial.print("C"); Serial.print("\t"); /**Send command of initiating relative humidity measurement**/ Wire.beginTransmission(ADDR); Wire.write(0xE5); Wire.endTransmission(); /**Read data of relative humidity**/ Wire.requestFrom(ADDR,2); if(Wire.available()<=2); { Y0 = Wire.read(); Y2=Y0/100; Y0=Y0%100; Y1 = Wire.read(); Y_out1 = Y2*25600; Y_out2 = Y0*256+Y1; } /**Calculate and display relative humidity**/ Y_out1 = (125*Y_out1)/65536; Y_out2 = (125*Y_out2)/65536; Y = Y_out1+Y_out2; Y=Y-6; Serial.print(Y); Serial.println("%"); delay(300); Serial.println(); delay(1000); }
[/codesyntax]
Testing
Open the serial monitor and you should see something like this
Temp Humidity
21.02C 37.63%
Temp Humidity
21.76C 37.93%
Temp Humidity
26.21C 39.49%
Temp Humidity
28.65C 40.68%
Temp Humidity
29.88C 41.89%
Temp Humidity
29.51C 42.16%
Link
Si7021 Humidity Sensor with I2C Interface for Arduino