EECS 149


Lab & Project



Course Development

Labs and Projects

The lab content of this course begins in the first few weeks with some exercises designed for students to gain some familiarity with programming embedded systems at various levels of abstraction with varying amounts of infrastructure support. Contents:

  1. Logistics and Policies
  2. Lab Content and Schedule

The lab then converts to team projects. Teams of three to four students will develop a plan of action including a time line and defined division of responsibilities, and then execute a project that culminates in a live demo session and presentation, a final report, and a short video demonstration turned in. Contents:

  1. Suggested Project Topics
  2. Project Guidelines (UPDATED)
  3. Sample Project Charter (See also source file)
  4. Project - Peer Evaluation Form
  5. Lab - Peer Evaluation Form

Final Presentation Schedule

Date: December 14th, 2015
Locations: Cory 540, Cory 204

Morning Presentations (Cory 540)

10:00 Zumies
10:15 ReWrite
10:30 Gesture Controlled Arm
10:45 Heistbot
11:00 Garden
11:15 Control Improv
11:30 Smart Lighting
11:45 Project David (Gesture Controlled Inverted Pendulum)
12:00 Teleride
12:15 PI/ONG

Afternoon Presentations (Cory 204)

1:15 Tensegrity
1:30 Semiautonomous Follower
1:45 Gesture Controlled Driving
2:00 Bike Tracker
2:15 Trash Catch
2:30 MixMe
2:45 Undertake Overtake
3:00 Sensory Vest
3:15 Quadcopter
3:30 BB8
3:45 Fire Drone

Logistics and Policies

Lab Times: Mon 2-5pm, Tue 3-6pm, Wed 10 am - 1 pm, Wed 2-5 pm, and Thu 4-7 pm, in 204 Cory

IMPORTANT: Please read these lab safety guidelines and lab policy.

Lab Grading for the first few weeks:
Each lab will be graded according to the following rubric:
Pre-Lab - 10% - Must be completed before lab, handed in when you get to lab.
Lab Checkout - 45% - You have one week to complete the lab and show the TA.
Lab Writeup - 45% - Writeups are due exactly one week after lab.

Late policy:
Late pre-labs may be handed in during lab for half credit, no pre-labs will be accepted after lab session.
Late Checkout and Lab writeups will be deducted 10% for each day late. Late checkout does not extend your writeup deadline. The writeup is due a week after the scheduled lab date for each lab. You must notify the GSI at least 4 days in advance for any emergency or situation to extend the deadlines.

Lab Policies and Procedures

Lab Writeup Guideline

Lab Content and Schedule

The Labs follow Jensen, Lee and Seshia, An Introductory Lab in Embedded and Cyber-Physical Systems, Version 1.70, and updates may be made over the course of the semester. Please prepare the prelab exercises before your lab session begins.

  • Lab 1 (Aug. 31st - Sep. 4th, 2015): Interfacing with the WiiMote (slide)
    Using LabVIEW, you will establish a Bluetooth connection to a Nintendo WiiMote and send commands to the remote to stream its accelerometer data back through the Bluetooth connection. The goal of the lab is to interface with an embedded system, calibrate and measure an accelerometer, and graph the results.

    Lab Exercises: Section 2.1 (Interface to and Calibrate the WiiMote)

    • Prelab Reading: Section 2.1.1
    • Prelab Exercises: Section 2.1.2
    • Lab Exercises: Section 2.1.3

  • Lab 2 (Sep. 8-14, 2015): Embedded Development Tools (slide)
    Through the exercises in this lab, you will learn to use some common tools for programming embedded systems. The goal is to gain some familiarity with the tools by creating a basic "hello world" program using each of them. You will be introduced to the National Instruments myRIO, and you will learn how to program it using Eclipse, Xilinx SDK, and LabVIEW.

    Lab Exercises: Chapter 3 (Embedded Development Tools) (all)

    • Section 3.1 (Connect to and Configure myRIO)
      • Prelab Reading: Section 3.1.1
      • Prelab Exercises: Section 3.1.2
      • Lab Exercises: Section 3.1.3
    • Section 3.2 (Program MicroBlaze from Xilinx SDK)
      • Prelab Reading: Section 3.2.1
      • Prelab Exercises: Section 3.2.2
      • Lab Exercises: Section 3.2.3
    • Section 3.3 (Program the myRIO Processor from Eclipse)
      • Prelab Reading: Section 3.3.1
      • Prelab Exercises: Section 3.3.2
      • Lab Exercises: Section 3.3.3
    • Section 3.4 (Program the myRIO Processor from LabVIEW)
      • Prelab Reading: Section 3.4.1
      • Prelab Exercises: Section 3.4.2
      • Lab Exercises: Section 3.4.3

  • Lab 3 (Sep. 15-21, 2015): Programming Embedded Systems (slide)
    In this lab, you will program and debug "bare-metal" C code (code that executes in the absence of an operating system) and learn about the MicroBlaze soft-core processor. You will learn about interrupts and how to use them to generate tones, and you will learn how to configure an analog-to-digital converter (ADC) to sample an analog input.

    Lab Exercises: Chapter 4 (Programming Embedded Systems) (all):

    • Section 4.1 (Generate Tones in MicroBlaze)
      • Prelab Reading: Section 4.1.1
      • Prelab Exercises: Section 4.1.2
      • Lab Exercises: Section 4.1.3
    • Section 4.2 (Program an ADC in MicroBlaze)
      • Prelab Reading: Section 4.2.1
      • Prelab Exercises: Section 4.2.2
      • Lab Exercises: Section 4.2.3

  • Instructions for Labs 4-6 below has been updated. This fall we are moving to the Kobuki platform and the material below has been updated accordingly. Be sure to get the new version of the lab book and associated materials.
    Lab 4 (Sep. 22-28, 2015): Cal Klimber Navigation in C (slide) (A Guide to Deploying Software on myRIO with Eclipse)
    This lab will introduce you to the Kobuki robot platform. You will program a state machine that reads sensors and drives a robot with a basic sense of orientation while avoiding obstacles. The programming will be done in C using Eclipse on myRIO.

    Lab Exercises: Chapter 6 (The Cal Klimber) (6.3, 6.4, 6.5):

    • Section 6.3 (Program CyberSim from Visual Studio)
      • Prelab Reading: Section 6.3.1
      • Prelab Exercises: Section 6.3.2
      • Lab Exercises: Section 6.3.3
    • Section 6.4 (Navigation in C: Simulation)
      • Prelab Reading: Section 6.4.1
      • Prelab Exercises: Section 6.4.2
      • Lab Exercises: Section 6.4.3
    • Section 6.5 (Navigation in C: Deployment)
      • Prelab Reading: Section 6.5.1
      • Prelab Exercises: Section 6.5.2
      • Lab Exercises: Section 6.5.3

  • Lab 5 (Sep. 29 - Oct. 5, 2015): Cal Klimber Hill Climb in C (slide)
    Using your results from the previous lab, you will implement a state machine that instructs the robot to navigate to the top of an incline while avoiding cliffs and obstacles. You will use feedback from the accelerometer to differentiate between an incline and level ground.

    Lab Exercises: Chapter 6 (The Cal Klimber) (6.6, 6.7):

    • Section 6.6 (Hill Climb in C: Simulation)
      • Prelab Reading: Section 6.6.1
      • Prelab Exercises: Section 6.6.2
      • Lab Exercises: Section 6.6.3
    • Section 6.7 (Hill Climb in C: Deployment)
      • Prelab Reading: Section 6.7.1
      • Prelab Exercises: Section 6.7.2
      • Lab Exercises: Section 6.7.3

  • Lab 6 (Oct. 6-12, 2015): Model-Based Cal Klimber Navigation and Hill Climb (slide)
    In this lab, you will recreate the previous two labs using a model-based approach. You will design a control algorithm using Statecharts in LabVIEW, verify it using a 3D physics simulator, and deploy the solution to Kobuki.

    Lab Exercises: Chapter 6 (The Cal Klimber) (6.8, 6.9, 6.10, 6.11, 6.12):

    • Section 6.8 (Program CyberSim from LabVIEW)
      • Prelab Reading: Section 6.8.1
      • Prelab Exercises: Section 6.8.2
      • Lab Exercises: Section 6.8.3
    • Section 6.9 (Navigation in Statecharts: Simulation)
      • Prelab Reading: Section 6.9.1
      • Prelab Exercises: Section 6.9.2
      • Lab Exercises: Section 6.9.3
    • Section 6.10 (Navigation in Statecharts: Deployment)
      • Prelab Reading: Section 6.10.1
      • Prelab Exercises: Section 6.10.2
      • Lab Exercises: Section 6.10.3
    • Section 6.11 (Hill Climb in Statecharts: Simulation)
      • Prelab Reading: Section 6.11.1
      • Prelab Exercises: Section 6.11.2
      • Lab Exercises: Section 6.11.3
    • Section 6.12 (Hill Climb in Statecharts: Deployment)
      • Prelab Reading: Section 6.12.1
      • Prelab Exercises: Section 6.12.2
      • Lab Exercises: Section 6.12.3

  • Lab 7 (Oct. 13-19, 2015): Project Management (slide)
    Students will finalize project teams and project definitions, construct a plan for the project with specific milestones and assign responsibilities to project participants.

    Lab Exercises: Section 7.1 (Project Management)

    • Prelab Reading: Section 7.1.1
    • Prelab Exercises: None
    • Lab Exercises: Section 7.1.3

  • Slides of the SPIN tutorial
©2002-2018 Chess