

The APM3000, manufactured by 奥松, is an infrared LED particulate matter sensor designed to detect and measure airborne particles. It uses infrared light scattering technology to identify the presence and concentration of particulate matter (PM) in the air. This sensor is ideal for applications requiring real-time air quality monitoring, such as:
The APM3000 is compact, energy-efficient, and provides reliable measurements, making it a popular choice for both consumer and industrial applications.








| Parameter | Value |
|---|---|
| Manufacturer | 奥松 (Aosong) |
| Part Number | APM3000 |
| Detection Principle | Infrared light scattering |
| Particle Size Detection | ≥ 1.0 µm |
| Measurement Range | 0–1,000 µg/m³ |
| Operating Voltage | 5V DC |
| Operating Current | ≤ 100 mA |
| Output Signal | UART (3.3V TTL level) |
| Response Time | ≤ 1 second |
| Operating Temperature | -10°C to 50°C |
| Operating Humidity | 0–95% RH (non-condensing) |
| Dimensions | 50 mm × 38 mm × 21 mm |
| Weight | ~20 g |
The APM3000 sensor has a 7-pin interface for power, communication, and control. The pinout is as follows:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VCC | Power supply input (5V DC) |
| 2 | GND | Ground |
| 3 | TXD | UART Transmit Data (3.3V TTL level) |
| 4 | RXD | UART Receive Data (3.3V TTL level) |
| 5 | SET | Mode selection (low: sleep mode, high: active) |
| 6 | NC | Not connected |
| 7 | NC | Not connected |
VCC pin to a stable 5V DC power source and the GND pin to ground.TXD and RXD pins to the UART pins of your microcontroller or development board (e.g., Arduino UNO). Ensure the UART logic level is 3.3V to avoid damaging the sensor.SET pin to control the sensor's mode:SET high (3.3V) to activate the sensor.SET low (0V) to put the sensor into sleep mode for power saving.Below is an example of how to connect and read data from the APM3000 using an Arduino UNO:
| APM3000 Pin | Arduino UNO Pin |
|---|---|
| VCC | 5V |
| GND | GND |
| TXD | RX (Pin 0) |
| RXD | TX (Pin 1) |
| SET | Digital Pin 7 |
#include <SoftwareSerial.h>
// Define the RX and TX pins for SoftwareSerial
SoftwareSerial APM3000Serial(10, 11); // RX = Pin 10, TX = Pin 11
// Define the SET pin
const int setPin = 7;
void setup() {
// Initialize serial communication
Serial.begin(9600); // For debugging via Serial Monitor
APM3000Serial.begin(9600); // For communication with APM3000
// Configure the SET pin
pinMode(setPin, OUTPUT);
digitalWrite(setPin, HIGH); // Activate the sensor
Serial.println("APM3000 Sensor Initialized");
}
void loop() {
// Check if data is available from the sensor
if (APM3000Serial.available()) {
// Read and print the data from the sensor
while (APM3000Serial.available()) {
char c = APM3000Serial.read();
Serial.print(c); // Output the data to the Serial Monitor
}
Serial.println(); // Add a newline for readability
}
delay(1000); // Wait 1 second before reading again
}
SET pin can be controlled programmatically to switch between active and sleep modes.No Data Output
SET pin is pulled high to activate the sensor.Inaccurate Readings
Sensor Not Responding
Q: Can the APM3000 detect PM2.5 particles?
A: Yes, the APM3000 can detect particles as small as 1.0 µm, which includes PM2.5 particles.
Q: Is the APM3000 suitable for outdoor use?
A: The APM3000 is designed for indoor use. If used outdoors, ensure it is protected from extreme temperatures, humidity, and direct exposure to dust or water.
Q: How often should the sensor be cleaned?
A: Cleaning frequency depends on the environment. In dusty environments, clean the sensor every 1–2 months to maintain accuracy.
Q: Can the sensor operate on a 3.3V power supply?
A: No, the APM3000 requires a 5V DC power supply for proper operation.