Aziz Bench

Dirección I²C del SEN50 / SEN54 / SEN55

El SEN50 / SEN54 / SEN55 (módulo de partículas en suspensión, VOC/NOx, temperatura y humedad) tiene una dirección I²C fija, 0x69: ningún pin la cambia.

Dirección I²C (7 bits)
0x69
dirección fija
Escritura / lectura (8 bits)
0xD2 / 0xD3
Binario
1101001
Comparte dirección con
5 dispositivos
Dónde está en el bus sus direcciones reservadas
0123456789ABCDEF
00000102030405060708090A0B0C0D0E0F
10101112131415161718191A1B1C1D1E1F
20202122232425262728292A2B2C2D2E2F
30303132333435363738393A3B3C3D3E3F
40404142434445464748494A4B4C4D4E4F
50505152535455565758595A5B5C5D5E5F
60606162636465666768696A6B6C6D6E6F
70707172737475767778797A7B7C7D7E7F

Cómo fijar la dirección

No tiene pin de dirección: la dirección viene fijada de fábrica, así que siempre es 0x69.

Para I²C el pin SEL debe ir a GND.

Dispositivos que usan las mismas direcciones

Dos dispositivos del mismo bus no pueden responder en la misma dirección. Estos módulos de nuestra lista también usan 0x69:

DispositivoQué esDirección compartida
BMI270IMU de 6 ejes0x69
MPU-6050acelerómetro + giroscopio de 6 ejes0x69
MPU-6886IMU de 6 ejes0x69
MPU-9250IMU de 9 ejes (acelerómetro, giroscopio, magnetómetro AK8963)0x69
PCA9685controlador PWM / servos de 16 canales, 12 bits0x69

Si dos acaban en la misma dirección, mueve uno con su pin de dirección, pon uno detrás de un multiplexor TCA9548A (0x70–0x77) o usa un segundo bus I²C: el ESP32, el ESP32-S3 y el RP2040 tienen dos controladores I²C (el ESP32-C3 tiene uno).

Comprobar todo el bus →Añade el SEN50 / SEN54 / SEN55 y el resto de tus módulos: la herramienta encuentra los conflictos, propone direcciones libres y calcula las pull-ups.

Dirección de 7 y de 8 bits

Las direcciones I²C tienen 7 bits. Algunas hojas de datos y bibliotecas las escriben como números de 8 bits, con el bit de lectura/escritura añadido a la derecha: por eso el mismo chip puede aparecer como 0x69 o como 0xD2. La biblioteca Wire de Arduino y ESPHome usan la forma de 7 bits.

7 bitsBinarioEscritura 8 bitsLectura 8 bits
0x6911010010xD20xD3

Comprueba que responde

Sube este sketch con el SEN50 / SEN54 / SEN55 conectado a SDA y SCL: prueba todas las direcciones que puede usar el chip y muestra en el monitor serie la que responde. En el ESP32 los pines por defecto son GPIO21 (SDA) y GPIO22 (SCL); en un Arduino Uno, A4 y 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 responde en 0x");
      if (a < 0x10) Serial.print('0');
      Serial.println(a, HEX);
      return;
    }
  }
  Serial.println("Sin respuesta: revisa el cableado");
}

void loop() {}

En ESPHome el bus se escanea al arrancar (scan: true es el valor por defecto): el log muestra todas las direcciones que responden.

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true

Resistencias de pull-up

SDA y SCL necesitan resistencias de pull-up a la alimentación. Muchos módulos ya las llevan, a menudo de 4,7 kΩ o 10 kΩ, y con varios módulos en el bus se suman en paralelo. La herramienta de direcciones I²C calcula el rango admitido para la tensión y la velocidad de tu bus.

Preguntas frecuentes

¿Cuál es la dirección I2C del SEN50 / SEN54 / SEN55?

0x69. Es fija: no tiene pin de dirección.

¿Puedo usar más de un SEN50 / SEN54 / SEN55 en el mismo bus?

No directamente: la dirección es fija, así que chocarían. Pon cada uno en un canal distinto de un multiplexor TCA9548A o usa un segundo bus I²C.

¿Por qué el SEN50 / SEN54 / SEN55 no aparece al escanear el bus I2C?

Revisa, por este orden: que SDA y SCL no estén intercambiados; que las placas compartan masa; que haya resistencias de pull-up en SDA y SCL; que el módulo esté alimentado a la tensión que le corresponde; y que tu código use la dirección de 7 bits (0x69), no la de 8 bits (0xD2).

Dispositivos similares

Direcciones comprobadas en la hoja de datos del SEN50 / SEN54 / SEN55.