

The PMS5003 Board is a compact and highly accurate air quality sensor designed to measure particulate matter (PM1.0, PM2.5, and PM10) concentrations in the air. It employs advanced laser scattering technology to detect and quantify airborne particles, making it an essential tool for environmental monitoring, air purifiers, HVAC systems, and indoor air quality assessments.
This sensor is widely used in applications such as:








The PMS5003 Board is designed for precision and reliability. Below are its key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 4.5V to 5.5V |
| Operating Current | ≤ 100mA |
| Particle Size Detection | 0.3µm to 10µm |
| Measurement Range | 0 to 1,000 µg/m³ |
| Output Interface | UART (3.3V logic level) |
| Response Time | ≤ 1 second |
| Operating Temperature | -10°C to 60°C |
| Operating Humidity | 0% to 99% RH (non-condensing) |
| Dimensions | 50mm x 38mm x 21mm |
The PMS5003 Board has a 7-pin connector for interfacing. Below is the pinout description:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VCC | Power supply input (4.5V to 5.5V) |
| 2 | GND | Ground |
| 3 | SET | Standby control pin (active low) |
| 4 | RX | UART receive pin (3.3V logic level) |
| 5 | TX | UART transmit pin (3.3V logic level) |
| 6 | RESET | Reset pin (active low) |
| 7 | NC | Not connected |
VCC pin to a 5V power source and the GND pin to ground.TX pin of the PMS5003 to the RX pin of your microcontroller (e.g., Arduino UNO) and the RX pin of the PMS5003 to the TX pin of the microcontroller.SET pin can be used to put the sensor into standby mode by pulling it low. Leave it unconnected or pull it high for normal operation.RESET pin can be used to reset the sensor by pulling it low momentarily.Below is an example of how to interface the PMS5003 with an Arduino UNO to read PM2.5 data:
#include <SoftwareSerial.h>
// Define the PMS5003 TX and RX pins connected to Arduino
SoftwareSerial pmsSerial(10, 11); // RX, TX
// Buffer to store incoming data from the PMS5003
uint8_t pmsData[32];
void setup() {
Serial.begin(9600); // Initialize serial monitor
pmsSerial.begin(9600); // Initialize PMS5003 UART communication
Serial.println("PMS5003 Sensor Initialized");
}
void loop() {
if (pmsSerial.available() >= 32) { // Check if 32 bytes of data are available
for (int i = 0; i < 32; i++) {
pmsData[i] = pmsSerial.read(); // Read data into buffer
}
// Verify data header
if (pmsData[0] == 0x42 && pmsData[1] == 0x4D) {
// Extract PM2.5 concentration (bytes 12 and 13)
uint16_t pm25 = (pmsData[12] << 8) | pmsData[13];
Serial.print("PM2.5 Concentration: ");
Serial.print(pm25);
Serial.println(" µg/m³");
}
}
}
TX pin to Arduino pin 10 and RX pin to Arduino pin 11.No Data Output:
VCC and GND connections).Inaccurate Readings:
Sensor Not Responding:
SET pin is pulled low (standby mode). Pull it high or leave it unconnected for normal operation.RESET pin.Q: Can the PMS5003 detect gases like CO2 or VOCs?
A: No, the PMS5003 is designed to measure particulate matter (PM1.0, PM2.5, and PM10) and cannot detect gases.
Q: How often should the sensor be calibrated?
A: The PMS5003 is factory-calibrated and does not require user calibration. However, periodic cleaning of the air inlet and outlet may help maintain accuracy.
Q: Can I use the PMS5003 with a 5V microcontroller?
A: Yes, but you must use a level shifter for the UART communication pins (TX and RX) to avoid damaging the sensor.
Q: What is the lifespan of the PMS5003?
A: The sensor has an estimated lifespan of 3 years under normal operating conditions.