Air Quality Monitor

October 02, 2018
Category: Mini-Projects

I built an air quality monitor using the Adafruit ESP32 Huzzah Feather and enviromental sensors: BME680 & CCS811. I mostly wanted to try building an IOT backend to store all the data and play around with a WiFi-enabled arduino. I also 3D printed an enclosure+lid for the system so that the sensors are protected during transportation.

I neatly organized my breadboard wires for a low profile finish
I developed a 3D printable breadboard cover on OpenSCAD
The final enclosure with the lid on the bottom

When I was about to develop the visualization backend part of the system, I found the ThingSpeak service to be extremely helpful. It was so easy to setup and use that I finished the project 2 months sooner than I anticipated.

I was happy about the customization of the visualizations and the data channel system on ThingSpeak. Things like how to store data, transfer protocol, retrieving data in real-time, a visualization front end, designing a website, etc was solved in a mere half hour of tinkering with their services. Not only that, but ThingSpeak also made it extremely easy to work with on Arduino and Matlab visualizations with their ThingSpeak Library. Overall I am quite happy with how the visualizations turned out and the high level controls that manage my IoT data on ThingSpeak.

Check out the repository here:
Air Quality Monitor (GitHub)
ThingSpeak Channel

Temperature & Humidity (5 Day)


ThingSpeak mini-review
I do have some problems with ThingSpeak though. Initially, organizing my data channel’s public view page was really annoying. Somehow dragging visualizations and views did not save immediately for me. So I had to try many times to get the layout that I wanted.

Next the Matlab visualizations should be more optimized for web browsing. Currently I am loading 5 days of data at once. At a rate of one sensor update per 3 minutes, ThingSpeak currently appears to load 2400 data points per chart. This makes browsing on mobile really slow and unresponsive. There’s not enough pixels on the page per data point anyways. So it would help that the server does some interpolation for large datasets.

Again, I do like that most of the hard part about online storage and having prebuilt functionality for presenting IoT data very easy to do. I am hoping they can make the platform more mature in the future.

Demo