The PMS5003 is a digital particulate matter sensor that uses laser scattering technology to measure the concentration of airborne particles in three size categories: PM1.0, PM2.5, and PM10. It provides calibrated mass concentration data as well as raw particle counts through a UART interface, making it easy to integrate with microcontrollers and single-board computers.
The sensor is capable of delivering accurate, real-time air quality measurements, making it a popular choice for air quality monitors, smart home systems, weather stations, environmental monitoring projects, and research equipment. Its compact size, low power consumption, and reliable performance have made it one of the most widely used particulate matter sensors in embedded and IoT applications.
What is PMS5003?

The PMS5003 is a digital universal particle concentration sensor that can be used to obtain the number of suspended particles in the air — the concentration of particles and output them in the form of a digital interface. It can be inserted into instruments related to the concentration of suspended particles in the air or other environmental improvement equipment to provide correct concentration data in real time.
Its main characteristics include zero false alarm rate, real-time response, a minimum distinguishable particle diameter of 0.3 micrometres, and high anti-interference performance because of its patent six-sided shielding structure. Unlike MQ-series sensors that output a resistance shift requiring calibration and interpretation, the PMS5003 outputs fully processed concentration values in µg/m³ directly — no calibration curves, no reference resistance calculations.
PMS5003 overview
| Parameter | Value |
|---|---|
| Sensor Type | Laser Scattering Particulate Matter Sensor |
| Measured Parameters | PM1.0, PM2.5, PM10 (mass concentration + particle count) |
| Measurement Range | 0.3–1.0µm, 1.0–2.5µm, 2.5–10µm |
| Effective Range (PM2.5) | 0 – 500 µg/m³ |
| Maximum Range (PM2.5) | ≥1000 µg/m³ |
| Resolution | 1 µg/m³ |
| Supply Voltage | 5.0V (4.5V – 5.5V) |
| Active Current | ≤100mA |
| Standby Current | ≤200µA |
| Output Type | Digital (UART Serial) |
| Interface Level | TTL 3.3V |
| Baud Rate | 9600 bps |
| Single Response Time | <1 second |
| Total Response Time | ≤10 seconds |
| Working Temperature | −10°C to +60°C |
| Working Humidity | 0% to 99% |
| Dimensions | 50 × 38 × 21mm |
| Compatible Boards | Arduino Uno, ESP32, Raspberry Pi |
Pinout

The PMS5003 uses an 8-pin connector. PIN7 and PIN8 are not connected and must not be used.
| Pin | Name | Type | Description |
|---|---|---|---|
| 1 | VCC | Power | Positive supply — 5V DC |
| 2 | GND | Power | Ground |
| 3 | SET | Input | Sleep/wake control — TTL 3.3V; HIGH or floating = normal, LOW = sleep |
| 4 | RX | Input | Serial port receive — TTL 3.3V |
| 5 | TX | Output | Serial port transmit — TTL 3.3V |
| 6 | RESET | Input | Module reset — TTL 3.3V; LOW = reset |
| 7, 8 | NC | — | Not connected — do not use |
Important: The DC supply must be 5V because the internal fan is driven by 5V. However, the data pins operate at 3.3V TTL logic level. A level converter must be used if the host MCU operates at 5V logic to avoid damaging the sensor’s RX pin. The SET and RESET pins are pulled up internally — leave them unconnected if not used.
Working principle
Laser scattering principle is used the sensor produces scattering by using a laser to radiate suspended particles in the air, then collects the scattered light at a certain angle, and finally obtains the curve of scattered light change with time. The equivalent particle diameter and number of particles with different diameters per unit volume are calculated by the onboard microprocessor based on Mie scattering theory.
The sensor operates in two output modes:
Active mode (default): In active mode the sensor sends serial data to the host automatically. Active mode is divided into two sub-modes: stable mode and fast mode. If the concentration change is small, the sensor runs at stable mode with a real interval of 2.3 seconds. If the change is large, the sensor switches to fast mode automatically with an interval of 200–800ms — the higher the concentration, the shorter the interval.
Passive mode: The host sends a read command over RX and the sensor responds with one data frame. Useful for low-power applications that only poll periodically.
Wake-up settling time: Stable data should be obtained at least 30 seconds after the sensor wakes up from sleep mode, because of the fan’s performance settling time.
Data frame format
The PMS5003 outputs a 32-byte frame at 9600 baud, with no parity bit and 1 stop bit.
| Bytes | Content |
|---|---|
| 1–2 | Start characters: 0x42, 0x4D (fixed) |
| 3–4 | Frame length (2×13 + 2 = 28) |
| 5–6 | PM1.0 — standard particle (µg/m³) |
| 7–8 | PM2.5 — standard particle (µg/m³) |
| 9–10 | PM10 — standard particle (µg/m³) |
| 11–12 | PM1.0 — under atmospheric environment (µg/m³) |
| 13–14 | PM2.5 — under atmospheric environment (µg/m³) |
| 15–16 | PM10 — under atmospheric environment (µg/m³) |
| 17–18 | Particle count >0.3µm per 0.1L |
| 19–20 | Particle count >0.5µm per 0.1L |
| 21–22 | Particle count >1.0µm per 0.1L |
| 23–24 | Particle count >2.5µm per 0.1L |
| 25–26 | Particle count >5.0µm per 0.1L |
| 27–28 | Particle count >10µm per 0.1L |
| 29–30 | Reserved |
| 31–32 | Checksum (sum of all preceding bytes) |
Standard particle vs atmospheric environment values: The standard particle values use a factory-set CF=1 correction factor and are intended for factory calibration references. The atmospheric environment values are what most air quality applications should use they reflect real-world conditions more accurately.
PMS5003 construction
The PMS5003 is not a bare sensor IC on a breakout module — it is a complete self-contained unit housing all its components within a 50 × 38 × 21mm enclosure.
Laser Diode The light source for particle detection. Emits a collimated beam through the sensing chamber. Particles passing through the beam scatter light in proportion to their size and quantity, which the photodetector captures.
Photodetector Collects the scattered light at a fixed angle from the laser beam. The intensity and duration of each scatter event is digitised and fed to the onboard processor for size classification.
Onboard Microprocessor Applies Mie scattering theory to the photodetector data to calculate both particle count per size bin and mass concentration in µg/m³. Handles all compensation, formatting, and UART communication internally — the host MCU receives finished values, not raw photodetector signals.
Brushless DC Fan Draws ambient air through the sensor at a controlled flow rate, passing it through the laser beam. The standard volume sampled is 0.1 litres per measurement cycle. The fan is the primary reason the sensor requires 5V even though its logic runs at 3.3V.
Six-Sided Metal Shielding A patent structure that provides high anti-interference performance by shielding the laser and photodetector from external light interference and electromagnetic noise both of which can cause false particle detections.
Air Inlet / Outlet Structure The direction of air inlet and outlet is optional in order to adapt to different host device designs. The inlet and outlet openings must not be smaller than those on the sensor housing, and the sensor must be installed at least 20cm above ground level to prevent blockage from settling dust.
Specifications
The detailed specifications are listed below.
| Parameter | Value |
|---|---|
| Supply Voltage | 5.0V DC (4.5V – 5.5V) |
| Active Current | ≤100mA |
| Standby Current | ≤200µA |
| Interface Logic Level | TTL 3.3V (L <0.8V, H >2.7V) |
| Baud Rate | 9600 bps, no parity, 1 stop bit |
| Measurement Range | 0.3 – 10µm particle diameter |
| Counting Efficiency | 50% @ 0.3µm, ≥98% @ ≥0.5µm |
| Effective PM2.5 Range | 0 – 500 µg/m³ |
| Maximum PM2.5 Range | ≥1000 µg/m³ |
| Resolution | 1 µg/m³ |
| Consistency Error (0–100 µg/m³) | ±10 µg/m³ |
| Consistency Error (100–500 µg/m³) | ±10% |
| Standard Volume | 0.1 L per sample |
| Single Response Time | <1 second |
| Total Response Time | ≤10 seconds |
| Stable Mode Interval | 2.3 seconds |
| Fast Mode Interval | 200 – 800ms |
| Wake-up Settling Time | ≥30 seconds |
| Working Temperature | −10°C to +60°C |
| Working Humidity | 0% to 99% RH |
| Storage Temperature | −40°C to +80°C |
| MTTF | ≥3 years |
| Physical Dimensions | 50 × 38 × 21mm |
| Output Format | 32-byte UART frame |
| Output Modes | Active (default) / Passive |
Helpful resources
- Download the datasheet: here
- PMS5003 with Arduino
- PMS5003 with ESP32
- PMS5003 with Raspberry Pi