The CCS811 Is Not A Carbon Monoxide (CO) Sensor


Many listings on Amazon, AliExpress, eBay and in other places incorrectly state that the CCS811 is a Carbon Monoxide (CO) sensor. It is not. It reports eTVOC (equivalent Total Volatile Organic Compounds) and eCO2 (equivalent Carbon Dioxide). The CCS811 is not capable of measuring Carbon Monoxide and any listing or description of it that says it does is simply incorrect. It also doesn’t truly measure CO2, but that’s a story for another day.


Found: Plantower PMS3003 and PMS5003 Connectors

I’ve been working on an air quality monitoring project using the Plantower PMS5003 particle detector. It’s a cool little device that uses a laser to count particles of various sizes (1.0µm, 2.5µm and 10µm). It won’t tell you what kind of chemicals are in the air but it will give you a good idea of what size and how many particles the sensor is seeing.


The Plantower PMS3003/PMS5003 particle sensors usually come with an 8 wire cable with male plugs on each end. The cable needs a Molex 053261-0871 female connector, which has a 1.25mm pitch “PicoBlade” header. You can find it at Digikey, Mouser, eBay (but don’t, the prices on eBay were ridiculous last time I looked) and even Amazon.

The toughest thing about using it isn’t the software or hardware, it’s mechanical – I had a very difficult time finding a compatible connector. The sensor ships with a short 8 wire cable with two male ends. I ended up just cutting the wires in two and soldering them to a perfboard, but this is a less flexible and more permanent solution than I was happy with.


November Roast: Timor-based Coffee Blend

I roast my own coffee.

When I lived in New England, roasting my own coffee meant we could have delicious coffee at home (really good because it was freshly roasted, not because I have any magical coffee powers beyond being lucky enough to have a small coffee roaster). When I started roasting, freshly roasted coffee was a rarity.

Now that I live in Portland, good coffee is never more than a couple of blocks away. Coffee roasting is now a big yawn, but I enjoy roasting my own and still do it as much as I can. I roast outside because my roaster throws off a lot of smoke, so once the weather gets too wet or too cold I stop, but Portland’s winter is mild enough that there are usually still a few good days when I can get a few roasts in, even in January. More

Stop The loop() Insanity!

The simplest Arduino program looks like this:

void setup() {

void loop() {

This does nothing beyond build and run.

The setup() function is used for one time, well, setup. This is where you initialize a sensor or connect to Wifi or set the speed of your serial port.

The loop() function is where you do the work. This is intended for repetitive tasks, like reading from a sensor or uploading some information or blinking lights. More