Library for HPMA115C0-03/HPMA115C0-04

Updated: Oct 20, 2020

The Honeywell HPM Series Particulate Matter Sensor is a laser-based sensor which detects and counts particles using light scattering.

The detection concentration range is 0 µg/m3 to 1,000 µg/m3. A laser light source illuminates a particle as it is pulled through the detection chamber. As particles pass through the laser beam, the light reflects off the particles and is recorded on the photo or light detector. The light is then analyzed and converted to an electrical signal to calculate particle concentration.

The Honeywell particle sensor provides information on the particle concentration for given particle concentration range.

Technical Specification of HPMA115C0-03/HPMA115C0-04

HPM Series Operation

Connector Pinout

Library for HPMA115C0-03/HPMA115C0-04

Library for HPMA115C0-03/HPMA115C0-04 has been developed with the help of


More information about Zekeng you can find HERE.

The library repository can be found HERE.


Arduino Library for Honeywell's Particle Sensor (HPMA115C0-003 / HPMA115C0-004)


The documentation of HPMA115C0-003 / HPMA115C0-004 can be found in the docs folder in the repository or in this link.


  • Read Particle Measuring Results - 0x68, 0x01, 0x04, 0x93

  • Start Particle Measurement - 0x68, 0x01, 0x01, 0x96

  • Stop Particle Measurement - 0x68, 0x01, 0x02, 0x95

  • Stop Auto Send - 0x68, 0x01, 0x20, 0x77

  • Enable Auto Send - 0x68, 0x01, 0x40, 0x57


  • Init --StartParticleMeasurement --DisableAutoSend

  • ReadParticleMeasurement -- ReadCmdResp

  • StartParticleMeasurement

  • StopParticleMeasurement

  • DisableAutoSend

  • EnableAutoSend


HPMA115C0-003 / HPMA115C0-004 are measuring PM1.0, PM2.5, PM4.0 and PM10.

NOTE: The delay before initialization should be minimum 2000ms otherwise the sensor is going to auto send mode and it is not received commands anymore.

 * @file example.ino
 * @author Dimitar Rangelov
 * @date June 2020
 * @brief Example using HPMA115C0 sensor library on a Feather 32u4
 * @license MIT

#include <hpma115C0.h>
#include <SoftwareSerial.h>

//Create an instance of software serial
SoftwareSerial hpmaSerial(10, 11);  // Feather TX, Feather RX

//Create an instance of the hpma115C0 library

HPMA115C0 hpma115C0(hpmaSerial);

void setup() 
  hpmaSerial.begin(9600)            // Default sensor baud rate - 9600
  delay(2000);                      // The delay should be 2000-5000 ms 

void loop() 
  uint32_t pm1_0,pm2_5,pm4_0,pm10;
  if (hpma115C0.ReadParticleMeasurement(&pm1_0,&pm2_5,&pm4_0,&pm10))
    Serial.println("PM 1.0: " + String(pm1_0) + " ug/m3" );
    Serial.println("PM 2.5: " + String(pm2_5) + " ug/m3" );
    Serial.println("PM 4.0: " + String(pm4_0) + " ug/m3" );
    Serial.println("PM 10: " + String(pm10) + " ug/m3" );
101 views0 comments

Recent Posts

See All

If you want to support me