Guides  ›  Build the flower indicator

Build the flower indicator

A 3D-printed pot whose flower stands up when the air is good and droops when it is not. Print files, parts list and the assembly sheet, for a tech class or a keen teacher.

The detailed steps below are in English for now. Translations are on the way.

What it is for: ten seconds of a classroom with a flower on the wall.
How it goes together: the parts in build order, an x-ray of the motor turning the lead screw and lifting the flower, then the three layers (vase, mechanism lid, electronics dock) and the same dock with a flat lid as the box model. Rendered from the CAD, so it always matches the files below.

Screens get ignored. A flower that visibly wilts when the CO₂ climbs does not. The indicator is a decorative pot with a small motor hidden underneath. As the air gets worse the motor turns a lead screw that lowers a rod inside the silk flower's stem, and the flower wilts past horizontal. Open a window and it stands back up. The pot sits on a square dock that houses the same Raspberry Pi and sensor as a normal SchoolAir unit, so a flower is a sensor. It can stand on a shelf or hang on two screws. What the positions mean, and why, is explained in How the flower moves.

Status: prototype, revision H. Since September 2026 the flower is driven by a small stepper motor and a lead screw instead of a servo. It runs on the bench, and the print files below change as it is refined. If you build one now, expect to reprint a part or two as revisions land, and please tell us what you found at [email protected].

What you need

CategoryItems
A working SchoolAir unitThe Raspberry Pi and sensor from your kit, registered as in Connect your sensor. The dock is built around them.
A 3D printerAny FDM printer with a 200 × 200 mm bed. The dock base is 120 mm square. The files were developed on a Bambu printer but carry no printer-specific settings.
FilamentPLA for all six parts. Dark grey for the dock, any colour for the vase. About 250 g in total.
Bought partsA 28BYJ-48 stepper motor (the 5 V version) with its ULN2003 driver board, a Tr8×8 lead screw 100 mm long, M3 threaded rod, a few M3 screws (self-tapping and grub), jumper wires, a 1000 µF capacitor, a silk flower with a hollow stem, rubber feet. The full list with quantities and where each part goes is the order list on the assembly sheet.
ToolsSmall Phillips screwdriver, a 1.5 mm hex key for the grub screws, a hacksaw for the M3 rod, a file, CA glue. No soldering.

Print files

Print orientation is already set in each file, and supports stay off for every part. Print the carriage first: it has the nut thread printed inside it, and testing it on your lead screw tells you whether your printer needs a looser thread before you print anything else.

PartFileMaterialNotes
Carriagecarriage.stlPLAPrint first. 0.12 or 0.16 mm layers, 4 walls, sleeve down as exported.
Couplercoupler.stlPLAJoins the motor shaft to the screw. 0.16 mm layers, 4 walls, upright.
Dock liddock_lid.stlPLAFlat, mechanism up. Carries the two guide posts, the home stop and the bayonet ring. 0.28 mm layers.
Dock basedock_base.stlPLAFloor on the bed. Grilles on three sides, keyholes at the back. 0.28 mm layers.
Pot shellshell.stlPLAPrints inverted, rim on the bed. 3 walls, any infill.
Planter dishdish.stlPLAOpen side up. Glued on the shell roof; fill with moss or gravel.
Stop spacerstop_spacer.stlPLAOnly for a lid printed before 29 September 2026: glue it over the lid's short stop ring. Flip it pocket-up to print.

OpenSCAD source Design notes and parameters

The whole design is one parametric OpenSCAD file. Every dimension is a named variable at the top, so a class can change the pot height, the stop height or the thread clearance and regenerate every part. OpenSCAD is free.

Build it

  1. Print the carriage and test it on the screw

    Thread the carriage onto the lead screw by hand. It should turn with light finger force and run the whole length without a tight spot. If it binds, open the OpenSCAD file, raise nut_slop by 0.05, and export a fresh carriage. If it wobbles, lower it.

  2. Print the rest

    Five more parts. The shell is the long one; start it first. Check that the coupler presses firmly onto the motor's shaft and that the M3 rod slides into the carriage's boss.

  3. Prepare the rod

    Drive rod: M3 threaded rod, 146 mm. Round the top end with a file. A sharp end digs into the inside of the stem and stalls the motor on its way up. The lead screw comes at 100 mm and needs no cutting.

  4. Follow the assembly sheet

    The assembly sheet has an exploded drawing with numbered parts and an eleven-step build order: dock electronics → sensor → motor under the lid → coupler → screw and carriage → home by hand → rod → wiring and lid into base → shell, dish and stem → lock the vase → flower on. Keep it open on a second screen; the second video at the top of this page shows the same order in motion. The step that matters most: before the lid goes in, turn the screw until the carriage rests on the stop post. That is the wilted position, and the software counts from there.

  5. Connect and power up

    Six jumper wires join the driver board to the Raspberry Pi header: the board's IN1 to IN4 to pins 11, 13, 15 and 16, its + to pin 2 (5 V) and its − to pin 9 (ground). A seventh jumper links pin 37 to pin 39; it tells the software that a flower is fitted. Register the unit as in Connect your sensor if you have not already. The flower controller that drives the motor is still in bench testing; write to [email protected] for the current install steps. Once it runs, every power-up starts with a self-test: the flower goes down to the stop, up to fully upright, then to the position for the air in the room. If it stalls on the way up, check the rod's tip and the thread first.

Running it as a class project

  • Two sessions plus printing. Session one: test the carriage on the screw, start the long prints, prepare the rod, assemble the dock electronics. Session two: motor and mechanism on the lid, shell, flower, wiring, first power-up.
  • Roles that work. A print team, a mechanics team for the motor, screw, carriage and rod, an electronics team, and one student who owns the assembly sheet and checks each step off.
  • Safety. CA glue needs supervision. The rod's end is sharp until filed. The motor is slow but strong enough to pinch a finger in the mechanism, so keep the vase on when it is powered. Nothing here carries more than 5 volts.
  • Where it gets interesting. The motion is a straight line. One turn of the screw lifts the flower 8 mm, and the motor needs 4096 half-steps for one turn. Ask the class how many steps it takes from wilted to upright, 47.5 mm, and how long that takes at 1 mm a second. Then ask how the unit finds its starting point without a switch. It drives down onto the stop on purpose, and the gearbox slips harmlessly.
  • Make it yours. The parametric file invites changes: a taller vase, a different flower, a wall-mount version. A modified design that still works is worth sending us.