Skip to content

16 - System Integration

Summary

This week the assignment was to design and document the system integration for my final project, Still Here.

Approach

For this week I want to move from separate tests and prototypes toward one complete system plan. Instead of only listing parts, I need to explain how the physical curtain, electronics, sensors, code, power and interaction logic fit together.

The goal of this page is to document the integration decisions before building the final version, so I can spot missing pieces, risky assumptions and dependencies between subsystems early. Mostly this week has shown me how it's decision time and I should really focus on getting the details clear ASAP.

Assignment

  • Design and document the system integration for your final project

Final project recap

Still Here is a curtain that nudges you to step away when you have been in the same space for too long. It is built around the experience of getting so absorbed in a project that taking a break gets pushed aside and self-care is neglected. Timers or notifications are often too easy to ignore, so this project turns the reminder into something physical: a doorway object you have to pass through.

Britney Spears, Robert Sebree 2000

The curtain first is calm and easy to dismiss, but over time it becomes more insistent. It shifts from subtle color changes to increasingly intense light patterns until it becomes hard to stay put. It takes the form of a 90s doorway bead curtain, using a familiar decorative object as the base for an interactive system. Passing through the curtain becomes the action that resolves the reminder.

The main system parts are:

  • Physical structure: a doorway curtain made from hanging strands and bead-like LED nodes
  • Input: sensors that detect presence, passage through the curtain and/or movement of the strands
  • Processing: a microcontroller that tracks state and translates sensor input into behavior
  • Output: addressable RGB LED strands that show calm, warning, distressed and reward states
  • Power: an external power supply for the LED strands and regulated power for the controller and sensors
  • Software: embedded code for reading sensors, controlling LEDs and managing the interaction logic

System diagram

All diagrams on this page are made by Codex

Subsystems


Physical structure

  • TODO: design top bar

  • Planned doorway size: 90x200
  • Number of strands: 10
  • Beads or LED nodes per strand: 20
  • Distance between LEDs: 10cm
  • Mounting method: top bar will be either laser or 3d printed based on the actual 90s bead curtain top bar but with spaces for pcb mounting, sensors and cable management
  • Cable routing: needs to be decided
  • Mechanical strain relief: 3d printed teeth holding the strands in place


Electronics control

  • TODO: decide whether a level shifter is needed

  • Microcontroller: Raspberry Pi Pico
  • Board version: Raspberry Pi Pico or Pico W, depending on availability
  • Number of available LED data pins: 10 pins needed, one for each strand
  • Sensor pins: 2 or 3 pins reserved for motion and curtain movement sensors
  • Communication/programming interface: USB, programmed with MicroPython
  • Important limitations: Pico GPIO is 3.3V while the LED strands run on 5V, so I should test whether the data signal is reliable and add a level shifter if needed.

Inputs

  • TODO: decide motion sensor
  • TODO: test magnetic field sensor
Input question Sensor / method Location Status
Is someone on which sides of the curtain? motion top bar final decision time
Are the strands moving? magnetic field top bar needs testing


Outputs

  • LED type: 5V WS2812-compatible addressable RGB LEDs
  • Voltage: 5V
  • Number of strands: 10
  • LEDs per strand: 20
  • Total LED count: 200
  • Data line plan: one pin per strand
  • Expected maximum current: 12A if all 200 LEDs are on full white at 60mA each
  • Brightness limit in software: limit to 30-40 percent brightness for normal use

Power

  • LED voltage: 5V
  • Controller voltage: 5V
  • Sensor voltage: 5V
  • Maximum theoretical current: 200 LEDs x 60mA = 12A
  • Planned brightness/current limit: 30-40 percent, so around 3.6A to 4.8A for the LEDs during normal use
  • Selected power supply: 5V 15A minimum, 5V 20A preferred if available for extra margin
  • Ground connection strategy: connect LED ground, Pico ground and sensor ground together
  • Cable thickness / connector choice: use thicker wire for the main 5V and GND distribution, then split into lighter wires per strand

Power calculation:

Part Amount Current per part Maximum current
LEDs 200 60mA 12A
Raspberry Pi Pico 1 about 100mA 0.1A
Sensors 2 or 3 estimate 50mA each 0.15A
Total theoretical maximum about 12.25A
With margin 15A minimum

For one strand this means:

20 LEDs x 60mA = 1.2A maximum per strand

In normal use the LEDs should be much lower than this, because the software will limit brightness and the curtain will not run all LEDs at full white. Still, designing for the maximum helps prevent overheating, voltage drop and random resets.


Software architecture

The software will be running on MicroPython, either using an existing libraries or writing my own for the sensors and LEDs. One motion sensor and the LEDs code has been tested.

  • TODO: decide libraries and dependencies

Integration plan


Interfaces between subsystems

  • TODO: decide on connectors
From To Connection Notes
Power supply Power distribution TODO TODO
Power distribution LED strands TODO TODO
Power distribution Microcontroller TODO TODO
Microcontroller LED strand x TODO TODO
Sensor 1 Microcontroller TODO TODO
Sensor 2 Microcontroller TODO TODO

Physical integration

  • TODO: design top bar

  • Where the control board will live: TODO:

  • How it will be mounted: TODO:
  • How wires are hidden or organized: TODO:
  • How the curtain remains flexible: TODO:
  • How the system can be opened for repair: TODO:
  • How the USB/programming connection remains accessible: TODO:

Risk list

Risk Why it matters Mitigation / test
LEDs draw too much current Could overheat wires or crash the system Use a 5V 15A minimum power supply, add a fuse and limit brightness in software
Voltage drop over long strands LEDs may flicker or change color Feed power through a thicker distribution line and test voltage at the end of the strands
Pico data signal is too low for the LEDs The Pico outputs 3.3V logic while the LEDs run on 5V, which may make the LED data unreliable Test one full strand from the Pico before final assembly and add a level shifter if the signal is unstable
Sensor readings are noisy The curtain may trigger at the wrong moment or miss someone passing through Log raw sensor values first, test both sides of the curtain and add thresholds, timing filters or averaging in software
Motion sensor cannot tell direction The project needs to know whether someone is leaving or returning, not only that movement happened Use two sensors or combine motion sensing with curtain movement sensing, then test real walk-through scenarios
Magnetic field sensor does not clearly detect strand movement The sensor may not be sensitive enough or may need a very specific magnet position Test magnet placement on one strand before designing the full top bar
Wires break from movement Curtain strands will be touched, pulled and moved often Add strain relief at the top bar, avoid solder joints in moving sections and test by repeatedly moving one prototype strand
Connectors become confusing during assembly Ten similar LED strands and multiple sensors can easily be plugged into the wrong place Label connectors, keep strand order consistent and document the pinout before final assembly
Code becomes hard to debug once assembled Integrated systems hide errors, especially when power, sensors and LEDs fail at the same time Test each subsystem separately first, keep serial debug output and add simple test modes for LEDs and sensors
Physical design blocks maintenance Repairs become too difficult if the electronics are sealed inside the top bar Make the control board and power connections accessible, and design the top bar so it can be opened without destroying it

Testing plan

Bench tests

  • Test one LED strand
  • Test all LED channels
  • Test each sensor separately
  • Test power supply under load
  • Test shared ground and signal stability

Integration tests

  • Run LEDs and sensors at the same time
  • Test state transitions with simulated input
  • Test state transitions with the physical curtain
  • Test long-running behavior
  • Test recovery after reset or power loss

User / interaction tests

  • Does the curtain notice someone nearby?
  • Does it correctly detect someone passing through?
  • Does the escalation feel understandable?
  • Does the reward state feel clear?
  • Is any part annoying, unsafe or too fragile?

Decisions to make

  • Final sensor combination
  • Connector system
  • Mounting and enclosure design
  • Brightness limits
  • Final interaction timing

Leftovers previous weeks

  • week 11 individual assignment
  • week 14 documentation
  • nueval feedback henk
  • nueval feedback take