Final Project
Oops I Did It Again
A curtain that insists you leave
Oops I Did It Again is a curtain that nudges you to step away when you’ve been in the same space for too long. It’s built around the experience of getting so absorbed in a project that taking a break gets pushed aside and self-care is neglected. When timers or notifications are often simply too easy to ignore. The curtain first is calm and easy to dismiss, but over time it becomes more insistent, shifting from subtle color changes to increasingly intense light patterns until it’s hard to stay put.
Britney Spears, Robert Sebree 2000
It takes the form of a 90s doorway bead curtain, pulling from personal childhood memories of early prized possessions, bought with scarce money, when objects felt important and worth protecting. That familiarity gets turned against you. The curtain can become “distressed” over time, tapping into the tendency to care for others more easily than for yourself. A kind of Tamagotchi—like experience, but one that tricks you into self-care by making you take care of it.
3D model made for week 15
The system detects when someone actually passes through and leaves the room, using motion sensing and a magnetic field sensor to distinguish a person from something smaller like a cat. If no exit is registered, it escalates; if no movement is detected at all, it settles into a resting state. Passing through is rewarded, returning is acknowledged, and over time the system logs this data locally, allowing it to be combined with mood or medication tracking to build insight into longer-term patterns.

System overview
The curtain consists of multiple flexible strands, each containing a series of small light nodes (LEDs). These are controlled by a microcontroller and respond to sensor input.
- Input: magnetic field for movement of the curtain, motion sensors to detect entering and exiting
- Processing: a microcontroller translates this input into light patterns
- Output: LEDs embedded in the strands create a dynamic, semi-transparent display
Design
For the design of my curtain I wanted to challenge myself to stay close to the original, as to evoke those fond childhood memories of having a bead curtain as prized possession I wanted to care for. I also felt the reference may get lost by making a more modern design.
3D design
All the 3D designs for this project are made by me in either Freecad or Blender. For visualization purposes I've sometimes used AI, but never for the actual CAD files send to machines.
Beads
For the beads I've the same design throughout Fab Academy, first appearing in 3D-printing week, later being used in molding and casting week and application programming. For the final beads I've changed it's shaped and size slightly, but kept the overall design the same.
Top bar
Light
The light patterns I've designed for week 15 with some help from ChatGPT.
Electronics
For the electronics I designed two boars, one main PCB housing the microcontroller and exposing all the pins needed for the sensors and lights. The hall sensor has it's own little board and communicates over I2C with the microcontroller. All designs are made in KiCad and processed for the mill using Mods.
Main PCB

Hall sensor PCB

Production
All the parts for this project have been made by me at the Fab Lab at Waag or at home; sometimes with a little help from my classmates, Irja and Henk, thanks y'll.
Beads
The 200 beads I've printed at home on my Prusa Mini+ using Fiberlogy easy pet-g.
Top bar
The top bar consists of a rail, which is made up of 6 parts holding the electronics and strands in place. These parts have been 3D printed at home using ...
Electronics
All electronics have been milled just like documented in ...
BOM
Main PCB
Main Board
| Qty | Component | Notes | Price | Source |
|---|---|---|---|---|
| 1 | Raspberry Pi Pico | Main MCU | $6 | Waag inventory |
| 2 | 4.99kΩ resistor | I²C pull-ups for SDA/SCL | $0.10x2=0.20 | Waag inventory |
| 2 | 5-pin connector/header | LED strip outputs (DATA) |
Waag inventory | |
| 2 | 3-pin connector/header | HC-SR501 connections (3V3, GND, DATA) |
Waag inventory | |
| 1 | 4-pin connector/header | TLE493D breakout (3V3, GND, SDA, SCL) |
Waag inventory | |
| 1 | 2-pin connector/header | Power split toward MCU power | Waag inventory | |
| 1 | Custom PCB (main board) | FR1 | Waag inventory |
Hall Sensor Board
| Qty | Component | Notes | Price | Source |
|---|---|---|---|---|
| 1 | Infineon TLE493D-A2B6 | I²C hall/magnetic sensor | $2 | Waag inventory |
| 1 | 100nF ceramic capacitor | Decoupling cap for TLE493D | Waag inventory | |
| 1 | 4-pin connector/header | TLE493D breakout (3V3, GND, SDA, SCL) |
Waag inventory | |
| 1 | Custom PCB (TLE493D breakout) | FR1 | Waag inventory |
Misc
| Qty | Component | Notes | Price | Source |
|---|---|---|---|---|
| 2 | HC-SR501 | External PIR modules | Waag inventory | |
| 1 | 1000µF electrolytic capacitor (≥6.3V) | Across LED power rails | ? |
Beads
Top bar
Power Requirements
The LED packaging specifies:
- Output power:
0.1 W per LED - RGB output current:
5 V 5 mA
The current specification is most likely given per RGB color channel.
Since each LED contains red, green, and blue channels:
- Red ≈ 5 mA
- Green ≈ 5 mA
- Blue ≈ 5 mA
Maximum current per LED at full white:
- 5 mA + 5 mA + 5 mA = 15 mA
Estimated power per LED:
- Power = Voltage × Current
- 5 V × 0.015 A = 0.075 W
This closely matches the stated specification of approximately 0.1 W per LED.
Total System Estimate
The final installation contains:
- 10 LED strands
- 2 meters per strand
- Approximately 200 LEDs total
Estimated maximum power consumption:
- 200 × 0.075 W = 15 W
Conservative estimate using the packaging specification:
- 200 × 0.1 W = 20 W
Required current at 5 V:
- 20 W ÷ 5 V = 4 A
Measured power consumption
To verify the LED power consumption, a current measurement was performed using 20 LEDs set to full white brightness.
- Number of LEDs tested:
20 - Supply voltage:
5 V - Measured current:
0.329 A
Current per LED:
- 0.329 A ÷ 20 = 0.01645 A
- ≈
16.5 mA per LED
Power per LED:
- 5 V × 0.01645 A = 0.08225 W
- ≈
0.082 W per LED
Estimated Total System Consumption
The final installation contains approximately 200 LEDs.
Estimated total current:
- 200 × 16.5 mA = 3300 mA
- ≈
3.3 A
Estimated total power consumption:
- 5 V × 3.3 A = 16.5 W
Recommended Power Supply
Recommended PSU specification:
- Output voltage:
5 V - Minimum current:
5 A - Recommended current capacity:
6–8 Afor additional safety margin - Minimum power rating:
25–40 W
Notes
The measured power consumption closely matches the manufacturer specification of approximately 0.1 W per LED.
Actual current draw during normal operation will likely be lower because full white at maximum brightness represents the worst-case power consumption.
Fabrication and design research
The design draws inspiration from the 90s classic bead curtain, the aim is not to get the design as close to the original, but it would be nice if the reference is obvious for those whom remember the original all too well. Below I describe what I've learned from during Fab Academy while researching how I would go about making an interactive version of this object.
The OG bead curtain for design reference
Week 5
In week 5 I explored this design direction by making a small 3D-printed bead curtain test. I was interested in the logic of solid beads becoming flexible once connected, and used the assignment to experiment with a faceted bead shape, a rod running through it, and later a simple linked mechanism that could wiggle a bit more like a curtain.

Week 8
In week 8 I learned how to design and produce custom PCBs, which is directly relevant for embedding light into the curtain. I worked on boards that could drive multiple LEDs and got familiar with the full process from schematic to milling and testing. This gave me a better understanding of how to control several light points at once, and how to think about distributing electronics across a system rather than treating it as a single unit.


Week 9
During week 9 I focused on input devices that could be useful for my final project. Unfortunately the magnetic field sensors got delayed in the mail, so for this week I played with a motion and flex sensor instead. For the motion sensor I build a little PCB with a microcontroller socket and a LED that lights up when motion is detected.

Week 10
In week 10 I focused on output devices and explored different types of addressable RGB LEDs for the curtain. Since light is currently the main output for the project, this week was important for understanding both the technical setup and the visual qualities of different LED systems.
I designed and milled a custom PCB that can control multiple LED strands independently, since the final curtain will consist of separate hanging strands rather than one continuous strip. I also experimented with different LED formats and became particularly interested in small “pebble” LEDs, which diffuse light more softly and feel closer to beads hanging in space than flat LED strips do.

Week 15
In week 15 I built a browser-based simulation of the curtain using ThreeJS and the Rapier physics engine. The goal was to prototype the movement and interaction of the final project before building the full physical version.
The simulation models strands of beads with physics-based movement and lets me experiment with different interaction and lighting behaviours. I also used it to prototype the “distress” logic of the curtain, where the light patterns gradually escalate over time until someone passes through.
Click here to open simulation in fullscreen
This week also became an experiment in working with AI-assisted coding. Rather than focusing on polished code structure, I used ChatGPT as a collaborative tool to quickly prototype physics systems, materials, lighting behavior and serial communication with a physical PCB prototype.
Week 16
In week 16 I focused on system integration for the final project. This was the moment where the curtain stopped being a collection of separate tests and became one system that needs to physically, electronically and logically fit together.
I mapped out the main subsystems: the top bar and hanging strands, the LED outputs, the motion and movement sensors, the microcontroller, power distribution and software logic. This made it clear which parts are already tested from earlier weeks and which decisions still need to be made before the final build, especially around the motion sensor, magnetic field sensor, microcontroller choice, connector system and cable routing.
I also started thinking about integration as a design problem, not only a technical one. The electronics need to live inside or near the curtain in a way that still lets the strands move, keeps the wiring manageable, protects the system from strain and leaves enough access for debugging and repair. This week helped me turn the final project into a build plan with risks, tests and dependencies instead of only an idea and a set of prototypes.

Inspiration & References
This project is inspired by projects like Random International’s Rain Room, Studio Drift and United Visual Artists and many more. What I find interesting in these works is how they use light and repetition to create a spatial experience you can move through.
Within Fab Academy there are a lot of projects that deal with LEDs, sensors and interaction, usually in the form of panels or wearables. While not directly similar, they were helpful for thinking about how to build a system with multiple light points. Examples include work like Juliana Lozano — Kinetic Curtain, Adriana Mexicano — wearable vest with proximity sensor + LEDs + optical fiber, Nicole Bakker — The Airable, wearable with LED feedback based on sensed data and Diane Walsh — felt artwork + large LED array.
Files
- Bead blender
- Top bar freecads
- Main kicad
- Hall kicad
- Code
Other ideas
Just cause it's fun, here's some ideas that didn't quite make it:
- pimp my cargo bike
- hand/body size fidget spinner for my neurodivergent babes, other stimming/pressure devices (or like a wapperman machine?!)
- cat doorbell (send to Ricardo Marques)
- e-ink keyboard
- thermal fax for smartphones
- wearable displaying satellite data