

The SEN55, manufactured by Sensirion (Part ID: SEN55-SDN-T), is a versatile environmental sensor designed to measure temperature, humidity, and air quality. This all-in-one sensor module integrates multiple sensing capabilities, making it ideal for applications requiring precise environmental monitoring. Its compact design and robust performance make it a popular choice for IoT devices, HVAC systems, air purifiers, and smart home applications.








| Parameter | Value |
|---|---|
| Supply Voltage | 5 V DC (typical) |
| Operating Current | 20 mA (typical) |
| Communication Interface | I²C, UART |
| Temperature Range | -10°C to +60°C |
| Humidity Range | 0% to 100% RH |
| Particulate Matter (PM) | PM1.0, PM2.5, PM4.0, PM10 |
| Gas Sensing | VOC (Volatile Organic Compounds) Index |
| Accuracy (Temperature) | ±0.5°C |
| Accuracy (Humidity) | ±4% RH |
| Dimensions | 41 mm × 41 mm × 12 mm |
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VCC | Power supply input (5 V DC) |
| 2 | GND | Ground |
| 3 | SDA | I²C data line |
| 4 | SCL | I²C clock line |
| 5 | TX | UART transmit line |
| 6 | RX | UART receive line |
#include <Wire.h>
// SEN55 I²C address (default)
#define SEN55_ADDRESS 0x69
void setup() {
Wire.begin(); // Initialize I²C communication
Serial.begin(9600); // Initialize serial communication for debugging
// Initialize the SEN55 sensor
if (!initializeSEN55()) {
Serial.println("Failed to initialize SEN55 sensor!");
while (1); // Halt execution if initialization fails
}
Serial.println("SEN55 sensor initialized successfully.");
}
void loop() {
// Read and display sensor data
float temperature, humidity;
if (readSEN55Data(&temperature, &humidity)) {
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %RH");
} else {
Serial.println("Failed to read data from SEN55.");
}
delay(1000); // Wait 1 second before the next reading
}
bool initializeSEN55() {
Wire.beginTransmission(SEN55_ADDRESS);
// Send initialization command (example, replace with actual command)
Wire.write(0x00);
return (Wire.endTransmission() == 0);
}
bool readSEN55Data(float *temperature, float *humidity) {
Wire.beginTransmission(SEN55_ADDRESS);
// Request data from the sensor (example, replace with actual command)
Wire.write(0x03);
if (Wire.endTransmission() != 0) {
return false; // Transmission failed
}
Wire.requestFrom(SEN55_ADDRESS, 4); // Request 4 bytes of data
if (Wire.available() < 4) {
return false; // Not enough data received
}
// Parse the received data (example, replace with actual parsing logic)
uint16_t tempRaw = (Wire.read() << 8) | Wire.read();
uint16_t humRaw = (Wire.read() << 8) | Wire.read();
*temperature = tempRaw / 100.0; // Convert to °C
*humidity = humRaw / 100.0; // Convert to %RH
return true;
}
No Data from Sensor:
Inaccurate Readings:
I²C Communication Fails:
Q: Can the SEN55 measure CO2 levels?
A: No, the SEN55 does not measure CO2 directly. It provides a VOC index, which can be used as an indicator of air quality.
Q: What is the startup time for the SEN55?
A: The sensor requires a few seconds to stabilize after powering on. It is recommended to wait at least 5 seconds before taking measurements.
Q: Can I use the SEN55 with a 3.3 V microcontroller?
A: The SEN55 requires a 5 V power supply. However, its I²C and UART lines are 3.3 V logic compatible, so it can interface with 3.3 V microcontrollers.