Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Multiple i2c sensors comparision using arduino with some consumer devices included in test results. Using SHT85 and GreenDay as "temporary reference devices". 

Multiplexer Lines

Line0x400x440x5c0x770x410x450x760x70
ASHT21SHT30DHT12BME680



BSHT21SHT30DHT12BME680



CHTU21DSHT31DHT12BME280



DHTU21DSHT31-BME280



EHTU21DSHT35-BME280



FSHT20SHT35-BME680



GSHT21SHT31-BME680



HSHT25SHT85--



i2c Scan

Code Block
Port:0  i2c addr 64  i2c addr 68  i2c addr 119
Port:1  i2c addr 64  i2c addr 68  i2c addr 119
Port:2  i2c addr 64  i2c addr 68  i2c addr 118
Port:3  i2c addr 64  i2c addr 68  i2c addr 118
Port:4  i2c addr 64  i2c addr 68  i2c addr 118
Port:5  i2c addr 64  i2c addr 68  i2c addr 92  i2c addr 118
Port:6  i2c addr 64  i2c addr 68  i2c addr 92  i2c addr 118
Port:7  i2c addr 64  i2c addr 68  i2c addr 92

Hardware in use

  1. Mega2560 keyestudio
  2. LCD 3.5 inch Arduino Mega2560
  3. DFRobot i2c multiplexer (or compatible ShangSi MoudleCX TCA9548A i2c multiplexer)
  4. Sensors (DHT11, SHT21, SHT20, SHT25, HTU21D, SHT30, SHT31, SHT35, SHT85, BME280, BME680)

Draft sketch

github code: https://github.com/liutyi/arduino-humidity-sensors-test/tree/master

Libraries


Screen example

Image Added

~24% RH


Device/sensortRH
Green Day22.123.1%
Xiaomi MHO-C20122.524%
Senserion S.G.22.5929.88%
Beurer HM1621.6LOW
TFA Spring22.223%
TFA t/RH2225%
SHT21 (1)22.2033.76%
SHT21 (1)22.3335.37%
HTU21D (1)22.3222.21%
HTU21D (1)22.7221.66%
HTU21D (2)22.5521.47%
SHT2022.6024.80%
SHT21 (2)22.7923.80%
SHT2522.7124.91%
SHT3022.0926.83%
SHT3022.1227.23%
SHT3122.0828.11%
SHT3122.1928.05%
SHT3522.2925.49%
SHT3522.4125.14%
SHT31 (2)22.5428.74%
SHT8522.4824.10%
BME68022.6225.45%
BME68023.0324.73%
BME28023.0421.99%
BME28022.8822.31%
BME28023.2221.44%
BME680 (2)24.3020.18%
BME680 (2)24.4121.03%
DHT1222.0014.10%
DHT1222.0014.10%
DHT1222.0031.80%


~29% RH


Device/sensortRH
Green Day22.129.4%
Xiaomi MHO-C20122.131%
Senserion S.G.22.1435.58%
Beurer HM1621.6LOW
TFA Spring22.228%
TFA t/RH2228%
SHT21 (1)22.1337.56%
SHT21 (1)22.2138.98%
HTU21D (1)22.1028.39%
HTU21D (1)22.3928.08%
HTU21D (2)22.2228.14%
SHT2022.2831.06%
SHT21 (2)22.1730.45%
SHT2522.3331.17%
SHT3022.0232.54%
SHT3022.0933.10%
SHT3121.9934.06%
SHT3121.9934.11%
SHT3522.0431.87%
SHT3522.1431.53%
SHT31 (2)22.0935.21%
SHT8522.0030.05%
BME68022.5531.35%
BME68022.8830.60%
BME28022.9027.56%
BME28022.6727.99%
BME28022.9427.10%
BME680 (2)23.7425.61%
BME680 (2)24.0525.82%
DHT1222.1022.40%
DHT1222.1022.40%
DHT1221.9034.50%


~42% RH


Device/sensortRH
Green Day22.342.4%
Xiaomi MHO-C20122.541%
Senserion S.G.22.6646.24%
Beurer HM1621.830%
TFA Spring22.338%
TFA t/RH2234%
SHT21 (1)22.3946.57%
SHT21 (1)22.4647.14%
HTU21D (1)22.3842.10%
HTU21D (1)22.7541.62%
HTU21D (2)22.4941.64%
SHT2022.5843.45%
SHT21 (2)22.6442.40%
SHT2522.7242.95%
SHT3022.5144.97%
SHT3022.5345.42%
SHT3122.4046.15%
SHT3122.4746.14%
SHT3522.5544.30%
SHT3522.6144.02%
SHT31 (2)22.6347.17%
SHT8522.7441.88%
BME68022.6444.04%
BME68022.9342.72%
BME28023.0840.17%
BME28022.8540.79%
BME28023.1139.61%
BME680 (2)24.3734.78%
BME680 (2)23.8036.54%
DHT1222.3036.50%
DHT1222.3036.50%
DHT1221.9043.00%


Draft Results:

Looks like BME680 (2) module got some minor internal heating that makes t measurement higher and RH measurements lower. Will probably try to place it with sensor at the bottom next time (with updated test setup). DHT12 is (as expected) not good at low humidity. Have no explanation of why GY-213V-SHT21 is that inacurate. Surprized with relatively cheap HTU21 (that is compatible to SHT2x and may be replaced without firmware change) perform so good.

Possible improvements in next test setup:

v2

  • Add more multiplexors to be able to include hdc1080 and Si7021, 
  • Add more SHT85 sensors to see results repitability (for most expensive sensor)
  • Add more columns to the screen

v3

  • Use less wires and more soldering and connectors
  • Power one of  multiplexers by 5v to add DHT22 to test

    .

  • SD data logging and visualisation
  • v4

    • remove libraries (that is suppose to work with single sensor mostly) and create simple init and read functions for all sensor types
    • remove i2c scan every cycle, remember sensors from setup phase (need restart to change sensors but it is fine)
    • add non-i2c sensors like DHT11 and AM2302
    • make some additional screen modes and control buttons

    v5 

  • got some kind of home-made "calibration" tests with resolutions
  • publish final electric scheme, sketch, results