How to set the address
There is no address pin: the address is set at the factory, so it is always 0x69.
The SEL pin must be tied to GND for I²C.
Devices that use the same addresses
Two devices on the same bus can’t answer on the same address. These modules from our list also use 0x69:
| Device | What it is | Shared address |
|---|---|---|
| BMI270 | 6-axis IMU | 0x69 |
| MPU-6050 | 6-axis accelerometer + gyroscope | 0x69 |
| MPU-6886 | 6-axis IMU | 0x69 |
| MPU-9250 | 9-axis IMU (accel + gyro + AK8963 magnetometer) | 0x69 |
| PCA9685 | 16-channel 12-bit PWM / servo driver | 0x69 |
If two of them end up on the same address, move one with its address pin, put one behind a TCA9548A multiplexer (0x70–0x77), or use a second I²C bus: the ESP32, ESP32-S3 and RP2040 have two I²C controllers (the ESP32-C3 has one).
Check your whole bus →Add the SEN50 / SEN54 / SEN55 and your other modules: the checker finds conflicts, suggests free addresses and sizes the pull-ups.
7-bit and 8-bit address
I²C addresses are 7 bits long. Some datasheets and libraries write them as 8-bit numbers, with the read/write bit added on the right: that is why the same chip can appear as 0x69 or 0xD2. Arduino’s Wire library and ESPHome use the 7-bit form.
| 7-bit | Binary | 8-bit write | 8-bit read |
|---|---|---|---|
| 0x69 | 1101001 | 0xD2 | 0xD3 |
Check that it answers
Upload this sketch with the SEN50 / SEN54 / SEN55 wired to SDA and SCL: it tries every address the chip can use and prints the one that answers. On an ESP32 the default pins are GPIO21 (SDA) and GPIO22 (SCL); on an Arduino Uno, A4 and A5.
#include <Wire.h>
const byte ADDRS[] = {0x69};
void setup() {
Serial.begin(115200);
Wire.begin();
for (byte a : ADDRS) {
Wire.beginTransmission(a);
if (Wire.endTransmission() == 0) {
Serial.print("SEN50 / SEN54 / SEN55 answers at 0x");
if (a < 0x10) Serial.print('0');
Serial.println(a, HEX);
return;
}
}
Serial.println("No answer: check the wiring");
}
void loop() {}
In ESPHome the bus is scanned at boot (scan: true is the default): the log lists every address that answers.
i2c:
sda: GPIO21
scl: GPIO22
scan: true
Pull-up resistors
SDA and SCL need pull-up resistors to the supply. Many breakout boards already carry them, often 4.7 kΩ or 10 kΩ, and with several boards on the bus they add up in parallel. The I²C checker works out the allowed range for your bus voltage and speed.
Frequently asked questions
What is the I2C address of the SEN50 / SEN54 / SEN55?
0x69. It is fixed: there is no address pin.
Can I use more than one SEN50 / SEN54 / SEN55 on the same bus?
Not directly: the address is fixed, so two would clash. Put each one on a different channel of a TCA9548A multiplexer, or use a second I²C bus.
Why doesn’t the SEN50 / SEN54 / SEN55 show up in an I2C scan?
Check, in this order: SDA and SCL not swapped; ground shared between the boards; pull-up resistors on SDA and SCL; the module powered at the voltage it is made for; and that your code uses the 7-bit address (0x69), not the 8-bit one (0xD2).
Similar devices
AHT20 BME280 BME680 BME688 BMP180 BMP280 BMP388 CCS811 ENS160 HDC1080 HTU21D LM75B LPS22HB MCP9808 MS5611-01BA SCD30 SCD40 / SCD41 SGP30 SGP40 SGP41 SHT30 / SHT31 / SHT35 SHT40 / SHT41 / SHT43 / SHT45 (SHT4x) SHTC3 Si7021 TMP102 TMP117
Addresses checked against the SEN50 / SEN54 / SEN55 datasheet.