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.
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.
What you need
| Category | Items |
|---|---|
| A working SchoolAir unit | The Raspberry Pi and sensor from your kit, registered as in Connect your sensor. The dock is built around them. |
| A 3D printer | Any 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. |
| Filament | PLA for all six parts. Dark grey for the dock, any colour for the vase. About 250 g in total. |
| Bought parts | A 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. |
| Tools | Small 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.
| Part | File | Material | Notes |
|---|---|---|---|
| Carriage | carriage.stl | PLA | Print first. 0.12 or 0.16 mm layers, 4 walls, sleeve down as exported. |
| Coupler | coupler.stl | PLA | Joins the motor shaft to the screw. 0.16 mm layers, 4 walls, upright. |
| Dock lid | dock_lid.stl | PLA | Flat, mechanism up. Carries the two guide posts, the home stop and the bayonet ring. 0.28 mm layers. |
| Dock base | dock_base.stl | PLA | Floor on the bed. Grilles on three sides, keyholes at the back. 0.28 mm layers. |
| Pot shell | shell.stl | PLA | Prints inverted, rim on the bed. 3 walls, any infill. |
| Planter dish | dish.stl | PLA | Open side up. Glued on the shell roof; fill with moss or gravel. |
| Stop spacer | stop_spacer.stl | PLA | Only 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
-
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_slopby 0.05, and export a fresh carriage. If it wobbles, lower it. -
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.
-
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.
-
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.
-
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.