The Temtop P1000 and M2000 Air Quality Sensors

This week, I’m back to something resembling what I used to write about! Small electronics, with a bit of a teardown and a review. These electronics happen to be some air quality sensors that aren’t online, internet connected, big data learning app based nonsense. They’re purely local, look-at-‘em style devices that don’t even have an internet connection!

Under my screwdrivers and soldering irons, I’ve got a Temtop P1000 (the big one) and a M2000 (the orange one). These detect particulate levels in the air, CO2 levels, temperature, humidity, and in the case of the M2000, formaldehyde levels. This year, those have been really useful to know!

PM2.5, PM10, CO2, and More!

Why would you care about the particulates in the air in great enough detail to buy something like this? In my case, it’s because I live in a region prone to heavy wildfire smoke. It’s not that our area is on fire - but if there are big fires in California, Oregon, or Washington, there’s a good chance the smoke will settle around here. Plus, some of the fires in north Idaho end up down here… it’s just a good smoke bowl, unfortunately. I’ve ignored the smoke for the past few years, but it’s getting to a point where I shouldn’t just blindly ignore it and assume it will be fine. I spent a lot of time last year out in the smoke, and I can tell it really wasn’t a good idea.

Plus, I’ve built some filters this year, and it’s good to know if they work or not. Without some sort of objective measurement device, I’m just screwing around. Add a measurement device, it’s now science!

PM2.5 is one of the smallest grades of particulate matter, and it’s really not good for humans. It ends up in your lungs, generally screwing your body up. PM10 still isn’t great to breathe, but it gets at least a bit more filtered by your breathing system. Hopefully.

And CO2 levels are interesting because one of the ways we typically deal with wildfire smoke is to close the house up tight, and leave it closed up for weeks on end. Is this actually a good idea? Are we breathing enough to bring CO2 levels very high? Is my rather small office a good idea closed up? Just how much crap does my propane furnace dump into my air? I can now measure all this!

One of the problems I ran into trying to find some good units is that just about all the modern ones are “Things” of the “Internet Of” variety - and I’m simply not interested in that. I don’t want an App(TM). I don’t want to have to pull out my smartphone, and cloud connect the big data analytics to read my unit. I want to look at the unit and see what’s going on. The details of my house’s internal air quality are my business, and mine alone - and it’s a fair bet that at least some of the cloud connected device companies have figured out how to make some money selling the collected data on the backend. You could tell if someone eats a lot of fried foods, for instance. And… I don’t know, charge them extra for being downwind of a fire, or something. Not a thing I’m interested in, not a thing I’m willing to support, so I got standalone units.

I’ll start by pulling the two units apart, then get into how to use them.

Temtop P1000 Teardown

The P1000 is the desktop/wall mount unit. The back of it contains some mount holes (of which there are corresponding mounts in the box), various vents, openings, and a micro USB port on the side to charge it.

Both of these units will run without being plugged in. This makes sense for the handheld unit, but I’m a bit surprised by it for the “generally fixed location” unit. I’m not a huge fan of lithium in everything, but… I suppose that’s what the kids want these days? Mine sits on the counter, plugged in.

In any case, there are six screws that come out (one is hidden behind the flip out kickstand), and the unit pulls apart easily.

Popping a few clips around the side, the halves pull free, and there’s a large collection of wires run from one side of the unit to the other. Fortunately, these are all socketed. Unfortunately, the sockets are not what I would call “well soldered,” and I had to put one back on after removing the socket while trying to remove the plug. At least it was just one of the two pin ones. I actually had to take a soldering iron to both units, so if you’ve no reason to disassemble them, I’d suggest “not disassembling them.” You can see the small lithium pouch (easily replaced), and the various sensors (all on the back).

The display control module and main processor are on the board on the front. Nothing terribly fancy here, and as I want the unit operational when I’m done, I’m not going to bother desoldering all the pins along the top to pull the board off. The remaining red/black wires are likely backlight power for the panel, with the segments controlled by the pin header along the top.

Top and center on the board is a TM1729 display driver chip.

Further over, there’s a STM8L052R8T6 8-bit microcontroller - 16MHz, 64kb flash for program storage, 4kb RAM, and your usual batch of ADCs, SPI/I2C interfaces, UARTs, etc. This is the main processor that handles reading the various sensors and converting them into something coherent for the display processor to output.

Zooming in a bit on the board, you can see how all the traces spider out from the display controller chip to the pins connecting the board to the controller - simple and functional. I wouldn’t complain about some stylized and rounded traces, but I don’t see those very often, and the corners are at least a pair of 45s. It really, really doesn’t matter for something like a display driver, though.

Other versions of this unit support some different sensors, and you can see a non-populated header socket that likely handles the other sensor options (and display board). If you’re clever, you can probably use the same firmware on everything - just see which headers are connected and drive outputs accordingly.

Looking in the back, all the sensors are secured in place. The lower left is, as far as I can tell, the temperature/humidity sensor. The top left is the particulate sensor. Top right, CO2, and bottom right is the micro USB power jack. Of course, dead center is the lithium pouch cell. It should be trivial to replace if one has any reason to do so - it’s just a standard size cell with BMS on the end. Largely in the land of “I don’t want to know,” I didn’t check charging voltages on the system. There are enough power electronics between the 5V in and the battery that it’s hopefully fine… I wasn’t too excited about connecting and disconnecting these headers a ton either for testing based on how easily the first one I popped free came off the board.

The sensors are taped down with a layer of double sticky tape (seemingly cut to the sensors - not just straight tape). This first sensor, a MH-Z19A, is a CO2 level sensor, ranging from 0-5000ppm. This is an entirely sane range for a home sensor, though you shouldn’t rely on this unit for a high CO2 environment. Atmospheric levels are ~400ppm and increasing, indoor levels… are higher, though around 2000ppm you should long since have opened a window. It’s a perfectly reasonable range for a home unit, and at 5000ppm, where this caps out, you’re probably feeling the impacts already.

The next unit, clearly inspired by Apple, is “Designed by Temtop in Silicon Valley.” This is the particulate sensor, reporting out PM2.5 and PM10 values.

On the side, there are two openings - one intake, one exhaust. The left opening has a squirrel cage style blower in it that spins when the unit is powered on - though it’s very, very quiet. Almost inaudible unless you’re specifically listening for it. Think “old laptop hard drive” if you have your ear right up against it. The units respond quickly enough to particulates that I was pretty sure they had a blower (they respond slower for other metrics), but it took some careful listening to realize that there was actually a fan. Well done, and I hope it remains this quiet for the long haul!

Perhaps disappointing some readers, I’m not going to actually pull this unit the rest of the way apart. These are operational units, and I really want them running at the end of the teardown. These sensors typically work on a sort of laser scattering technique along the lines of how an optical smoke detector works, and I’m comfortable enough with that concept that I don’t want to render one of these nonfunctional. Air goes in, particles scatter light, and you do math on the scattering to figure out what’s in the air. Simple, reliable, and seems to work quite well!

Interestingly, the back case has separate inlet and outlet ports for this sensor - despite the fact that the entire back of the case is vented anyway.

Finally, bolted to a different corner, what I can only assume is the temperature and humidity sensor chip. This white tape covers this sensor, as well as the input for the CO2 sensor, so I assume they’re some sort of dust filter that allows free flow for air but blocks any dust from getting in and screwing with readings.

Other than having to solder the header back on, assembly is the reverse of disassembly, and everything works!

TemTop M2000 Teardown

The M2000 is the handheld unit designed for more mobile monitoring. Coming in a convenient handheld form factor, you can drag it around the house/property/etc to monitor air quality on the go! You could measure in a box! You could measuere with a fox! You could measure here or there - why, you could measure anywhere!

The unit is wrapped with a somewhat softer rubber-ish plastic that feels nicer than the hard plastic shell of the body, and certainly has a good bit more grip.

An obvious question with these units is, “Well, you have numbers, but what’s good or bad?” The back of the M2000 comes with a handy cheat sheet to offer some guidance on numbers - and, whiel running, it also offers you some interpretation of numbers (though you can set the levels manually if you care).

On the end, there’s a microUSB port for charging and data exporting (yes, it exports data!), and what I’ll simply call the snuffle. The implication, certainly, is that you can stick the snuffle somewhere and it will measure the air quality of that somewhere. Is this true? Well, let’s go further in and take a look!

Disassembly is simple: Remove the grippy shell, then remove the six screws on the back, pull the case halves apart.

The back half is simply shell. I like the addition of the padding on the other side of the (rather large) pouch cell, which is also a bog standard cell that would be easily replaced down the road. But take a look at that black air guide on the back. It’s blocking off part of the vent area, and leaves an opening that corresponds rather exactly to the exhaust of the particulate sensor. Air goes out that opening, and there’s really only one other major place it can come in - the snuffle! So, yes, as far as I can tell, the unit does correctly draw air in the front and report parameters as it filters through the device! Experimentally, it does seem to respond quite quickly to changes, even if those changes are just around the snuffle as well. So, far as I can tell, it works as implied! Great to see that kind of design these days.

All the major sensors are socketed in place - either with a short wire header (the top right particulate sensor), or straight into headers on the board (the other two). Unfortunately, the sensor shoved into the snuffle is soldered - and poorly, at that.

The left sensor, the SenseAir S8, is a CO2 sensor, leaving the right sensor (which I can’t find any data on) to be the formaldyhyde sensor.

Flipping them over, you can see the pin layouts. These are nicely keyed, such that you can’t (easily) install them the wrong direction. Good! History is filled, quite literally, with the wreckage of things that had sensors installed backwards. Try to design your stuff so it can’t happen without at least some amount of forcing, fiddling, and grinding. Maybe a big arrow, too.

Flipping the board over, one has the display, the interface buttons, a small 3C coin cell (!) presumably for the realtime clock (this unit keeps track of time), and what I’m pretty sure is just a big inductor for the power supply. That lower circle is covered by some small vent holes, so perhaps the inductor runs a bit warm if left going constantly.

Under the display is the main CPU - a STM32F103VE. This is a much more powerful chip - a 72MHz Cortex M3 core, 512kb flash with 64kb RAM, USB support, and a bunch of other goodies.

And, finally, coming off the end on a board that goes up the snuffle, what I assume is the temperature/humidity sensor. This is a custom board for the unit, and it’s soldered on. It comes off very, very easily during reassembly, and showed the same sort of grainy, cold solder joint that I saw when the header came off the other board. I fixed it, though perhaps at the cost of ROHS compliance. My dislike of lead free solder is well documented.

Comparing the Units

There’s a saying about watches: The man with one watch knows what time it is, the man with two watches is never sure. The same is true for air quality units, because they certainly don’t agree perfectly. But, over time, the two units have settled in fairly close to each other. From day one, the two units agreed fairly closely regarding the PM content of the air - which, from the teardown, makes sense. They’ve got the same sensor. However, the CO2 sensors were pretty far from each other. The large unit would read 300-400ppm higher than the handheld unit. However, after some time and leaving the units outside for a while to calibrate, they sorted it out and now largely agree. Annoyingly, I’ve not found a way to get the big unit to display temperature in F, though. The handheld unit can be toggled between C and F.

But they’ve certainly shown the same trends, and other than some disagreement about absolute CO2 levels for a while, they mostly agree now. Leave your unit outside powered on for a few hours to calibrate and it should sort things out - there’s some sort of calibration routine triggered outside, though I’ve no idea how well it works in heavy wildfire smoke.

My one big complaint with the M2000 is that the display is basically unreadable outside with any level of ambient light. It somehow washes out to a dull grey, and you can’t read a thing on it.

M2000 Displays and Menus

The user interface on the M2000 isn’t great, but it’s more than adequate. Up/down arrows, the center OK button selects, and there are context menus for most of the screens you can access to change settings, mute beepers, etc.

I find the most useful screen to be the “All” screen - show everything. If I were just interested in certain parameters I could use the parameter specific screens, but this gives the overview of all the sensor readings, so it’s what I use.

If you want to switch between C and F, the “menu” button under the temperature readout will switch those for you on this screen.

If you want to just view part of it, you can do that as well - they tend to include a “Good”/”Moderate”/”Bad” banner at the bottom, but not any extra information - just a bigger font.

However, from those, you can also access a historical graph of data. If you need that. It’s a neat feature, I just haven’t found myself needing the graph very often (which is to say, I’ve only used it when playing around and taking pictures for this post). “Snapshot in time” or “Watch the numbers change as I do things” has been my preferred use so far.

The CO2 graph does have a neat party trick if you breathe out on the snuffle, though! It goes right up and then comes back down. I’m not sure what the CO2 concentration of exhaled human breath is other than “Definitely high, and probably more than 5000 if you hold your breath.”

What’s HCHO? Formaldehyde - which, according to Wikipedia, is something you probably don’t want huge quantities of in the house. It’s the sort of VOC (volatile organic compound) that just about everything modern offgasses, and it’s not great to have have a lot of it. You can get a wall sensor that shows the levels, but if you’re smelling the sort of “glue resin smell” that modern furniture has, you’re well into nasty levels of this. Again, just vent the house if you get a lot of it…

Data Export

Finally, if you want to get the data from a run exported out, you can do that with the Temtop M2000! Go into the menus to export, mount it as a USB drive, and you get a nice list of CSV files containing data for every minute. If you wanted to use this for something, you certainly could.

However, I’m not sure if there’s a way to get “live data” out of the unit. If there is, I haven’t found it yet. Though, again, I’ve not really gone looking that hard.

Boxes and Cases

Both units come with fairly nice boxes, and in the case of the handheld unit, a cheap but tolerable case. I’m just not sure who’s likely to actually use these. I’d rather see the units ship in something a bit more recyclable, though with the case, it will likely get use as a pencilbox or something - once I toss the dense foam out.

However, I mentioned the mounts for the wall unit, and they’re over in the left box. Shove a couple pins into the drywall and it mounts nicely! … and then run a USB cable up to charge it.

Lessons Learned: Build Filters!

How bad does it get out here? Well… it can get pretty darn bad with regards to the smoke. This is one particularly bad morning - remember, “12” is the good number for PM2.5. This? This air just feels disgusting when you get into it.

On the recommendation of the internet, at the start of fire season this year, I built an adapter for one of our fans with some decent quality filters. These are 20x20x1, MERV 13 or so (not the cheap ones, these are supposed to filter smoke and such). Adapting from a square box to a round fan took some tape… but I got it working.

And I built a four filter box! Every surface not on the ground and not the fan is a big filter. This allows for fairly low pressure drop through it (the air is moving slowly), and experimentally, the fan doesn’t seem to be moving much less air than it does in free air - so, working as hoped. This filter is no longer nearly as white as it was when I installed it… but measurements show that it does, indeed, filter PM2.5 out of the air and leaves the air very nearly clean! With ambient measurements of around 5-8, the air coming out is sub-1. I consider that a win and proof of the effectiveness of the fan.

We’ve kept this mostly in our bedroom to try and clean the air in there, and measurements indicate that, yes, the bedroom is cleaner by some margin than the rest of the house. However, our house is decently sealed up, and we don’t get a ton of smoke in the house. Now, CO2 buildup… I could use a heat recovery ventilator or something. If the air is clear, our vent fans work nicely, but I don’t want to suck a ton of smoke through the house.

However, fans don’t work outside, and so I picked up some alternatives for attempting to not die when working outside. The P100 particulate filters get rid of just about everything in the air, and while it’s not the most enjoyable thing to wear, it does beat working in heavy smoke or pollen without the filter. I did plenty of that last year working on the solar install and believe me, it sucked and I’m pretty sure it wasn’t the slightest bit good for my health.

Final Thoughts

Are the sensors worth the somewhat significant amounts of money? Well… maybe. Now that I have some, and have dialed in what works and calibrated my visual “Ok, this is gross…” metrics more than they were previously, I’ll probably just leave the indoor unit running and let other people borrow the handheld unit to dial in their various environments. They’re neat to have, but once you have a feel for how your house/office/filters/etc work, I’m not sure they’ll be quite as useful. At some point, there’s simply nothing you can do with the data - if the house is tight, your filters are running, and the furnace blower is circulating, that’s about the best you can do.

They’re interesting. And, if you want something not cloud connected, the Temtop units seem to work pretty darn well!

This is a companion discussion topic for the original entry at

I’m curious, how long are the VOC sensing components supposed to last?

In my area, a bazillion people have installed sensors so I don’t need my own unless I want to measure indoors. I have some Shinyei PPD42NJ bare bones PM sensors from seeed and a microcontroller sketch that I left running a few years ago that seemed to work right. But I also got to the point where it was just confirming what I knew so I never expanded the project to log and report indoor data as a finished non-breadboard fun thing. From purpleair teardowns, they’re using similar (a bit better) components and have already implemented all of the logging, reporting, graphing, mapping including calibration against various standards, so my motivation would lean toward just buying theirs at this point if I wanted one.

I like that you found ones measuring additional VOCs.

You’ve no interest in combing this type of data with some basic automatons?
For example starting up a filtered extractor fan to pull fresher air into the house or the office if CO2 levels get to high, or starting up a few filter boxes if the PM starts to creep up within the house or office?
Pretty easy to do with mqtt or home-assistant on rPi with no internet link. Most of those sensors can be picked up online and run with various cheap micro controllers.

Also did they say anything about the lifetime of the PM sensors? Most of the sensors I’ve seen available with a laser have an estimated lifespan of a few years run time. So generally recommended to only sample for ~30secs every few minutes for a significant increase in sensor life.

I don’t believe it’s specified in the documentation.

Not really, no. Nothing I can’t do myself with a couple switches if I care.

I lack a filtered extractor fan of sufficient filtration to let it run in heavy smoke conditions. I could probably rig something together, but… if it’s that bad out, I’ll just wait for it to clear then vent the house. Most of the year, we have vent fans that run and provide some circulation at night, it’s just the heavy smoke season and winter that those don’t cycle as much.

As for the PM box filters… if I have them, why not just let them run? Lower PM is better if it’s smoke season, and if it’s not, then it probably doesn’t matter. Or I can just wander past the sensor and see if it’s up higher than I like, and go plug one in.

Automated fans like that for a house sounds, at least to me, like automation for the sake of automation, and I’m increasingly rejecting that concept.

Not explicitly, but the countertop sensor, after running for a while, drops back to sampling every so often (configurable, I think, in 5 minute intervals), so it’s not running the sensors constantly if you leave it on indefinitely.

Great post! I’ve got one of the same air quality sensors that those PurpleAir units use (a Plantower PMS5003) attached to an ESP32 running some MicroPython code to keep an eye on our air quality here. I’ve got it being pulled into Grafana, but I need to get around to having it show the numbers on the spare eink display I have attached to one of my Raspberry Pis so we can see it at a glance.