

The PLANTOWER PMS9003M is a high-precision air quality sensor designed to measure particulate matter (PM1.0, PM2.5, and PM10) concentrations in the air. It uses laser scattering technology to provide real-time and accurate data on air pollution levels. The sensor is compact, reliable, and easy to integrate into various applications, making it ideal for environmental monitoring, air purifiers, HVAC systems, and indoor air quality monitoring devices.








The following table outlines the key technical details of the PMS9003M sensor:
| Parameter | Value |
|---|---|
| Manufacturer | Plantower |
| Part Number | PMS9003M |
| Measurement Range | 0.3 µm to 10 µm (particle size) |
| PM Measurement Types | PM1.0, PM2.5, PM10 |
| Output Interface | UART (3.3V TTL) and I²C |
| Operating Voltage | 5V DC |
| Operating Current | ≤ 100 mA |
| Operating Temperature | -10°C to 60°C |
| Operating Humidity | 0% to 99% RH (non-condensing) |
| Response Time | ≤ 1 second |
| Dimensions | 50 mm × 38 mm × 21 mm |
| Weight | ~35 g |
The PMS9003M sensor has a 7-pin connector for interfacing. The pin configuration is as follows:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VCC | Power supply input (5V DC) |
| 2 | GND | Ground |
| 3 | SET | Sleep mode control (active low) |
| 4 | RX | UART receive pin (3.3V TTL logic) |
| 5 | TX | UART transmit pin (3.3V TTL logic) |
| 6 | RESET | Hardware reset (active low) |
| 7 | NC | Not connected |
Below is an example of how to interface the PMS9003M with an Arduino UNO using the UART interface:
#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial pmsSerial(10, 11); // RX = pin 10, TX = pin 11
// Buffer to store incoming data
uint8_t dataBuffer[32];
void setup() {
Serial.begin(9600); // Initialize Serial Monitor
pmsSerial.begin(9600); // Initialize PMS9003M UART communication
Serial.println("PMS9003M Sensor Initialized");
}
void loop() {
if (pmsSerial.available() >= 32) { // Check if 32 bytes are available
for (int i = 0; i < 32; i++) {
dataBuffer[i] = pmsSerial.read(); // Read data into buffer
}
// Validate data frame (start bytes: 0x42, 0x4D)
if (dataBuffer[0] == 0x42 && dataBuffer[1] == 0x4D) {
// Extract PM2.5 concentration (bytes 10 and 11)
uint16_t pm25 = (dataBuffer[10] << 8) | dataBuffer[11];
Serial.print("PM2.5 Concentration: ");
Serial.print(pm25);
Serial.println(" µg/m³");
}
}
}
No Data Output:
Inaccurate Readings:
Sensor Not Responding:
Q: Can the PMS9003M measure gases like CO2 or VOCs?
A: No, the PMS9003M is designed to measure particulate matter (PM1.0, PM2.5, and PM10) only. It does not detect gases.
Q: How often should the sensor be calibrated?
A: The PMS9003M is factory-calibrated and does not require user calibration under normal conditions.
Q: Can I use the sensor outdoors?
A: Yes, but ensure it is protected from direct exposure to rain, dust, and extreme environmental conditions.
Q: What is the lifespan of the PMS9003M?
A: The sensor has an estimated lifespan of 3 years under normal operating conditions.