EE185/EE285/CS241: Embedded Systems Workshop
(Interactive Light Sculpture)

Winter Quarter, 2024
Tuesday/Thursday 10:30-11:45

Packard 202

Instructor: Philip Levis
Instructor: Charles Gadeken
Email staff
Gitlab (project resources)

As part of celebrating the 125th anniversary of Stanford's Electrical Engineering department, we are designing, engineering and installing an interactive light sculpture in the 3-story glass stairwell of the Packard building. The sculpture will remain in Packard for 3-5 years, allowing refinement, exploration of new engineering ideas, and new interactions.

The piece, titled FLIGHT, is artistically designed by Charles Gadeken, a local light sculpture artist whose pieces have been installed in Palo Alto, San Francisco, Reno, Los Altos, Calabasas, and Robina (Australia). His most recent installation is Entwined Elder Mother in Golden Gate Park. FLIGHT represents the past, present, and future of the EE department as 76 moving shapes made of dichroic acrylic so they change color in the light; each of these Fractal Flyers is individually programmable and represents an important part of the department's past and present.

We started working on the project in the fall of 2019 and continued to make progress during the pandemic on the software (both a GUI to program the piece and firmware running on each flyer). Now that we can meet on campus again, we can get back to building the installation! You can see the current state and design of the Flyer and supporting software on the course git repository.

In Winter 2024, the class will focus on five projects. The emphasis in the course will be on engineering: designing and defining processes that predictably create artifacts that meet requirements. Because there are 76 Fractal Flyers and they will be installed for years, each one needs to be robust and require very little maintenance. The five projects are:

  • Body shell: The internals (motors, circuit board, etc) of a Fractal Flyer are covered by an acrylic shell that clips onto the flyer. The shell is vacuum formed into the right shape then laser cut into the right profile. We are casting an aluminum buck to vacuum form onto. Students will survey the acrylic types that are available and how they diffuse a Flyer's internal lights, selecting one for use. They will finalize the design and shape of the gasket that attaches to the body shell, allowing it to be slipped on and held securely, They will vacuum form the bodies. They will design and execute a workflow to laser-cut cut extraneous material from the bodies and attaching the gasket. Students on this project will learn about CAD, 3D printing, vacuum forming, laser cutting, and LED diffusion.
  • Mounting: The Flyers have to be mounted in the Packard stairwell. There are three different attachment points: the front window structure, the stairwell, and the ceiling. We have designs for the three mounting structures: they need to be verified and tested. If the designs meet the project's requirements the mounting team will build them and paint them to match the stairwell. The final design should consider not only mechanical requirements but also the need for electrical cabling. The students will design the cabling layout through the staircase from the FLIGHT server to the 76 flyers. Students on this project will learn about CAD, finite element simulation, mechanical design, ans safety.
  • Software: There are three major parts to FLIGHT's software: the firmware running on a Flyer, the Java-based control software that sends commands to the flyers, and Linux kernel configuration for naming and communicating with the flyers. We have implementations of the firmware and control software, but both need to be updated and integrated: we have yet to demonstrate the control software sending commands to firmware running on a flyer. Students working on this project will learn about graphical toolkits for art visualizations, low-level firmware, embedded Python interpreters, Linux devices, and USB.
  • Electronics: We have PCB designs for the Flyer as well as a custom USB form factor plug that plugs into a USB hub and allows the PC to communicate with a Flyer. Students in this project will manufacture and test these boards using our resources in Lab64. Working with the signaling group, they will demonstrate end-to-end control of Flyters from a PC. Students working on this project will learn about PCB manufacturing, PCB assembly, circuit bring-up and testing, power conversion, and signaling.
  • Signaling: The Fractal flyers appear to a PC as USB devices which the FLIGHT control software can send Python commands to over a serial port. FLIGHT uses a non-standard cabling setup for USB: it sends the data on a twister pair in an Ethernet cable, rather than a USB cable. There are several low-level technical details about doing this, which the signaling path needs to correctly handle such that the PC has robust, reliable connectivity with Flyers. Students in this project will bring up the signaling path, refine it, and test it on the long cables some Flyers will need. The signaling group will coordinate with the mounting group about cable lengths. Some students in this project need to have experience with signals, communication, and circuits ( (e.g., EE102B, EE114, EE133, EE142, EE156, EE179, EE242). Some students in this project need to have experience with communication protocols (CS144, EE284). Students in this group will learn about a complete communication stack, from text on a PC, to USB enumeration and endpoints, to USB framing, to USB modulation, to signal propagation, demodulation, and protocol processing.

Students fill out a questionaire in the first day of class to describe their background and group preferences and we will assign you to groups by the second day of class (Thursday 1/11).

The last 2 weeks of the quarter will be spent assembling Fractal Flyers, to bring all of the student work (past and present) together into building working demonstrations of everyone's effort. We will use this activity to motivate and explore questions about testing, longevity, and maintenance.

Course enrollment is limited to 30 students. If enrollment reaches this cap the instructors will use the questionnaire on the first day to select who may take the course. The goal of selection is to have a diverse group that has a mix of relevant skills and backgrounds.

The difference between EE185 and EE285/CS241 is the complexity of work. Students taking EE185 are expected to be an integral part of their project team and make several engineering contributions. Students taking EE285/CS241 are expected to do more design work and analysis of the tradeoffs involved.