the sensorbot birdhouse project


I became interested in air quality during the fallout from the Bullseye art-glass pollution episode, where a manufacturer of stained glass near my home was found emitting high levels of cadmium, arsenic, chromium, and lead into the air. Though my initial concern was industrial pollutants, I soon learned that particulate pollution (especially PM2.5) is an even bigger problem in Portland. Our particulates come from a variety of sources, especially diesel engines and burning wood in stoves and fireplaces throughout the city. We can see PM10 in the black smoke coming from a diesel engine, but those particles are large enough to be filtered by our noses and throats. PM2.5 consists of much smaller particles, invisible and odorless, which bypass our natural filtering systems, lodging in our lungs and passing into our bloodstream. Small particulates can lead to a variety of human diseases, including asthma, impaired lung function, and heart disease. California has shown it's possible to control sources of PM2.5, and I believe the problem in Portland is primarily one of political will.

Sensorbot was created with three objectives in mind: i) map the geography of particulate pollution; ii) make a hidden problem visible; and iii) build the political will to clean our air.

The Birdhouse project is focused on building a network of low cost, distributed PM10/PM2.5 monitoring devices built in the form of a birdhouse. All aspects of the project, including hardware designs, firmware, and server implementation will be open source and freely available. One goal of the project is to keep costs as low as possible so our work can be replicated elsewhere by those on a limited budget. The initial prototype cost just over $30 to build, and the server costs less than $5/month to host (which could be reduced to zero with your own hardware). There are no other licensing fees or ongoing expenses.

Others have built low-cost air quality monitoring devices (and shared their designs, which were very helpful, thank you!), but this project differs from earlier efforts in both scale and scope. Whereas other projects have focused on building a single device, Sensorbot will deploy a network of dozens of devices across Portland. Rather than providing only local access to data from the monitors, Sensorbot will make data from all devices available to researchers through a fully functional server architecture that can be replicated easily, hosted cheaply, and readily customized as needed. More on the server below.

About the birdhouse

Each birdhouse contains a particulate sensor capable of measuring the concentrations of PM10 and PM2.5 in the air (Plantower PMS5003), and has an environmental package (Bosch BME280) to measure temperature, humidity, and barometric pressure. The sensors are controlled by an ESP8266 device (similar in concept to an Arduino, but with WiFi on board). The ESP8266 collects data and sends it to a central server. Each unit has three colored LEDs (red/yellow/green) that can be used to display local air quality.

The prototype birdhouse was built from a reclaimed 1x6 fence board. This material is weather-resistant and plentiful in Portland, but other materials and designs could be substituted. The bottom of the birdhouse is open, and the sensors are positioned in such a way as to be exposed to the ambient air.

About the firmware

The firmware is the software that runs locally on each device. It is responsible for collecting data from the sensors attached to the ESP8266, and has several interesting features:

  • The on-board WiFi runs a mini web-server, allowing provisioning without physically accessing the device.
  • The firmware can be updated and managed remotely.
  • The device periodically reports its location based on visible WiFi hotspots.
  • Each birdhouse communicates with the server using the MQTT protocol, which allows bi-directional communication.

The firmware is available on the project GitHub repo linked at the bottom of this page.

About the server

Each monitoring device sends the data it collects to a central server, where it can be displayed in a variety of ways. Users will have a personal dashboard that shows the particulate concentrations their device has measured, basic weather information, and other relevant data. The server will also have a map showing measurements from all devices in the network.

The server consists of two main components:

  • Dashboard: A dashboard shows device readings, status, and location using a web-based graphical interface. The dashboard is built atop Thingsboard. Thingsboard is an actively developed, free, open-source platform for data collection, processing, visualization, and device management. Installing Thingsboard on a remote server is well-documented, and is a straightforward task for someone with Linux experience.

    The dashboard will be the primary way users view data and interact with devices on the network.
  • Microservices server: in order to expand the capabilities of Thingsboard, there is a Python-based server providing microservices, handling tasks such as determining what color LED to illuminate on each device, geolocating devices based on visible WiFi access points, and managing remote firmware updates.

Materials you will need

There are many ways to build a monitor, but we have developed two designs we like: The Birdhouse and the Bottlebot. Both models use the same major components, though the Birdhouse has an additional LED assembly that is not required on the Bottlebot. The major difference between the two, besides appearance, is the Birdhouse is as much carpentry project as it is electronics project.

Building a Birdhouse involves 2 stages: building the housing and assembling the electronics. Both are relatively simple, and neither requires any specialized skills, but both require attention to detail, a cool head, and critical thinking. In both cases, there are optional steps that can simplify the process. The biggest simplification is to omit the LED, which simplifies both the carpentry and the electronics steps, and slightly reduces cost. However, the LED can make troubleshooting easier, and makes the finished project much cooler. Who doesn't want an LED?


Coming soon... not to spoil the surprise, but you're going to need wood, nails, glue, and a couple of screws. The same stuff you'd need to build a birdhouse.


These are the materials we've found work well for us, but there are other solutions that might work just as well. Take a look at wiring diagram for a Birdhouse or the Bottlebot (in Appendix A of the assembly instructions). See the Assembly Instructions section below for details.

Note: Links provided below are for illustration only. Sensorbot does not endorse any particular vendor -- these links were chosen essentially at random. Shop around; prices change, and delivery times vary. Parts may be available locally, especially the screws and other mounting hardware. Please support your local hardware store!

  • Particle Detector Assembly:
  • Environmental Sensor Assembly:
  • CPU Assembly:
  • LED Assembly (optional, Birdhouse only):
    • 1 x common-annode 4 pin LED
    • 3 x 220 ohm resistors (110 or 330 ohms might work just as well)
    • 4 x strands 20cm Dupont cable (F-F)
    • Hot glue
  • Power Assembly:
    • 1 x 5V AC/DC power adaptor
    • 2 x female crimp terminals
    • 3 x male 2.54mm header pins (connected)
    • 2 x strands 10cm Dupont cable (M-F)
    • 1 x pushpin
  • Electrical tape

Assembly Instructions


Bottlebot Assembly Instructions

These instrucitons are presented in a Google Doc (for now), with commenting enabled. Please add comments where you feel the instructions are unclear or could be improved, and we'll incorporate your suggestions.

To help you visualize how things go together, take a look at the Bottlebot CAD model.
To see how to connect the electornics, please refer to the Bottlebot wiring diagram.


We're still creating detailed assembly Birdhouse instructions. The carpentry instructions are mostly complete, though the electronics assembly isn't. You can start with the carpentry now, as that will need to be finished before you can do any of the electronics.

Birdhouse Assembly Instructions

To help you visualize how things go together, take a look at the Birdhouse CAD model.
To see how to connect the electornics, please refer to the Birdhouse wiring diagram.

Thank You!

A special think you to everyone who has given their time, money, or expertise to make this project possible. We would be nowhere without your support.

And especially to the students who helped with building and assembly -- I really enjoyed working with you!

Cleveland Shop Class Period 1
  • Clay
  • Chase
  • Tenzin
Cleveland Shop Class Period 3
  • Owen
  • Michael
  • Ari
Pigmice Robotics Team
  • Ian
  • Josiah
  • Orion
  • Jennifer

Contact sensorbot

Contact me with any questions!


Make a contribution to help fund building the network

Sensorbot is a registered as a 501(c)(3) tax-exempt organization in the US. Our Tax ID is 82-5023412. All donations are tax-deductible.

Most people make direct contributions by check or PayPal.
Please contact us by email for details.