Overview

The HM3301 (Seeed Studio Grove Laser PM2.5 Sensor) is an optical particulate matter (PM) sensor engineered for real-time air quality monitoring. Housed in a compact metallic shielding case with a 4-pin Grove I2CI^2C connector, it integrates a semiconductor laser diode, an internal miniature air fan, light scattering collection optics, and a photo-detector.

Operating on the principle of light scattering, the sensor continuously draws ambient air across the laser beam. As airborne particles (0.3 μm0.3\ \mu\text{m} to 10.0 μm10.0\ \mu\text{m}) pass through the beam, scattered light signals are processed by internal algorithms to compute real-time mass concentrations of PM1.0, PM2.5, and PM10 (in μg/m3\mu\text{g/m}^3) over an I2CI^2C bus (0x40).

Quick reference

Operating voltage (VCC)3.3 V to 5.5 V DC (5.0 V nominal)
InterfaceI2CI^2C (up to 100 kHz) over Grove connector
Fixed I2CI^2C address0x40
Detectable particle sizes0.3 μm,0.5 μm,1.0 μm,2.5 μm,5.0 μm,10.0 μm0.3\ \mu\text{m}, 0.5\ \mu\text{m}, 1.0\ \mu\text{m}, 2.5\ \mu\text{m}, 5.0\ \mu\text{m}, 10.0\ \mu\text{m}
Concentration range1 μg/m31\ \mu\text{g/m}^3 to 1000 μg/m31000\ \mu\text{g/m}^3 (PM2.5 / PM10)
Warm-up time30 seconds after power-on
Sample data output29-byte binary telemetry frame (PM1.0, PM2.5, PM10 standard & atmospheric)
Operating current120 mA120\text{ mA} active (fan running) / 2 mA2\text{ mA} standby

Pinout (Grove 4-Pin Connector Header)

PinWire ColorNameTypeDescription
1YellowSCLDigital InputI2CI^2C Serial Clock
2WhiteSDADigital Input / OutputI2CI^2C Serial Data
3RedVCCPowerSupply power (+3.3 V to +5.5 V DC)
4BlackGNDPowerGround reference (0 V)

Specifications

ParameterSymbolMinTypMaxUnitConditions
Supply VoltageVCCV_{CC}3.35.05.5VDC power input
Active Current (Fan On)IactiveI_{active}120150mALaser diode & fan running
Standby CurrentIsbI_{sb}2.0mALow-power sleep mode
PM2.5 Mass AccuracyAccPM2.5Acc_{PM2.5}-10%±5%\pm 5\%+10%In 0 to 100 µg/m³ range
Counting EfficiencyEffcountEff_{count}50% at 0.3μm0.3\mu\text{m}98% at 0.5μm\ge 0.5\mu\text{m}Particle count efficiency
Data Update Frequencyfupdatef_{update}1.0Hz1 frame per second
Operating TemperatureToprT_{opr}-1060°CNon-condensing humidity

I2CI^2C Telemetry Frame Structure

When reading 29 bytes from I2CI^2C address 0x40, the HM3301 returns binary data formatted as 16-bit big-endian integers:

  • Bytes 0–1: Sensor Sensor Head / Checksum ID.
  • Bytes 6–7: PM1.0 Standard concentration (μg/m3\mu\text{g/m}^3).
  • Bytes 8–9: PM2.5 Standard concentration (μg/m3\mu\text{g/m}^3).
  • Bytes 10–11: PM10 Standard concentration (μg/m3\mu\text{g/m}^3).
  • Bytes 12–13: PM1.0 Atmospheric concentration (μg/m3\mu\text{g/m}^3).
  • Bytes 14–15: PM2.5 Atmospheric concentration (μg/m3\mu\text{g/m}^3).
  • Bytes 16–17: PM10 Atmospheric concentration (μg/m3\mu\text{g/m}^3).
  • Byte 28: Checksum byte (8-bit sum of bytes 0 through 27).

Wiring

HM3301 PinArduino / MCUESP32Notes
Red (VCC)5V / 3.3V5VPowers internal fan & laser
Black (GND)GNDGNDSystem ground
Yellow (SCL)A5GPIO 22I2CI^2C Clock
White (SDA)A4GPIO 21I2CI^2C Data

Example (Seeed_PM2_5_sensor_HM3301 Library)

cpp
#include <Wire.h>
#include <Seeed_HM3301.h>

HM3301 sensor;
uint8_t buf[30];

void setup() {
  Serial.begin(115200);
  Wire.begin();

  Serial.println("HM3301 Laser PM2.5 Sensor Test");

  if (sensor.init()) {
    Serial.println("HM3301 initialization failed! Check I2C wiring.");
    while (1);
  }
}

void loop() {
  if (sensor.read_sensor_value(buf, 29)) {
    Serial.println("Error reading HM3301 data");
  } else {
    // Parse 16-bit big-endian PM values from buffer
    uint16_t pm1_0 = (uint16_t)buf[12] << 8 | buf[13];
    uint16_t pm2_5 = (uint16_t)buf[14] << 8 | buf[15];
    uint16_t pm10  = (uint16_t)buf[16] << 8 | buf[17];

    Serial.print("PM1.0: "); Serial.print(pm1_0); Serial.print(" µg/m³");
    Serial.print(" | PM2.5: "); Serial.print(pm2_5); Serial.print(" µg/m³");
    Serial.print(" | PM10: "); Serial.print(pm10); Serial.println(" µg/m³");
  }

  delay(2000);
}

Common mistakes

  • Blocking airflow intakes: The metal casing has specific air inlet and outlet vents. Blocking or enclosing the air vents in a sealed box prevents ambient air flow, leading to zero particle readings.
  • Reading before 30-second warm-up: The internal air fan requires 30 seconds to establish stable laminar airflow over the laser beam.

Notes

  • HM3301 vs PMS5003 vs SDS011: HM3301 uses I2CI^2C (0x40) with a Grove connector; PMS5003 and SDS011 use UART serial communication.

Assets & downloads