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

Autumn Quarter, 2024
Tuesday/Thursday 10:30-11:50

Room: Hewlett 101

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.

You can see the current state and design of the Flyer and supporting software on the course git repository.

In Autumn 2024, the class will focus on five projects. The emphasis in the course is 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. In the last offering of the course, students decided on and sourced acrylic, helped bring a vacuum former up in Lab64, developed and documented a vacuum forming process, and formed a handful of body shells. In this quarter, students will vacuum form all of the bodies, laser cut the bodies out of their sheets, finalize the gasket that attaches to the body shell, test the body attachment hardware, and complete the body shells. They will also make the internal acrylic structure that the internal body LEDs hang on. Students on this project will learn about CAD, vacuum forming, laser cutting, and LED diffusion.
  • Top plate and shafts: The top plate is the sheet of rigid aluminum that all of the parts of a flyer attach to. It matches the outline of the body shell and defines the placement of all of the other components. In this quarter, students will finalize the top plate dimensions and layout of the mechanical and electrical components within the flyer. Once the top plate is finalized, students will cut them out using Lab64's laser cutters. This group will also make the 4 shafts of Flyers (two motor, two wing), which involves cutting shafts to length and drilling holes to lock the wing leaves to shaft motion. Students on this project will learn about CAD, laser cutting, mechanical precision, and mechanical design.
  • 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. In the previous offering of the class, students completed the Linux configuration, tuned a PID loop in the firmware to control wing motion, and redesigned the Java software. In this quarter, students will design and test a firmware image that allows Flyers to initialize on boot and receive commands from the Java software, complete the Java software, and demonstrate end-to-end control of a Flyer from a PC. Students working on this project will learn about graphical toolkits for art visualizations, low-level firmware, embedded Python interpreters, Linux devices, and USB.
  • Circuit boards: Every Flyer has a custom PCB that distributes power and connects its processor to its motors, LEDs, and sensors. In the previous offering of the class, students completed this board, brought it up, and tested it. This quarter, students will populate the boards, either with the pick-and-place machines in Lab64, or by working with an external contractor to do so. They will test the boards and verify they are all working correctly before installation in the Flyers. Students working on this project will learn about PCB manufacturing, PCB assembly, circuit bring-up, circuit testing, and power conversion.
  • 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. In the previous offering of the class, students were able to achieve reliable communication at up to 50 feet using only passive components. In this quarter, students will determine if we can achieve 100 feet with passive components or need to use active USB protocol processors in the signaling path. They will design, test, and build the signaling boards at both ends of the communication path (flyer and PC). Some students in this project need to have experience with signals, communication, and circuits (e.g., EE102B, EE114, EE133, EE142, EE156, EE179, EE242). 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, signal integrity, 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 9/26).

Course enrollment is limited to 25 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.