I use HPMA115S0 sensor with Arduino for Nodemcu, i can read it value but face one problem. The sensor not work after send stop measure command (fan not start too).

const int StartPmMeasure[4] = {0x68, 0x01, 0x01, 0x96};
const int StopPmMeasure[4] =  {0x68, 0x01, 0x02, 0x95};
void stopSensor() {
  if (isSensorStart) {
   Serial.println("INFO: Stop sensor");
   isSensorStart = false;

void startSensor() {
 if (!isSensorStart) {
  Serial.println("INFO: Start sensor");
  isSensorStart = true;
  • 1
    what do you do then? do you have to replace the sensor? – jsotola Jan 17 '18 at 7:52
  • @jsotola i think it not the device fault, i ask Honeywell support but still not receive the answer. And i have only one, it take me 2 week to purchase. – DzungPV Jan 17 '18 at 8:14
  • Please explain a few things before the question becomes answerable. (1) Source code for sendCommand(...). (2) Meaning of the bytes (each byte) that you pass to sendCommand(...) as parameters. – Nick Alexeev Jan 17 '18 at 17:58
  • Are you saying that after you stop it, and then call startSensor it won't start? – DigitalNinja Jan 17 '18 at 18:44
  • The sensor commands have acks, I'd check to see what it is responding with when trying to start it again. – DigitalNinja Jan 17 '18 at 18:50

I have the same problem here. I'm using a HPMA115S0 with an ESP8266 and found out that the sensor don't respond in general if you are doing a deep sleep with the ESP. If the ESP wakes up, the sensor does not respond on commands till you remove the 5 volts of the HPMA for a short time to make an "hard reset" of the sensor.

I think there is a problem with the ttl-level on the UART-RX-line of the HPMA. Because if you're pulling the rx-line of the sensor manually to ground (maby the ESP is doing this if he goes to deep sleep or wakes up), the sensor does not respond after that.

I spend very much time in this phenomenon. I used different pins on the ESP for software UART and used the hardware UART, problem still exists. I assume that the ESP pulls all his pins on ground level for too long. That means that the stop bit (high-level), which the sensor wants after 8 bits are transmitted, is not present. This leads to strange behavior of the sensor. I don't have a digital storage scope to see the level on rx-line, so this is only a presumption. But I don't have this problem, if the ESP idles with an sleep-command. Maby you are also doing a deepsleep with your ESP which results in the same problem?

Best regards

|improve this answer|||||
  • Yes, that is my same setup, it can not work after send stop measure command. If you make esp deep sleep and not send stop command it still work with "continuous mode". Honeywell support service is very bad too, they ignore my email. I end this buy use other sensor and find that this sensor HPMA115S0 very inaccurate, it give random result in 1 minute in stable environment. So Plantower PMS7003/PMS5003 is the solution and it is very accurate, stable and cheaper than Honeywell one. – DzungPV Feb 27 '18 at 10:35
  • Exactly.If you let the sensor push his measured results (autosend enable=default) you could let the ESP8266 sleep. But the problem in this case is the higher power consumption of the sensor which is not a solution for me, because this device should be battery powered. Thanks for the tip of the Plantower sensor! This sensor also has an reset pin to reset the sensor if something goes wrong. – binford Feb 28 '18 at 16:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.