[Idea] Air Quality Monitoring - HELP WANTED!

The Problem

Melting plastics in your home, even PLA, could be harmful to your health. Here are some research articles:

Tl;dr: it may be bad, more research is needed. No scaremongering, just science.

While we wait for additional research, an easy way to enable OctoPrint users to monitor air quality around their printer would:

  • Make it possible to test the current attempts at DIY ventilation solutions. It seems most people who have attempted to do something about the potential health risks, including the creators, are dangerously and wrongly assuming that if it looks like a filter it'll do the job
  • Reduce the health risk of 3D printing at home
  • Help the community learn which filaments and brands present the highest/lowest risks
  • Increase awareness of potential health risks, and potentially research funding as a consequence
  • Increase interest and development of DIY enclosures and filtration systems
  • Encourage filament companies to actively work to reduce potentially harmful emissions

Help Wanted...

I'm a Product Manager with some UX experience. I can research, organise, plan, present, wireframe, and write user stories and acceptance criteria that make QAs swoon, but I haven't written code since my degree, and got as far as setting up a GitHub repository with a plugin template before realising that I will never get this thing done by myself.

Current Plugins

Octoprint-SDS011 is a great start, it's complicated to install, has limited functionality, and doesn't use the best value (accuracy vs cost) sensor.

I wasn't able to find any others.

Particulate Matter Sensor

The hardware should balance cost, accuracy, size and ease of acquisition to reduce the barrier for getting this set up. I'd suggest starting with a single sensor that balances these attributes, and add more in the future. At a minimum, the sensor should output measurements for 1.0 μm, 2.5 μm and 10 μm particles.

Options:

HoneyWell HPM HPMA115C0-003 and -004

Plantower PMS5003

  • Well regarded in other projects and scientific experiments.

Plantower PMS5003ST

  • Also includes formaldehyde, temperature and humidity sensors, but rarely mentioned online - no experiments, very few public projects, and if one sensor fails, it cannot be replaced individually.

Plantower PMS7003

  • Similar to the PMS5003 but half the size

Plantower PMSA003

SDS011

  • Doesn't seem to be as accurate as the other options.

SDS021

  • Doesn't seem to be as accurate as the other options.

SGP30

  • Board only, no case with fan/duct to provide continuous air flow across sensor.

So far, I think the Plantower PMSA003 is the one to go with, at least initially. This should be connected via USB to aid in support for various OctoPrint capable devices and for multiple sensors per OctoPrint device. The two best tools I've found for interacting with this sensor (and others) are PyPMS and plantower.

Questions:

  1. How can it be "calibrated" at home by an OctoPrint user? Is it worth calibrating, or using two for the same area and taking an average?
  2. Humidity can affect the sensor reading, and consequently the humidity should also be measured and compensated for. How?

Humidity Sensor

Pending research...

BME680 ?

VOCs Sensor

Pending research...

BME680 ?

Serial UART to USB Adaptors

Some information about what these do and the various options can be found here: https://www.sjoerdlangkemper.nl/2019/03/20/usb-to-serial-uart/

The FT232R seems to be the most popular. It's easily available cheaply from AliExpress for ~$1.50, comes in a variant with 6 pins, which will come in handy with certain sensor functions, and doesn't require drivers to be installed on a number of compatible platforms. If needed, PyFTDI looks like the best way to interact with this chip, as it's all-Python and consequently cross-platform.

Requirements

  • Must always be as easy as possible to install and configure
  • Python 3 for compatibility with OctoPrint 1.4 onwards

MVP

  1. What are the particulate matter measurements inside my enclosure/print area?
  2. What are the particulate matter measurements outside of my enclosure/print area?
  3. How do my measurements compare to my baseline when there is no 3D printing activity?
  4. Where do my measurements sit in the particulate matter guidelines?

MVP+1

  1. What are the VOC measurements inside my enclosure/print area?
  2. What are the VOC measurements outside of my enclosure/print area?
  3. How do my measurements compare to my baseline when there is no 3D printing activity?
  4. Where do my measurements sit compared to guidelines?

MVP+2

  1. What were the readings over time?

MVP+3

  1. Use standby mode of sensor intelligently between readings to ensure longevity of parts, as they tend to have a stated lifetime before readings lose accuracy

MVP+4

  1. Compensate sensor readings for humidity.

Post-MVP

  • Investigate options for monetisation (the basic functionality in the MVP, however, should always be free)
  • How do my filaments compare for safety?
  • Support more sensor models
  • Support more Serial UART to USB chips
  • Help buyers identify relatively safe and unsafe filament
  • Notify me when it's safe to enter the room/open my enclosure
  • Warn me when it is unsafe to be in the room/open the enclosure

Next Steps

  1. Find a Python developer who wants to work on this project with me
  2. Write stories and ACs for the MVP
  3. Design a simple sensor to UART adapter cable and get a supplier to manufacturer it
  4. Design 3D printed parts to hold the sensor(s) and adapter(s)
  5. Research into applicable VOCs and appropriate hardware
  6. Choose the best suited humidity sensor

Reference Projects

The following projects use various sensors. I've been collecting these as references for interacting with the sensors.

https://opensource.com/article/18/3/how-measure-particulate-matter-raspberry-pi
https://dustsensor.net/
https://github.com/anoochit/pm25_pms7003
https://github.com/arendst/Tasmota/wiki/Sensors-Supported-by-Tasmota
https://github.com/rpanfili/airQualityMeter
https://www.thingiverse.com/thing:2320020
https://all3dp.com/4/smart-diy-3d-printer-emission-monitor-collects-harmful-volatile-organic-compound-data-at-home/
https://hackernoon.com/how-to-measure-particulate-matter-with-a-raspberry-pi-75faa470ec35
https://learn.adafruit.com/pm25-air-quality-sensor/python-and-circuitpython
https://learn.adafruit.com/remote-iot-environmental-sensor
https://forum.mysensors.org/topic/6404/next-generation-dust-sensor-for-mysensors
https://www.rigacci.org/wiki/doku.php/doc/appunti/hardware/raspberrypi_air
https://www.balena.io/blog/build-an-environment-and-air-quality-monitor-with-raspberry-pi/
https://cassiopeia.hk/laserdust/
https://github.com/teusH/MySense/blob/f164229c49e73947e9549a855a486cfd27c5c98d/docs/pms7003.md
https://www.letscontrolit.com/wiki/index.php/PMSx003
https://github.com/pawitp/android-pmsx003

1 Like

Interesting idea. I've been making updates to the tasmota plugins that incorporate sensor data, both energy monitoring (if available) and temperature/humidity data as long as the tasmota firmware is able to support the sensors. I wonder if tasmota might support these types of sensors?

I am planning on adding a temperature/humidity sensor to my WiFi filament weighing sensor. It should be trivial to use the BME680 instead of the BME280 that I was originally planning to use.

It should also be able to support some of the other sensors. And since it's WiFi, it shouldn't be too hard to get OP to pull in the data from it.

Thanks! It looks like the PMS5003 and PMS7003 are supported, but they haven't listed the PMSA003. It sounds like it might work, though.

Which plugins might support them? This one?

I'm not entirely sure what Tasmota does. It sounds like you need 1x ESP8266 per sensor, and the ESP8266 would share the data output onward in a standardised format? Could be convenient for placing in different rooms, and also if your enclosure top is removable, but for something initial it might be more accessible to keep the cost and complexity down and plug directly into USB.

Temperature and humidity make sense I for a filament-related plugin, particularly as I'm sure a number of people will have a drybox for their filament (I will soon, sick of it snapping after a period without much printing) and will want to know their drybox is working as expected.

If this is something you might want to work on, it could be worth cloning your plugin and re-purposing the clone to support these sensors and appropriate output so it can be used alongside or independently of the WiFi weight plugin? Better than starting from scratch.

Yep, that's the one. My current development branch linked below has the integration. Of course it's currently only temp and humidity for environmental sensors. The tasmota firmware is installed on esp device (I've used mains power relays, specifically sonoff devices, and a nodemcu module successfully). The device handles the reading of data, the plugin just calls out and requests the current data and logs it.

To this, I would add that UFPs from teflon ("PTFE") are known to kill birds-as-pets ("teflon toxicosis"). The temperatures required are usually too high, practically-speaking, for 3D printers.

Although I would agree with the caution for any other type of filament, it feels to me that PLA printing is quite safe in the average environment (outside of a printer farm).

Not to be mean but it feels like the average user these days really doesn't think like a chemist/scientist.

I was asked once to create an in-the-barn milk fat measuring device for dairy farmers. I could easily create one for a scientist. But for a farmer? I passed on the project.

Short answer: don't have the user calibrate. Have the user indicate the measurements of the room they're in (square footage, for example) and behind-the-scenes you've provided a linear function to compensate.


All this said (and I applaud your efforts) I myself would just jump to the next logical step and work on filtering devices and products within this space rather than sensoring devices. In theory then, I might work up sensoring to measure the before/after for the sake of the brochure for the sales people.

To me, it's like there are two parallel universes: one in which many people in Hong Kong, say, are wearing sophisticated IoT devices which tell them how many UFPs they're breathing in and the second universe in which they're instead wearing trendy/fashionable steampunk gas masks.

1 Like

Good idea on calibration. I'm not sure at this point what calibration in this context is, so I'm still to work out how this can be approximated with a few settings options.

Filtering is definitely on my list as I slowly work to complete my enclosure, but there are some assumptions we need to unpack before switching focus from sensors to filters:

  • It is easy for the average user to discover, understand and build a suitable, reliable filter
  • The average user has their printer(s) in a (somewhat) airtight enclosure
  • The average user has a "safe" place to print parts for their filter in the meantime

I'd guess that those assumptions are false. There's also a relatively high cost (in time, money and plastic) to get from "printer on the table" to "enclosed and filtered". While trying to get to this stage, it'd be nice to be able to buy $20 of hardware, plug it in to a Pi, stick it next to the printer, and get some idea on if/when it's safe to go back in the room, and if it's worth me spending my time, money and plastic on building an enclosure and filtering system.

A parallel effort on a filter system for the masses would be great. I've struggled to find any existing public effort on this though, so thought I'd tackle it later.

I contracted for Robo 3D down in San Diego and was very interested in the topic since there were always many printers running all sorts of exotic filament at all times of the day. There was zero regard for the safety concerns and I tried to drag them kicking and screaming into that reality at least from an employee-safety standpoint.

The problem is that the HEPA standard specifies the ability to filter down to 0.3 microns - and the UFPs as measured by the researchers above ranged from 0.012 - 0.116 microns.

1 Like

Another good reason to build this before trying to reduce the emissions...

Some articles state that HEPA filters do not work for particles less than 0.3 microns:

But I'm unsure if this is true or false. Other articles suggest this is a confusion due to the HEPA standards referencing 0.3 microns. This doesn't mean they can't filter out smaller particles. Apparently the way that smaller particles move makes them more likely to repeatedly hit obstacles as they move through the filter, reducing their energy until they cannot escape. So a thick enough HEPA filter should do the trick.

But what type of HEPA filter would actually work, or work best, no one seems to know, aside from a few commercial products, where they're not sharing the details:

There's also a question of which airflow is required for a given size/density of filter, and whether re-circulation could be as effective as venting out a window.

I think the above highlights the need to measure and experiment using scientific method rather than assume that any given setup will actually work. A sensible, consolidated, open source effort to build a filter system for the community would make this move much faster, but I just can't find anything like this.

Although I encourage you, I would remind you that commercial products are in the $3000 to solve this problem. I tend not to do all the leg work so that some company out there then reaps the profits. (I'm a consultant.)

Sure, monitoring is a good idea. Good luck.

Doesn't that just highlight the importance of a public open-source effort/alternative to overpriced commercial products?

Looking back upon 2020 ten years from now, we'll probably cringe at how unsafe 3D printing was back then. Do end-users of (single) 3D printers now need filtering/monitoring? For vanilla PLA, probably not. For everything else, possibly (depending upon the airflow).

And then we flip over to the entire world of MORE THAN ONE PRINTER. We move decidedly into the realm of people with money to pay for solutions. A quickly-growing segment of this group include those who think they're going to get rich by owning/operating a printer farm. We see evidence of them showing up here every month, trying to solve big-company problems on the cheap by harvesting fruit from someone else's tree, basically.

If it were me, I'd solve the problem in a private way and then invite other non-companies to reap the rewards of that semi-open-source work. Don't get me wrong, I have over 70 public repositories on my github. But there are times when I make things like this private and only open to people who aren't running printer farms. I see that as a necessary push-back to the abuses within this open source space. /IMHO

I've updated the first post following:

  • More research and investigation
  • A more useful MVP
  • Future development beyond MVP

I've ordered the first sensor and some UART adapters too, but I've realised that I'm not going to be able to code this myself, so this is kind of blocked until I find a Python developer(s) who is interested in solving this problem with me.