The Si7021 is a low-cost, easy-to-use, highly accurate, digital humidity and temperature sensor. This sensor is ideal for environmental sensing and data logging and perfect for build a weather stations or humidor control system. All you need are two lines for I2C communication, and you’ll have relative humidity readings and very accurate temperature readings as a bonus!
There are only four pins that need to be hooked up in order to start using this sensor in a project. One for VCC, one for GND, and two data lines for I2C communication. This breakout board has built-in 4.7KΩ pullup resistors for I2C communications. If you’re hooking up multiple I2C devices on the same bus, you may want to disable these resistors.
Based on 11 ratings:
2 of 2 found this helpful:
Very easy setup, controlled by a Raspberry Pi 2 with CE’s Python script for this module: https://github.com/ControlEverythingCommunity/SI7021/blob/master/Python/SI7021.py
Highly recommended for temp and humidity in one package.
2 of 2 found this helpful:
This hooked up to the weather station I built easily. Just pulled in the libraries, added a few calls and cal factors and my station now has humidity and dew point stats. Weather Underground quality checkers gave my homemade station the gold seal once I added this sensor. Easy to use and reports accurately.
I spent 20 minutes (figuratively) pulling out my hair trying to get this thing connected to my Arduino. Then I realized: I had not physically connected all four jumper wires!
In all seriousness, this sensor works very well and I have had no real problems with it. It’s connected to my ESP8266 Thing Dev Board for logging data to ThingSpeak.
Got it working quickly, integrated it into a wireless outdoor reporting station. Sits next to a DHT-11 that quit measuring humidity in a matter of weeks after deployment (the second DHT-11 to fail quickly – a DHT-22 (less precise) lasted a year or so in the same place). I’m hoping that the PTFE cover over the Si7021 helps it survive a long time in our tough environment - it has to survive pollen and 100% humidity and sprinkler mist here in Florida.
The only negative was mounting. I soldered header pins with the short side on the sensor side, then trimmed them further, drilled a small hole in the plastic case for the sensor to protrude into (recessed just below the outer surface), and mounted it with the sensor into the hole and just put a big piece of tape over the board to hold it in position. The case is mounted with the sensor facing down to protect it from dust and droplets. I might hot-glue some sort of screen over it to keep bugs out, but it’s ok for now. We’ll see how long it lasts.
I have several of these boards. They just work, first time every time. I2C communication is simple and reliable.
Worked almost out of the box using an Si7021 Arduino library compiled for the Z-Wave.me Z-Uno. There was a compile error (Z-uno compiler bug, I think) that required a workaround. Much easier that I expected.
It took some doing to verify the accuracy of the two sensors I purchased. Turns out it’s not easy to accurately measure RH. Eventually I was able to use a table salt mixture in a small plastic container and both sensors read within 2 percentage points of the 75.5% theoretical value. I also built a desktop psychrometer that calculates RH and DP from wet bulb temp, dry bulb temp and atmospheric pressure. It took some work to get the wet bulb to cool properly but again both sensors were within tolerance at 25% RH. My next project is building a cooled mirror DP sensor using a Peltier device to get one more independent calibration check but I’m pretty sure it will confirm what I’ve seen so far.
I have used a TON of these sensors and I’ve never had a problem with them. Also, the price is exceedingly reasonable. I actually looked into building my own recently, but for the tiny margin of savings I would get, it’s not nearly worth the investment.
Liking this very much. And at this price, giving it a try is risking little.
A few “pay attentions” to notice… not “problems”, unless you fail to notice..
a) 3v3 only… but I’m told it plays nicely via a level shifter if you want to use a 5v controller
b) Do not remove “the white thing” covering the sensor… little (3mm) black square. Notes about this ARE present in the Sparkfun hookup guide… if you read it!
c) You can only have one of these on a given I2C string. This is due to the address being hardcoded (0x40) into the chip. Not Sparkfun’s fault!
Don’t, by the way, be scared by the I2C. I know little about it, but had no trouble following the Sparkfun hookup guide.
It is early days… I haven’t soak tested it yet… but I’ve not noticed a bad read while working up the following.
The library provided by Sparkfun… and there are several out there, use the SPARKFUN library if you want their (and my) examples to work exactly as presented…. is excellent. Easy to use, no mysteries or anything arcane. Have a look at the sensor’s datasheet if you think you want to write your own code for what the library does… so easily… for you. A lot of work went into that. Buy a sensor, try it, if only to say “thank you”, and encourage them to do more such work for us.
I’m using mine with an ESP8266… wonderful little things, themselves, by the way. (ESP8266 programs with the Arduino IDE.
I’ve created a little webserver. When I access it, I get readings from the sensor in a human readable form “on the surface”, and in a computer friendly form “inside” the page.
Make you laugh? I did a bunch of work, meant to pave the way for this review… then realized I was working with the wrong sensor! But the sensor specific stuff is trivial. I will eventually produce a Si7041- specific version of the essay. The $16 webserver to provide sensor readings" essay is at…
… and you can see the ESP8266 webserver in action with…
(That one has a few rough edges, and lacks the embedded “computer friendly” version of the readings. I have a better one up and running… but haven’t time just now to fix the NAT settings for it.)
But that’s just the beginning…
Once that’s in place, you can create a program to read the “sensor readings server” automatically from time to time, log the data, present it on a graph. (Proof of concept program running as I write this.)
And when THAT’s done, it can save the graph as a jpg from time to time, and another webserver can serve it up… much as…
… serves some of what you see there.
So many projects possible with the stuff from Sparkfun. (And so little time)
(I like this little sensor so much that I re-wrote the first 3/4s of this again after losing it to a silly mistake. Sigh.)
Works well with my arduino uno, but I can’t get it to work with my raspberry pi. People on the chat rooms say this is because the raspberry can’t handle “clock stretching”, which this chip apparently does to the scl. I’ve tried compiling a c program I found, but not being a c programmer, there are errors it is hanging up on I can’t fix. I’ve ordered the nRN52840 express. This processor is 3.5 volt and will use the arduino IDE or circuitpython, so I hope I can meet my needs.