KAmod Si7021
From Kamamilabs.com - Wiki

Description
KAmod Si7021 - Si7021 Temperature and Humidity Sensor Module
Module with an affordable and easy-to-use Si7021 temperature and humidity sensor from Sillicon Labs. The sensor communicates via I2C and can measure temperature in the range of -40 to 125°C and relative humidity in the range of 0 to 100% RH. The board is equipped with I2C Qwire connectors (compatible with Qwiic/STEMMA QT) and a single-row connector with a 2.54 mm pitch. The board includes an LED indicating the presence of power and 4.7 kΩ pull-up resistors for the I2C interface lines, which can be easily disconnected if necessary.

Basic Parameters
- Based on the Si7021 chip from Sillicon Labs
- Humidity measurement range: 0-80% RH
- Humidity measurement accuracy: ±3% (in the range of 0-80% RH)
- Humidity measurement resolution: ±0.025% RH
- Temperature measurement range: -40...125°C
- Temperature measurement accuracy: ±0.4°C (in the range of -10...+85°C)
- Temperature measurement resolution: ±0.01°C
- Communication via I2C interface (chip address: 0x40)
- I2C 'Qwire connectors, JST SH 4-pin 1 mm (compatible with Qwiic / STEMMA QT)
- Power supply voltage: 3.3 V
- Dimensions: 25 x 15 x 4.7 mm
Standard Equipment
| Code | Description |
|---|---|
| KAmod Si7021 |
|

Schematic

Signal Layout on the Board
The KAmod Si7021 module features two 4-pin I2C Qwire connectors (JST SH 1 mm) compliant with the Qwiic / STEMMA QT standard, allowing for quick connection and expansion of I2C modules without the need for soldering. Additionally, the power and I2C lines are connected to a single-row J1 connector with a 2.54 mm pitch. The signal layout is described on the PCB.

Power Supply
The KAmod Si7021 module should be powered by a DC voltage of 3.3 V (1.9...3.6 V).
The board is powered via the Qwire connector (compatible with Qwiic / STEMMA QT) or a pin header on the +3V3 and GND pins. The presence of power is indicated by the LED marked PWR illuminated.

Configuration Jumpers
The KAmod Si7021 module is equipped with an SMD jumper to disconnect the "PWR LED" (JP1) and "I2C PULLUPS" jumpers (JP2, JP3) to independently disconnect the pull-up resistors (to the positive power supply terminal) from the I2C bus lines.
The jumpers are located on the bottom of the board and are factory-shorted (copper trace between the pads). To disconnect the jumpers, cut the board surface with a sharp tool – as indicated by the red lines in the drawing below. Reconnecting the jumpers is possible by applying a drop of solder, which will connect both cut pads of the jumper.

Dimensions
The KAmod Si7021 board dimensions are 25x15 mm. There are two mounting holes on the board, each with a diameter of 3.2 mm.

Test Program
The test program was written in the Arduino environment for the KAmodESP32 POW RS485 board.
//ino board: ESP32-WROOM-DA Module
//Hardware Connections:
// KAmod Si7021 ------------- KAmodESP32 POW RS485
// GND ---------------------------- GND
// 3V3 ---------------------------- 3.3V
// SDA ---------------------------- SDA/IO-33
// SCL ---------------------------- SCL/IO-32
#include <Wire.h>
#include <SPI.h>
#include "Adafruit_Si7021.h"
bool enableHeater = false;
uint8_t loopCnt = 0;
Adafruit_Si7021 sensor = Adafruit_Si7021();
void setup() {
Serial.begin(115200);
// wait for serial port to open
while (!Serial) {
delay(10);
}
Serial.println("Si7021 test!");
if (!sensor.begin()) {
Serial.println("Did not find Si7021 sensor!");
while (true)
;
}
Serial.print("Found model ");
switch(sensor.getModel()) {
case SI_Engineering_Samples:
Serial.print("SI engineering samples"); break;
case SI_7013:
Serial.print("Si7013"); break;
case SI_7020:
Serial.print("Si7020"); break;
case SI_7021:
Serial.print("Si7021"); break;
case SI_UNKNOWN:
default:
Serial.print("Unknown");
}
Serial.print(" Rev(");
Serial.print(sensor.getRevision());
Serial.print(")");
Serial.print(" Serial #"); Serial.print(sensor.sernum_a, HEX); Serial.println(sensor.sernum_b, HEX);
}
void loop() {
Serial.print("Humidity: ");
Serial.print(sensor.readHumidity(), 2);
Serial.print("\tTemperature: ");
Serial.println(sensor.readTemperature(), 2);
delay(1000);
// Toggle heater enabled state every 30 seconds
// An ~1.8 degC temperature increase can be noted when heater is enabled
if (++loopCnt == 30) {
enableHeater = !enableHeater;
sensor.heater(enableHeater);
Serial.print("Heater Enabled State: ");
if (sensor.isHeaterEnabled())
Serial.println("ENABLED");
else
Serial.println("DISABLED");
loopCnt = 0;
}
}