This is a Swiss Army Knife tool for understanding local air quality, with a focus on the indoors.
It's remarkable what air composition sensors are available on SparkFun, Adafruit, Mouse, and DigiKey these days. Further, the USA's EPA publishes a lot of resources for planning, designing, building, and using systems based on them to answer a wide variety of air quality questions.
I'm still working on what I'm asking and how to gather data, but I have a decent spread of sensors so far--including two with built-in lasers!
Please note that the firmware source link is not yet public. I need to vet the modules I've checked in to ensure they're properly licensed for my use case, and I may switch to Git submodules so I'm not checking others' code into my repo.
I2C ain't so bad: simple is as simple does. Vendor implementations and programming models? Those are...more of a challenge.
To change I2C bus speeds in Arduino environments, it turns out you have to set the speed before Wire.begin() is called. If you want to change speed, you have to call Wire.end(), change, and call Wire.begin().
I wrote up some other challenges I hit on my blog: