Overview

The SI1145 is a multi-band optical ambient light, UV index, and proximity sensor manufactured by Silicon Labs. Used in weather station monitors, outdoor solar trackers, and smart wearables, it provides calibrated Solar UV Index readings (011+0\dots 11+) without requiring a costly true-UV filter.

Instead of directly measuring weak UV photons, the SI1145 calculates the UV Index using an internal algorithmic formula based on simultaneous measurements from integrated Visible Light and Infrared (IR) photodiodes. It also supports 3-LED driving channels for multi-axis proximity sensing (0 to 50 cm0\text{ to }50\text{ cm}) over an I2CI^2C bus (0x60).

Quick reference

Operating voltage (VIN)3.3 V to 5.0 V DC (breakout module with 3.3V LDO regulator)
IC supply voltage (VDD)1.71 V to 3.6 V DC (3.3 V nominal)
InterfaceI2CI^2C (up to 400 kHz)
Fixed I2CI^2C address0x60
Measured SpectrumVisible Light, Infrared (850 nm850\text{ nm}), and Algorithmic Solar UV Index
UV Index Range0 to 11+ (calibrated UV index rating)
Proximity Range0 to 50 cm0\text{ to }50\text{ cm} (when paired with external IR LED driver)
Standby Current500 nA500\text{ nA} (0.5 μA0.5\ \mu\text{A})

Pinout

Breakout module 6-pin header:

PinNameTypeDescription
1VINPowerSupply power input (+3.3 V to +5.0 V DC)
2GNDPowerGround reference (0 V)
3SCLDigital InputI2CI^2C Serial Clock
4SDADigital Input / OutputI2CI^2C Serial Data
5INTDigital OutputActive-Low interrupt output pin
6LEDOutputProgrammable IR LED sink driver output

Specifications

ParameterSymbolMinTypMaxUnitConditions
Supply Voltage (Module)VVINV_{VIN}3.33.3 / 5.05.5VPower rail with LDO
Active Supply CurrentICCI_{CC}500800µAActive sampling
Standby CurrentIsdI_{sd}0.52.0µASleep state
UV Index ResolutionResUVRes_{UV}0.01UV IndexCalculated UV index output
Visible Photodiode Peakλvis\lambda_{vis}540nmVisible light peak
IR Photodiode PeakλIR\lambda_{IR}850nmInfrared light peak

UV Index Calculation Math

The SI1145 returns raw 16-bit integers for Visible, IR, and UV Index:

Solar UV Index=Raw 16-Bit UV Register Value100.0\text{Solar UV Index} = \frac{\text{Raw 16-Bit UV Register Value}}{100.0}

(Example: A raw UV register reading of 250 corresponds to a Solar UV Index of 2.5).

Wiring

SI1145 PinArduino / MCUESP32Notes
VIN5V / 3.3V3.3VPower rail
GNDGNDGNDSystem ground
SCLA5GPIO 22I2CI^2C Clock
SDAA4GPIO 21I2CI^2C Data

Example (Adafruit_SI1145 Library)

cpp
#include <Wire.h>
#include "Adafruit_SI1145.h"

Adafruit_SI1145 uv = Adafruit_SI1145();

void setup() {
  Serial.begin(115200);
  Serial.println("Adafruit SI1145 Light & UV Sensor Test");

  if (!uv.begin()) {
    Serial.println("Could not find SI1145 sensor! Check I2C wiring.");
    while (1);
  }

  Serial.println("SI1145 Initialized.");
}

void loop() {
  float visible = uv.readVisible();
  float ir = uv.readIR();
  float uvIndex = uv.readUV() / 100.0;

  Serial.print("Visible: "); Serial.print(visible);
  Serial.print(" | IR: "); Serial.print(ir);
  Serial.print(" | UV Index: "); Serial.println(uvIndex);

  delay(1000);
}

Common mistakes

  • Testing indoors under LED/Fluorescent lights: Indoor artificial lights emit virtually zero UV radiation. The algorithmic UV index calculation will return 0.0. Test outdoors under direct sunlight.
  • Forgetting to divide raw UV integer by 100: The readUV() register returns integer counts multiplied by 100. Always divide by 100.0 to obtain standard UV Index values.

Notes

  • SI1145 vs VEML6070 vs LTR390: SI1145 calculates UV index algorithmically from IR/Vis photodiodes; VEML6070 measures UVA directly; LTR390 measures direct UV and Lux.

Assets & downloads