EE 285/CS 241: Embedded Systems Workshop

Autumn Quarter, 2017
MW 10:30-12:20, Herrin Hall (Biology), Rm T185
Instructor: Mark Horowitz
  • Office hours: TBD
  • Instructor: Philip Levis
  • Office hours: TBD
  • TA: Shane Leonard
  • Office hours: T/Th 6-7 pm, Fri 10-11 am, Lab64

  • Staff email:

    EE285 (CS241) is a project-centric course for students who want to learn about building embedded systems. Over the quarter, each student builds a display for a bicycle wheel, which displays images or colorful patterns as the wheel turns. Students build the electrical system, enclosure, and LED strips along wheel spokes. They program an embedded computer to control the LEDs in desired patterns based on the wheel's rotational speed. Each student builds their own wheel display, but do so working together in teams throughout the quarter.

    The class is limited to 20 students. If it is significantly oversubscribed, we'll ask students to fill out a simple survey on the first day of class and select who can take the course based on background and preparedness. Since this (like most) embedded system involves a mix of hardware, software, and mechanical design, we will try to balance the course so each area has some students with that expertise.

    Course material includes:

    • Interrupts and concurrent programming
    • Deterministic timing and synchronization
    • State-based programming models
    • Filters, frequency response, and high-frequency signals
    • Low power operation and energy budgets
    • Bus protocols and tradeoffs
    • Operating systems
    • Part selection, hardware/software tradeoffs
    • System design, PCB design
    • 3D printing and mechanical design

    The prerequisite for the course is CS107 (or equivalent), that is, comfort with C, and PHYSICS 23 (or equivalent), that is, understanding electricity and the basics of electrical circuits. It is intended to be accessible to engineering students broadly from the entire school, including both undergraduates and graduate students. The course would count as a general CS elective. The course meets twice a week for 2-hour lab sessions in lab64 (the EE Maker lab).

    The educational goal of the course is for students to learn how to design, build, and test embedded systems from hardware to software. The wheel display uses a Teensy 3.6 as its core processor.


    Here is the schematic for the printed circuit board.

    Serial debugging

    To use the serial debuggers, connect the serial GND to Teensy GND, and serial RX to Teensy TX (pin 1). You will need to remove the jumper connecting the serial RX and TX pins. To listen to serial output from the Teensy, plug the serial dongle into your laptop, select the dongle in the VM Devices/USB menu, and then run:

    tockloader listen

    in the terminal. You should see output from the printf statements made from within your code.

    3D CAD models for enclosure

    For those interested in viewing or modifying the enclosure, here are the CAD models as STL (printable) and SLDPRT (SolidWorks).

    Finishing cutting and soldering

    For those students who did not finish cutting the polycarbonate and/or soldering the LED strips, please come by TA office hours this week. We will have the laser cutter available during the Friday morning office hours. If you would prefer to use scissors, here is the drawing of the design--the strips are 10 inches tall and 1 inch wide.

    Assignment 3: Animations (due Oct 23)

    The instructions for Assignment 3 have been posted here.

    Lab64 Safety and Access

    If you haven't done so already, make sure to read the Basic Safety Slides ASAP and email the course staff with your name, student ID number, and a question or comment that demonstrates you understand the safety material. Always remember to work with a buddy and turn off soldering irons!

    Assignment 2: Animations (due Oct 16)

    The instructions for Assignment 2 have been posted here.

    Assignment 1: Getting started

    The instructions for Assignment 1 have been posted here. The first section is just installing the prerequisite software, so you do not need to wait for a Teensy to complete the first portion of the assignment.