

The PMS7003 is a laser-based particulate matter sensor designed to measure the concentration of airborne particles, including PM1.0, PM2.5, and PM10. It uses laser scattering technology to provide highly accurate and real-time data on air quality. The sensor is compact, reliable, and widely used in applications such as air purifiers, HVAC systems, environmental monitoring, and IoT-based air quality monitoring systems.








The PMS7003 offers precise measurements and is equipped with a UART interface for easy integration into various systems. Below are the key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 4.5V - 5.5V |
| Operating Current | ≤ 100mA |
| Standby Current | ≤ 200µA |
| Particle Size Detection | 0.3µm - 10µm |
| Measurement Range | 0 - 1,000 µg/m³ |
| Response Time | ≤ 1 second |
| Data Output | UART (9600 bps, 8N1) |
| Operating Temperature | -10°C to +60°C |
| Operating Humidity | 0% - 99% RH (non-condensing) |
| Dimensions | 50mm x 38mm x 21mm |
The PMS7003 has a 7-pin connector for power and data communication. Below is the pinout:
| Pin Number | Name | Description |
|---|---|---|
| 1 | VCC | Power supply (4.5V - 5.5V) |
| 2 | GND | Ground |
| 3 | SET | Sleep mode control (active low) |
| 4 | RX | UART Receive (connect to MCU TX) |
| 5 | TX | UART Transmit (connect to MCU RX) |
| 6 | RESET | Reset pin (active low) |
| 7 | NC | Not connected |
To use the PMS7003 in a circuit, follow these steps:
Below is an example of how to interface the PMS7003 with an Arduino UNO:
#include <SoftwareSerial.h>
// Define the RX and TX pins for SoftwareSerial
SoftwareSerial pms7003Serial(10, 11); // RX = Pin 10, TX = Pin 11
// Buffer to store incoming data from the PMS7003
uint8_t pmsData[32];
void setup() {
Serial.begin(9600); // Initialize Serial Monitor
pms7003Serial.begin(9600); // Initialize PMS7003 UART communication
Serial.println("PMS7003 Sensor Initialized");
}
void loop() {
if (pms7003Serial.available() >= 32) {
// Read 32 bytes of data from the sensor
for (int i = 0; i < 32; i++) {
pmsData[i] = pms7003Serial.read();
}
// Validate the data frame
if (pmsData[0] == 0x42 && pmsData[1] == 0x4D) {
// Extract PM2.5 concentration (bytes 12 and 13)
uint16_t pm25 = (pmsData[12] << 8) | pmsData[13];
// Extract PM10 concentration (bytes 14 and 15)
uint16_t pm10 = (pmsData[14] << 8) | pmsData[15];
// Print the results to the Serial Monitor
Serial.print("PM2.5: ");
Serial.print(pm25);
Serial.print(" µg/m³, PM10: ");
Serial.print(pm10);
Serial.println(" µg/m³");
}
}
delay(1000); // Wait 1 second before reading again
}
SoftwareSerial library is used to create a secondary UART interface for the PMS7003.0x42 and 0x4D).No Data Output:
Inaccurate Readings:
Sensor Not Responding:
Q: Can the PMS7003 detect particles smaller than 0.3µm?
A: No, the PMS7003 is designed to detect particles in the range of 0.3µm to 10µm.
Q: How often should the sensor be calibrated?
A: The PMS7003 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 PMS7003 outdoors?
A: The sensor is not waterproof or dustproof. If used outdoors, it must be housed in a protective enclosure with proper airflow.
Q: What is the lifespan of the PMS7003?
A: The sensor has an estimated lifespan of 3 years under normal operating conditions.