Project Goal

To create Arduino based device to compare data for as many t/RH sensors as possible (without manual sensor switch), optionally with data logging for further analysis.


Use of the same sensor on i2c usually limited by 1 or 2 (using ALT i2c address) of the same type. And SHT20, SHT21, SHT25, HTU21 is actually the same type, so to be able to compare measurement there is a need to use i2c multiplexer. In the case of 8 line multiplexer, there is a possibility to have 8-16 sensor at the same time to be connected with Arduino.

Sensor i2c addresses and voltages

to divide between multiplexers

Sensoraddressalt addressspecVmin-VmaxVtyp1.8v3.3v5v**
AOSONG AHT100x38 (62)0x39 (63)*pdf1.8-3.6v3.3v(question)(tick)(minus)
AOSONG AHT150x38 (62)
Senserion SHT2x0x40 (64)0x41 (65)20,21,252.1-3.6v3v(minus)(tick)(minus)
Senserion SHT3x0x44 (68)0x45 (69)SHT3x2.15-5.5v3.3v(minus)(tick)(tick)
Senserion SHT8x0x44 (68)
Meas(1) HTU21D0x40 (64)
Silicon Labs Si70210x40 (64)
Bosch(2) BMEx800x76 (118)0x77 (119)6801.71v-3.6v1.8v(tick)(tick)(minus)
Bosch(2) BME2800x76 (118)0x77 (119)2801.71v-3.6v1.8v(tick)(tick)(minus)
Ti(3) HDC10800x40 (64)
Ti(3) HDC20800x40 (64)0x41 (65)pdf1.62v-3.6v-(tick)(tick)(minus)
AOSONG DHT120x5C (92)
AOSONG AM23200x5C (92)

1 TE Connectivity Measurement Specialties

2Bosch Sensortec

3 Texas Instruments

** some sensors board have voltage regulators and level converter (and may support voltages above mentioned in sensor datasheet)

Draft schematic



  • Single multiplexer breadboard draft project with 26 Sensors


  • Use less wires and more soldering and connectors
  • SD data logging (with filenames auto increment)
  • Add more columns to the screen


  • Use 3+ multiplexers to include twice more sensors (incl. hdc1080 and Si7021, SHT85)
  • Add more SHT85 sensors to see results repeatability (for the most expensive sensor)
  • remove some libraries (multiplexor, sensor reading) not compatible with multiple mux projects
  • substitute i2c scan every cycle with pre-defined array processing
  • (Hardware) i2c 3.3v/5v level converter
  • (Hardware) 2500mAh battery with related circuits
  • (Hardware) New case, 
  • (Hardware) New 2m wire between the main unit and the board
  • (Hardware) New plastic shields for connectors

v4 - failed

  • AHT10 sensors (both wiring and code needed) - fail
  • Change board wiring for new Adafruit sensors
  • replace DHT12 with additional BME280
  • Change board sensors (HDC1080 to HTU21d)


  • New board for both mux and sensors with fewer wires and connectors 
  • Wire new additional 5v sensor board with mux #4
  • AM23020 5v sensors and code
  • HDC1080 moved to 5v additional board
  • Separate AHT10 to additional multiplexor (mux #5)

v6 - unstable

  • AHT15 sensors (AHT10 code reuse)
  • HDC2080 sensors and code
  • connect and enable mux #6

v7 - unstable

  • hardware RTC clock
  • SD files with correct timestamps

v8 - unstable

  • Updated Power circuit
  • i2c voltage converter board and new wiring
  • SHTC1 and SHTC3 sensors added
  • mux #1 address changed (to solve i2c address conflict)
  • 2x BME680 removed (to solve i2c address conflict)
  • 1x BME280 removed (to solve i2c address conflict)
  • DHT12 sensors added instead of three BMEx80 (8a)
  • ChipCap Sensor added instead of DHT12 (8b)

v9 - current

v10 - abandoned

  • code optimization
  • trend visualization
  • hardware controls
  • menu options (like format SD card)
  • got some kind of home-made "calibration" tests with resolutions


  • New small density sensor boar
  • AHT10, AHT20, AHT21, AHT25 sensors only
  • exclude voltage conversion (that is why AHT15 is missing)
  • a single sensor on one i2c multiplexer lane
  • Single read for temperature and humidity data for AHT
  • simplified code to support only AHT type of sensors