HM3301 Grove PM 2.5 displays static number

I ran the example code included with the library “Seeed_HM330X.h” right out of the box.

The output is this:

Serial start
0
FF 0 0 0 2
0 2 0 2 0
2 0 2 0 2
0 0 0 0 0
0 0 0 0 0
0 0

sensor num: 0
PM1.0 concentration(CF=1,Standard particulate matter,unit:ug/m3): 2
PM2.5 concentration(CF=1,Standard particulate matter,unit:ug/m3): 2
PM10 concentration(CF=1,Standard particulate matter,unit:ug/m3): 2
PM1.0 concentration(Atmospheric environment,unit:ug/m3): 2
PM2.5 concentration(Atmospheric environment,unit:ug/m3): 2
PM10 concentration(Atmospheric environment,unit:ug/m3): 2

The output does not change no matter what I do. Is this a nonfunctional sensor or is there something that I’m not doing right?

I have the same behavior. Checked with an external logic analyzer and its sending the values, so it isn’t a code issue.

Did you ever resolve this?

0
FF 0 0 0 2
0 3 0 3 0
2 0 3 0 3
0 0 0 0 0
0 0 0 0 0
0 0
sensor num: 0
PM1.0 concentration(CF=1,Standard particulate matter,unit:ug/m3): 2
PM2.5 concentration(CF=1,Standard particulate matter,unit:ug/m3): 3
PM10 concentration(CF=1,Standard particulate matter,unit:ug/m3): 3
PM1.0 concentration(Atmospheric environment,unit:ug/m3): 2
PM2.5 concentration(Atmospheric environment,unit:ug/m3): 3
PM10 concentration(Atmospheric environment,unit:ug/m3): 3

Hello, can you tell me the SKU of the product or the link of the product, I can help you find it

Hi, thanks… SKU: 101020613

Thank you for your reply, is the interface connected to the IIC interface of Arduino?

I applied for a new PM2.5 module for testing. The code and library are no problem. I use the Seeeduino development board and connect to PM2.5 through the IIC interface. The results of the test are as follows:
At the beginning, there are two to three sets of values that fluctuate, and then the values will stabilize and hardly change. This is normal.
I also tried to change the value and use the palm to cover the PM2.5 module. It takes a while to react. After about two to three sets of data, its value will change slightly within the range of plus or minus 3.

Any update on this? I installed a SCD30 and HM3301 on a common bus last night. Both initially worked, but today the SCD30 is working, but the HM3301 is reading 1 for PM1.0, 2.5 and 10, the SCD30 is still working. Not quite a random static number, but I’m trying to figure out how to troubleshoot and how to rule out a defective sensor. Any thoughts appreciated. I have these installed with jumper wires to an ESP32, but since I’m using the same bus for the SCD30 as well, which is having no issues, I think the bus is ok. I’ve checked the grove connector between the HM3301 and the hub and reset those… no change.

So, my troubleshooting otherwise didn’t lead anywhere, but with a burned dinner tonight that filled the house with smoke, I think that I discovered that my expectations were too high. Once the particle count was into the hundreds, it was differentiating counts between the three channels, at low particle counts it loses that distinction. By logging the data, I did note that it detects an increased particle count when cooking, even without visible smoke.

I am seeing a similar issue to what is shown in xz1001’s and AdamB’s output. Both show the last few rows of data, which correspond to the raw particle counts per 0.1L, as all 0’s. I recently ordered a batch of these sensors that all report 0’s for the raw particle counts.

I have a set of these sensors that I ordered in Fall/Winter of 2020 that do report particle counts, just like Citric’s output shows. Were these sensors changed in the past year?

I’m having the same issue with the sensor I ordered a year ago in June 2023. It worked well for several months and a couple of weeks ago I started getting to low of values. I thought the wiring was loose so I re-soldered everything but that didn’t help.

Today I moved the sensor from my esp32c3 device running on ESPHome to a my Arduino UNO and loaded up Seeed_PM2_5_sensor_HM3301/examples/basic_demo/basic_demo.ino at master · Seeed-Studio/Seeed_PM2_5_sensor_HM3301 · GitHub and it’s just streaming all 1s.

0  
FF  0  0  0  1  
0  1  0  1  0  
1  0  1  0  1  
0  0  0  0  0  
0  0  0  0  0  
0  0  
sensor num: 0
PM1.0 concentration(CF=1,Standard particulate matter,unit:ug/m3): 1
PM2.5 concentration(CF=1,Standard particulate matter,unit:ug/m3): 1
PM10 concentration(CF=1,Standard particulate matter,unit:ug/m3): 1
PM1.0 concentration(Atmospheric environment,unit:ug/m3): 1
PM2.5 concentration(Atmospheric environment,unit:ug/m3): 1
PM10 concentration(Atmospheric environment,unit:ug/m3): 1

Hi there,
Either it’s defective or needs calibration

or check the connections. all 1’ points to a wiring issue. IMO
HTH
GL :slight_smile: PJ
:v:

How does one calibrate this sensor?

Hi there,
I don’t know for this particular particle counter , but they probably use a sample gas to test it.
You could use Nitrogen and a set micron filter run some samples for baseline, then get with a 2.5 micron filter and see what it does.
I’ve used industrial versions for Process gas in a Chip FAB we had a calibration gas, that had PPM levels for calibration. Fire off an email to seeed tech support ask how they do it. would be a start.
You could do your own ZERO gas by using a really small filter you know that’s below the Lowest Detectable Limit (LDL) and you should get ZERO particle counts with that. called a zero Cal.
HTH
GL :slight_smile: PJ
:v:

unbelievable how small it is , Some LPC units I’ve worked with were the size of a torpedo. :stuck_out_tongue_closed_eyes:

probably get a Vape and puff some diode smoke in that cpu fan…

OK these methods would give it some particles to sense but how does the fan get calibrated? Are there some values I can set over serial or something?

Again… I do not have one of these devices… but I would assume it is just like any other PC fan… it should be controled by PWM Pulse Width Modulation… and as such the rpm should be controled as such… i wouldnt think any calibration would be needed… A strobe ot laser tachometer should verify the RPM is you need some way of verifying it does not change

Nothing stands out as loose or broken but putting some pressure on the red and black wires labeled as Laser results in all the numbers jumping up and then either slowly lowering to 0 or near zero over a few seconds.

I got a message when I tried to attach photos that said I couldn’t embed media files. But I was able to post here.

Sorry… its because you have not been an active member long enough… please read a few more posts any you will be upgraded to a level 1 member… Also as they said on your link try reflow solder and make sure it is not connecting to that adjacent resister