AirBird (Indoor Air Quality Monitor): the Bird That Could Save Your Life
by taifur in Circuits > Electronics
973 Views, 14 Favorites, 0 Comments
AirBird (Indoor Air Quality Monitor): the Bird That Could Save Your Life
What does a better world look like? To me, it looks like one where the invisible threats around us are no longer invisible.
We spend nearly 90% of our lives indoors — breathing air we assume is clean, trusting spaces we assume are safe. But silently and odorlessly, pollutants like CO₂ and Total Volatile Organic Compounds (TVOCs) accumulate in our homes, classrooms, and offices, dulling our thinking, straining our lungs, and degrading our health — all without a single warning sign. That's not the future I want to live in.
So I built one that warns us. And I made it impossible to ignore.
Meet AirBird — an IoT indoor air quality monitor housed inside a 3D-printed bird. When the air around you is clean and safe, the bird sits peacefully upright, a calm little sentinel on your wall. But when CO₂ spikes or TVOC levels climb into dangerous territory, a stepper motor silently whirs to life — and the bird slowly rotates upside down.
A dead bird. Right on your wall. You will notice.
This project was born from a simple but urgent belief: that better technology shouldn't just be smarter — it should be more human. Data on a screen is easy to dismiss. A lifeless bird is not. By translating invisible air chemistry into something visceral and visual, AirBird turns a technical reading into an emotional response — and emotional responses drive action.
That's the heart of what a better world requires. Not just sensors and data, but design that moves people — sometimes literally.
AirBird sits at the crossroads of public health awareness, accessible maker technology, and thoughtful design. It's built with tools and workflows in Autodesk's ecosystem, fabricated on a consumer 3D printer, and programmed on accessible open hardware — because a better future has to be one that anyone can build, replicate, and improve upon. Every file, every line of code, every design choice in this Instructable is open and documented so that you can deploy your own AirBird — in your child's classroom, your elderly parent's living room, your own bedroom.
Because clean air isn't a luxury. It's a right. And the first step toward protecting it is simply knowing when it's gone.
Let's build that future — one bird at a time. 🐦
[Note: this project is inspired by https://birdie.design/ and most of the text is generated by AI]
Supplies
️Hardware Components
Here's everything you'll need to build your own AirBird. All components are linked to their official product pages for easy sourcing.
Brains & Sensing
1. SparkFun Environmental Combo Breakout — CCS811/BME280 (Qwiic) : The heart of the air quality detection. This combo board measures eCO₂ (equivalent CO₂ in ppm), TVOCs (total volatile organic compounds in ppb), temperature, humidity, and barometric pressure — all over I²C. The BME280 feeds environmental data to the CCS811 to improve reading accuracy.
2. Seeed Studio XIAO ESP32-C6 : The tiny but mighty microcontroller running the show. Thumb-sized yet packed with Wi-Fi 6, Bluetooth 5.3, Zigbee, and Thread support. Its small footprint makes it perfect for fitting inside a compact 3D-printed enclosure.
Actuation
3. 28BYJ-48 5V Stepper Motor: The mechanical muscle behind the bird's dramatic rotation. This small, affordable stepper motor provides precise, controlled movement — enough to smoothly flip the bird from "alive and sitting" to "upside down and gone." Widely available on Amazon, AliExpress, and most electronics suppliers.
Power
4. SparkFun LiPower — Boost Converter : Boosts the Li-ion battery's voltage to a stable 5V to power the stepper motor and the rest of the circuit. Based on the TPS61200 IC, it supports input voltages as low as 0.3V — making it ideal for draining every last bit of life from the battery.
5. 450mAh Li-Ion Battery: The compact rechargeable power source that makes AirBird fully wireless and portable. A standard single-cell 3.7V Li-Ion cell with a JST connector pairs seamlessly with the LiPower boost converter. Available from most electronics suppliers.
Tools Required
No fancy lab equipment needed — just the standard maker toolkit!
Soldering
1. Soldering Iron A standard soldering iron (25W–40W) works perfectly for this project. You'll need it to solder header pins onto the XIAO ESP32-C6 and connections to the stepper motor driver board.
2. Solder Wire 60/40 rosin-core solder (0.8mm) is recommended for clean, reliable joints on small PCB pads.
3. Soldering Helping Hands / PCB Holder (optional but recommended) Keeps small boards steady while you solder — especially useful when working with the tiny XIAO module.
Cutting & Stripping
4. Wire Cutters / Flush Cutters For trimming excess header pins and cutting wires to length cleanly.
5. Wire Stripper To strip insulation from jumper wires cleanly without nicking the conductor.
Wiring & Assembly
6. Jumper Wires / Hook-up Wire For connecting the sensor, motor driver, and microcontroller together. 22–26 AWG stranded wire works well inside compact enclosures.
7. Multimeter (optional but recommended) Handy for verifying voltage levels and continuity before powering everything up for the first time.
️Fabrication
8. 3D Printer Used to print the bird enclosure and mounting structure. Any FDM printer works — the models were designed with standard 0.4mm nozzle and PLA filament in mind.
9. PLA Filament Standard PLA in your color of choice. Two colors are recommended — one for the bird body, one for the base — to make the visual effect more striking.
Circuit Connections & Schematic
AirBird's wiring is clean and straightforward — no complex circuitry, no breadboard rats' nest. Everything connects directly between four main components: the XIAO ESP32-C6, the CCS811/BME280 sensor, the 28BYJ-48 stepper motor driver, and the power management circuit. Let's walk through each connection.
I²C Sensor — CCS811/BME280 → XIAO ESP32-C6
The environmental sensor communicates over I²C, requiring just four wires:

💡 Note: The SparkFun combo breakout is a 3.3V device — connecting it directly to the XIAO's 3.3V rail keeps it safe and happy without any level shifting needed.
Stepper Motor Driver (ULN2003) → XIAO ESP32-C6
The 28BYJ-48 stepper motor comes with a ULN2003 driver board, which takes four control signals from the microcontroller:

The ULN2003 driver board's VCC and GND are powered from the 5V output of the LiPower boost converter, since the 28BYJ-48 motor requires 5V to operate at rated torque. Do not power the motor driver from the XIAO's 3.3V or 5V pin — the stepper draws more current than those pins can safely supply.
Power Management Circuit
AirBird uses a dual-path power system that is one of the cleverest parts of this build:
Path 1 — Motor Power (LiPower Boost Converter): The Li-Ion battery connects to the LiPower boost converter's input, which steps the battery's 3.7V up to a clean, stable 5V for the stepper motor driver. Connect the battery's positive terminal to the LiPower's VIN and negative to GND. The VOUT (5V) feeds the ULN2003 driver board's VCC.
Path 2 — MCU & Sensor Power (XIAO Built-in Charger): The XIAO ESP32-C6 has an onboard Li-Ion charging circuit, so the same battery also connects to the XIAO's B+ and B− pads. This means plugging a USB-C cable into the XIAO simultaneously charges the battery and powers the whole project — no separate charging module needed.
The Slide Switch: A small slide switch is wired in series on the B+ line between the battery's positive terminal and the XIAO's B+ pad. This gives you a clean master power on/off for the entire project without disconnecting any cables.
3D Design & Printing
One of the most exciting parts of this project is bringing the physical form to life — and it all starts with Tinkercad and a 3D printer. The entire mechanical structure of AirBird was designed from scratch using Tinkercad, the free browser-based CAD tool by Autodesk. No prior CAD experience is needed to view, modify, or remix the design!
The full design is split into four separate files, each serving a distinct purpose:
Bird Body: The star of the show — the bird that sits upright when air is clean and flips upside down when air quality deteriorates.
Electronics Enclosure: Keeps the XIAO ESP32-C6, sensor, boost converter, and battery and motor neatly tucked away and protected.
Enclosure Cover: Cover all parts and keep all the messy wiring invisible.
💡 Remix it! Since this was designed in Tinkercad, you can open the project directly in your browser, modify any part to fit your needs, and export your own version — no software installation required. The Tinkercad project link is attached above with the files.
For AirBird, everything was printed in a single filament color using standard PLA. PLA is the go-to choice for projects like this — it's easy to print, widely available, dimensionally accurate, and more than strong enough for a desk and wall enclosure. Feel free to pick any color you like — a bright yellow or white bird against a dark base can make the "dead bird" flip even more visually dramatic and eye-catching!
All parts were printed using standard recommended settings.
Printing Tips & Orientation
Getting the orientation right on the print bed makes a big difference in quality and strength:
- Bird Body — Print with the flat underside facing down. This gives the bird a clean, smooth top surface and avoids supports on visible areas.
- Base / Stand — Print flat side down. No supports needed.
- Motor Mount — Orient so the motor cavity faces upward. Depending on your design, light supports may be needed inside the cavity.
- Electronics Enclosure — Print open-face down for the cleanest interior finish and minimal support material.
Once all parts are off the printer:
- Remove any support material carefully using needle-nose pliers or flush cutters.
- Test-fit all parts together before any electronics are installed — it's much easier to sand or adjust at this stage.
- Check the motor fit — the 28BYJ-48 should slide in snugly but without forcing. If it's too tight, lightly sand the cavity walls.
- Check the bird rotation clearance — manually rotate the bird body through a full 180° arc to confirm there's no obstruction before attaching it to the motor shaft.
Assembling
With all parts printed and all components soldered according to the schematic, it's time to bring AirBird to life! The assembly process is straightforward and follows a logical order — electronics first, mechanics last, bird on top.
Step 1 — Solder Everything First
Before a single component touches the base, complete all soldering on the workbench. This is much easier than trying to solder inside a cramped enclosure later. Following the schematic from the previous step, solder:
- Header pins and wires onto the XIAO ESP32-C6
- All connecting wires to the ULN2003 stepper driver board
- Power wires to the LiPower boost converter
- Connection wires to the CCS811/BME280 sensor module
- The slide switch inline on the battery positive line
Test all connections with a multimeter before moving on. A clean bench-soldered build now means zero headaches during assembly.
Step 2 — Mount the Stepper Motor
Place the 28BYJ-48 stepper motor into its designated slot on the base first — it goes in before everything else because it sits deepest in the assembly and anchors the mechanical side of the build. Make sure the motor shaft is facing upward and centered, as the bird pulley will mount directly onto it later.
Apply a small amount of hot glue around the motor body to lock it firmly in place.
Step 3 — Place the Electronics
With the motor secured, begin populating the base with the electronics in this order:
- ULN2003 Stepper Driver Board — Place it adjacent to the motor for short, tidy motor cable routing.
- Seeed Studio XIAO ESP32-C6 — Position it with the USB-C port accessible, so you can still connect a cable for programming or charging without disassembling anything.
- CCS811/BME280 Environmental Sensor — Place it in an open, unobstructed spot so it has good airflow and can sample the surrounding air accurately. Avoid burying it near heat sources.
- LiPower Boost Converter — Tuck it in near the battery for short power cable runs.
- Li-Ion Battery — Place it last as it fills whatever remaining space is available in the base.
Once you are happy with the positioning of all components, apply hot glue generously but carefully to fix everything in place. Avoid getting glue over connector ports, the sensor's air intake opening, or the motor shaft.
Step 4 — Close the Base
With all electronics secured inside, place the base cover onto close up the enclosure. This keeps all the internals protected and gives the build a clean, finished look from the outside.
Then press the motor pulley onto the stepper motor shaft. Make sure it sits firmly and is centered — a wobbly pulley will cause the bird to rotate unevenly.
Step 5 — Assemble the Bird
The bird was printed in three separate parts for easier printing and a cleaner finish:
- Left Wing
- Right Wing
- Body
Assemble the two wings onto the body and secure the joints with a small amount of hot glue. Take a moment to align the wings symmetrically — a balanced bird not only looks better but also rotates more smoothly on the motor shaft due to even weight distribution.
Step 6 — Mount the Bird
Finally, place the fully assembled bird onto the motor pulley. This is the moment the whole project comes together — a perched, peaceful little bird sitting on its base, completely unaware of the air quality drama it's about to perform.
Give the bird a gentle manual rotation to confirm it spins freely through a full 180° without catching on anything. If it does catch, check the pulley alignment and clear any obstruction before powering on.
Programming
AirBird's brain is a clean, focused Arduino sketch — no cloud, no app, no internet connection required. It does one job and does it beautifully: read the air, and move the bird. The complete program is attached to this step for you to download and flash directly.
Setting Up the Arduino IDE
Before uploading the code, make sure your Arduino environment is ready for the Seeed Studio XIAO ESP32-C6.
1. Add the ESP32 Board Package If you haven't already, add ESP32 board support to your Arduino IDE:
- Open File → Preferences
- Add the following URL to the Additional Boards Manager URLs field:
- Go to Tools → Board → Boards Manager, search for esp32 and install the Espressif Systems package.
- Select XIAO ESP32C6 from Tools → Board → ESP32 Arduino
2. Connect via USB-C Plug the XIAO ESP32-C6 into your computer using a USB-C cable. Select the correct COM port under Tools → Port.
Installing the Required Libraries
This project uses three libraries. Install all of them via the Arduino Library Manager (Sketch → Include Library → Manage Libraries):
Search for SparkFun CCS811 and BME280 and install.
The program logic is intentionally simple and reliable — no unnecessary complexity, just clean threshold-based decision making.
💡 These thresholds are based on widely referenced indoor air quality guidelines. CO₂ above 1000 ppm is associated with drowsiness and reduced concentration, while TVOC above 150 ppb enters the "moderate" concern zone. You can easily adjust both values at the top of the sketch to suit your preferences.
Power Management — The Sleep & Wake Cycle
One of the smartest features of AirBird is that it doesn't stay awake unnecessarily. Since this is a battery-powered device, every milliamp matters — and constantly running the microcontroller, sensor, and motor driver around the clock would drain the 450mAh battery in no time. Instead, AirBird follows a disciplined sleep and wake cycle that keeps it responsive enough to catch air quality changes while sipping power as gently as possible.
Why Each Stage Matters
Wake Up The ESP32-C6's deep sleep timer fires after exactly 5 minutes, waking the chip and restarting execution from the beginning of the program. The rest of the circuit — motor driver, sensor — also powers back up and gets ready.
10-Second Warm-Up Wait: The CCS811 is a metal oxide sensor that needs its internal heater element to reach operating temperature before it can produce reliable readings. Skipping this wait would mean making decisions based on garbage data right after wake-up. Ten seconds is a minimal but effective stabilization window that balances accuracy against wasted awake-time.
Averaging 5 Readings: A single sensor reading can be thrown off by a passing air current, electrical noise, or a momentary spike. By taking 5 consecutive readings and averaging them, the code filters out these anomalies and makes decisions based on what the air quality actually is — not a freak one-second fluctuation. This makes AirBird's behavior calm and deliberate rather than twitchy and erratic.
Threshold Decision: The averaged values are compared against the CO₂ and TVOC thresholds. Only a sustained, real degradation in air quality — confirmed across multiple samples — triggers the bird to flip. False alarms from someone briefly breathing near the sensor or opening a window are naturally suppressed by this averaging approach.
Motor Runs Only When Needed: The stepper motor only activates if the bird needs to change position from upright to flipped, or from flipped back to upright. If the bird is already in the correct position from the previous cycle, the motor stays completely off. This is crucial for battery life since the stepper motor is by far the highest current-draw component in the entire build.
5-Minute Deep Sleep: Once the decision is made and the motor has done its job, the XIAO enters deep sleep — the lowest possible power state of the ESP32-C6. In deep sleep, the main CPU, Wi-Fi, and Bluetooth radios are all completely off, drawing only a few microamps. The built-in RTC (Real Time Clock) stays alive to count down the 5-minute timer and trigger the next wake-up. This single design choice extends battery life from hours to potentially days of real-world use.
With a 5-minute sleep cycle, the XIAO is fully awake for roughly 15–20 seconds out of every 300 seconds — meaning it spends over 93% of its life asleep. This dramatically reduces average current consumption and keeps AirBird running for days on a single 450mAh charge rather than burning through it in an afternoon.
Downloads
Conclusion — a Small Bird With a Big Message
AirBird started with a simple but unsettling truth — the air inside our homes and workplaces is often more polluted than we realize, and most of us have no idea when it happens. No alarm goes off. No warning light flashes. We just sit and breathe, slowly affected by rising CO₂ and invisible chemical compounds while going about our day completely unaware.
This little 3D-printed bird changes that. Not with a buzzer, not with a blinking LED, not with a graph on a smartphone screen — but with something far more instinctive and human. A dead bird on your desk is impossible to rationalize away. It demands attention. It demands action. You open a window, you step outside, you ventilate the room — and the bird slowly rights itself back to life. That feedback loop, simple as it is, is the entire point.
But AirBird is more than just an air quality monitor. It's a reminder that the best technology doesn't always shout the loudest — it communicates the most clearly. In a world drowning in dashboards, notifications, and data overload, there is something quietly radical about a device that speaks in a language everyone instantly understands, regardless of their age, technical background, or language spoken.
This project also proves that building a better world doesn't require a massive budget, a research lab, or an engineering degree. It requires curiosity, a 3D printer, a handful of affordable components, and the willingness to ask — what if this could work differently? Every part of AirBird is open, documented, and reproducible. If this Instructable inspires even one person to build their own, place it in a classroom, a nursery, or an elderly relative's living room, and take action on the air quality around them — then it has already made the world a little bit better.
Clean air is not a luxury. Awareness is the first step toward protecting it. And sometimes, all it takes is a little bird to show you when something is wrong. 🐦