Extracting data from a popular PM2.5 Air Quality monitor

PM2.5 air quality module

With the ads on air purifiers that often rely on expensive proprietary HEPA filters, I purchased an air quality monitor for curiosity to see what our indoor readings are like. The first meter rarely went above 10 except while frying food, so just to rule out a dud, I purchased another that can also log data, as shown on the right.

This PM2.5 monitor is based on the low cost Plantower PMS5003, which can also measure PM1.0 and PM10 particle sizes, unlike the first that clearly gave estimate readings. However, I ran into a few problems – It did not come with any software, I could not set the clock and got nowhere trying to contact the seller. The hygrometer also stopped working, discussed further down.

With no branding or model number to search for, I tried countless search terms trying to get hold of software. I either ended up with software for other data loggers that also use the Plantower module or just landed on unanswered Forum and Reddit threads looking for the software.

I then tried another tactic by searching for other sellers of this device. Sure enough, after checking just a handful of listings, I came across a Banggood listing (search for 1615550) that also provides a software link.

Installing the USB driver and getting its COM #

When the device is first plugged into a Windows PC, it will appear as a USB Serial device with no driver in the device manager:

USB Serial driver missing

To install the driver and get the COM port number:

  1. Connect the air quality monitor to the PC.
  2. Go into the Start Menu, then click the Settings cog wheel.
  3. Go into Update & Security.
  4. Click Check for updates, then wait until this completes.
  5. Go into View optional updates (below the Check for updates button).
  6. Go into Driver updates.
  7. Tick the “wch.cn – Ports” option, then click Download and install.
  8. When this completes, close out of Windows Update.
  9. Right-click the Start Menu, then click Device Manager.
  10. Expand the Ports (COM & LPT) section.
  11. Take note of the COM number for the CH340 entry:
USB Serial CH340 driver showing COM4

Setting up the software

  1. Download the host computer software from the above Banggood page.
  2. Use 7-Zip or WinRAR to the extract RAR file into a folder.
  3. Launch the PM25.exe file inside.
  4. If a Chinese message box appears, click OK.
  5. In the configuration screen, choose the COM# noted in the above driver steps.
  6. In the second field, enter: 115200
  7. Click the Chinese button to proceed.
  8. If all goes well, it should now display a table of values as shown below.
  9. To change the interface to English, go into the right end menu:
PM2.5 software in Chinese language

Setting the date, time and logging interval

To my surprise, there is no ability to adjust the clock directly on the monitor. This requires the software sync the clock with the PC. The same applies for the acquisition interval before it starts logging data.

Go into the Equipment menu, then select Setting:

PM2.5 software setting screen

Time interval for real-time: This specifies how often to update the live readings while the software is running with the device attached. I suggest leaving this as 1 second for precision as this does not consume any storage memory on the monitor.

Time interval of acquisition: This specifies the interval for storage data on the data logger. From trying to extract previous readings, it takes roughly 1 minute per 2000 readings, so avoid setting this below 60S or it will take a long time to extract the readings.

Setting Time: Click the Calibration button to synchronise its date and time with the PC’s clock.

Importing historical data from the monitor

Once the logging interval is configured (see above), the PM2.5 monitor will automatically store current readings at the set interval, as long as it receives power from its USB port. It has a small battery to keep its real time clock running while unplugged.

To import the data, go into the History menu and click Update. It will display a message asking to confirm the downloading of its historical data:

Download historical data screen

To get a time estimate in minutes, divide the figure by 2000. For an acquisition interval of 60 seconds, it will accumulate 10,080 readings per week of operation. This would take roughly 5 minutes per week of data to extract.

To export the data to a file, click the Export menu, then specify a file name to save as.

Deleting historical data on the monitor

I suggest deleting the historical data after importing the data. As there is no option to only import from a specific date range, the next import will result in a longer waiting period.

To erase the stored data on the monitor

  1. Go into the History menu.
  2. In the pop-up asking to download historical data, click No.
  3. Click Delete, then click Yes to confirm.

How to open the file in LibreOffice

When opening an exported file in LibreOffice or OpenOffice Calc, it displays the following General input/output error:

General input/output error in LibreOffice Calc

This is due to it using some Microsoft Excel style tags that don’t appear to be compatible with Calc. Remove these style tags to fix this issue.

First make a backup of the xls file, then open it in a text editor such as Notepad++:

Notepad++ showing unwanted style tags

Delete everything between the opening and closing Styles tag lines as shown above. Save the file. It should now open in Calc:

PM2.5 data open in LibreOffice Calc

To change its real time clock battery

If the monitor loses its time while unplugged, its battery has likely depleted. There is a CR1220 battery under the small circuit, that needs to come out:

PM2.5 monitor data logger board
binary comment

Before removing board, take a picture to refer to later as it must go back in with the same orientation to avoid damage. Carefully pull this small board up until its pins release from the lower board.

Release the CR1220 battery by pushing its metal retainer using a butter knife:

PM2.5 data logger battery
binary comment

Before inserting the board, orient it correctly by looking back at the picture taken earlier. Ensure all pins align up with the connector at each end, then gently push both ends of the board down.

Temperature / Hygrometer sensor note

There is a ASAIR AM2120 sensor on top of the module that reads the temperature and relative humidity. One thing to beware of is that it is completely exposed at the top as highlighted below:

PM2.5 data logger temperature and hygrometer sensor
binary comment

When I first received the data logger, its relative humidity reading was around 5% above my other hygrometers, e.g. 60% vs 55%. I blew into the sensor thinking that there may be a spec of dust or debris inside, but this added another 5% to its readings, making it read 10% too high.

I tried putting a drop of water in this module and shaking it out, then letting it dry overnight. This turned out to be a bad mistake. When I powered it up, it read 99% and remains stuck at that figure. I have now ordered a replacement ASAIR AM2120 module to replace it with.

With just a drop of water damaging this humidity sensor, this means that the module must be protected against water droplets. For example, when carrying to/from a car while its raining. Similarly this should not be near a sink or open window where droplets could land on the sensor.

Technical information:

For the nerds or anyone curious, these are markings on the chips.

Data logging board:
CH340G – USB to serial
DS1302Z – Real time clock
DAY12.000G – Unknown
WINBOND 25Q64JVSIQ – 64Mb Serial Flash Memory

Temperature / RH sensor: ASAIR AM2120

PM2.5 Sensor: Plantower PMS5003

2 thoughts on “Extracting data from a popular PM2.5 Air Quality monitor”

  1. Awesome! I’ve been looking for this for ages. Can’t wait to try it! There are so many ‘monitors’ on the market, but unless you are willing to spend $500+, none of them except this one seem to have external data ports on them and as far as I can tell, you are the first person to create a useable interface to them. You’re a champ mate! 🙂

  2. I wonder, is there a reasonable means of porting a live stream from this device to a web page to enable live monitoring and data capture/storage/display over time of the data?

    A few years ago, a teacher in Montana posted a project on YouTube where he did something similar using a more primitive AQI sensor that worked well, but didn’t permit data capture — only a window of the live stream over an hour or two which disappeared as the data rolled out of the window. I’ll see if I can chase it up and repost it.

Leave a Reply

Your email address will not be published. Required fields are marked *