Si7021 High Accuracy Humidity and Temperature Sensor.

See the blog post for the DHT22 here.
See the blog post for the DHT11 here.

The sketch can be found at my GitHub page here.

The Si7021 device is one of Silicon Labs’ latest generation I2C relative humidity and temperature sensors. This device combines fully factory-calibrated humidity and temperature sensor elements with an analog to digital converter, signal processing and an I2C host interface. The device is tiny, especially when compared to the standard DHT11 or DHT22 normally used with the Arduino for humidity sensing. The device needs a maximum of 3 volts to power it and so cannot be directly connected to an Arduino.

The breakout board that I purchased had a 3.3 volt regulator to power the Si7021, but I suspect that there was no level shifting for the I2C connections so I used a level shifter for SDA and SCL just in case.

I found a library here and the humidity and temperature can be easily read with a single command. I decided to use an OLED to display both humidity and temperature.

Take great care when connecting the OLED as reversing the power connections will burn it out. Connect Vcc to Arduino 5 volts, Gnd to Arduino Gnd. Connect SDA to Arduino pin A4 and SCL to Arduino A5. The Si7021 board has four connections, connect Vcc to Arduino 5volts and Gnd to Arduino Gnd. I used a Logic Level converter like this one on eBay here.

Although the Si7021 is more expensive than the DHT11 and DHT22 it is far superior. It is smaller, easier to us and very fast and will certainly be my choice for Humidity sensor in the future.


2 thoughts on “Si7021 High Accuracy Humidity and Temperature Sensor.”

  1. The little sensor board shown in your picture does have its own level shifter so you didn’t need the one you added between the GY-21 and the 5V Arduino. I searched for hours for a schematic or usage info on this version of Si7021 sensor board and found nothing. So I dug into the circuit and figured it out.
    On the back side where it is printed GY-21 are 3 main devices. The 3-pin that looks like a transistor is the 3.3 V regulator. In the center is an 8-pin device marked 103. It is four 10K resistors for pull-ups in the level shifter. The 6-pin device marked 702 is a dual MOSFET that is the active part of the shifter. Looks like the shifter you added is the same basic circuit but with single transistors and R’s.
    So it this one should be fine with 5V Arduino. That seems to be what it is designed for. It may also actually work on a 3.3V Arduino but it wouldn’t be as good as a simpler Si7021 breakout board.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: