Syllabus for Roster(s):

  • 20Sp CS 3501-002 (ENGR)
  • 20Sp CS 3501-002 (ENGR) Waitlist
  • 20Sp ECE 3501-001 (ENGR)
In the UVaCollab course site:   20SEmbeddedComp&Robotics

Course Description (for SIS)

ECE 3501 Spring 2020

Embedded Computing & Robotics I

Monday, Wednesday & Friday  2-3:15 PM, Thornton A120

Prerequisites: CS 111x and DLD (or equivalent)

DO NOT TAKE THIS COURSE IF YOU HAVE ALREADY TAKEN ECE 3430

What is this new embedded computing course I’ve been hearing about?

An embedded computer is the “brain” that makes a “smart system” smart.    ECE is creating two new courses in embedded computing & robotics that will use the TI Robotic Systems Learning Kit as a hardware platform.    The new course sequence will cover topics in embedded computing with a focus on robotics and are independent of the FUN sequence, so they can be started earlier in the program.  The prerequisites to the new sequence are CS 111x and DLD (Digital Logic Design, ECE 2330) and the classes are open to all majors.

The new course sequence will be piloted in 2019-2020 with the first course (Embedded Computing and Robotics I) offered in both fall and spring and the second (Embedded Computing and Robotics II) offered in the spring.   The hope is to offer both classes each semester after that.   Each class will include extensive in-class hands-on material.

 

Do I have to already know how to solder?

We will build the robot in class and use it as a platform for learning about embedded computing and robotics.  We will teach you how to solder with a practice kit.  No special hands-on skills are expected, just a willingness to follow instructions carefully. And patience.

Do I have to pay for the kit?

No.  We have received funds from the extra tuition that engineering school students pay to buy 100 kits.

What if I am a CpE or EE major?   Can I take the new sequence of classes? 

If you are a CpE or EE major and have not taken ECE 3430, you can take the first two new embedded/robotics courses (first offered in fall 2019 and spring 2020, respectively) instead of ECE 3430.  The new courses will be 3 credits each, so you will need to take 6 credits of the new embedded/robotics sequence in order to earn credit for ECE 3430.   The 2 “extra” credits may count as ECE elective credits. 

What if I am a CpE or EE major and have already taken ECE 3430?   Can I get in on the robotics fun?

If you have already taken ECE 3430 you may take ECE 3502 Embedded Computing & Robotics II in spring 2020.   This class class will cover many topics that are not in ECE 3430 for example wireless communication (wifi and Bluetooth), other sensors (proximity sensor, light sensor, environmental sensors, IMU) and we'll add a robot arm.   This course will open to a broader audience after the students in the current ECE 3501 class (most of whom are 2nd years) have had a chance to enroll.  

Will ECE 3430 be phased out?

The new sequence, if successful, will eventually replace ECE 3430, but not until changes are approved.   If you are worried about scheduling classes and meeting requirements, talk to Prof Dugan or Prof DeLong so that we can avoid disrupting your academic progress.   

 

Full Syllabus

ECE 3501 Embedded Computing & Robotics I

 

Monday, Wednesday & Friday, 2-3:15 PM  Thornton A120

TA Office Hours: 11:00 - 1:00 (Mon, Wed) in NI Lounge); 1:00 - 2:00 PM, 6:30 - 8 PM in Thornton A120 (Mon-Fri) ; 9:00am -11am (Mon-Wed) in Rice 240

Dugan Office Hours: M&W 3:30 - 4:30; T&Th 11-noon; Fri 9:30 - 10:30

 

 

 

Week

Topics & Reading

Lab/Activities

Before First Class

Buy one book

Embedded Systems: Introduction to Robotics, Jonathan W. Valvano, ISBN: 9781074544300.   This is a self-published book published in July 2019 that the author sells at his cost ($30).   It is available on amazon.

 

 

Two other reference books will be used in this course.   Both are available on the Collab site:

  1. Russell: Introduction to Embedded Systems using ANSI C
  2. Fiore: Embedded Controllers Using C

Jan 13

 

Valvano Chapter 1: Introduction to Embedded Systems & Robotics

Fiore Chapter 1: Introduction

Russell Chapter 1: Introduction

 

 

Lab 1: Running Code on the Launchpad using CCS

Complete up to (and including) sections 1.4.3 BEFORE class begins on Wednesday

Complete the rest of the lab before end of class Friday Jan 17 (demo to TA)

 

Lab 2:  Learn to use the Virtual Bench

 

Jan 20

(No Monday class)

Optional: Valvano Chapter 2:  Introduction/Review of Circuits

Valvano Chapter 3: Arm Cortex Architecture & Assembly programming

Fiore: Chapters 2-7

Russell: Sections 2.1 – 2.7

 

 

 

Lab 3:  ARM Cortex M Architecture Introduction; debugging, breakpoints, stepping

 

Assembly Quick Reference

Jan 27

Valvano Chapter 4:  Embedded Software Design

Fiore: Chapter 16

Russel: Chapters 4 & 5

(Russel & Fiore describe a different architecture – it’s good to see what is common and what is different for general embedded systems)

 

 

 

 

Lab 4: Programming, testing & debugging

 

Before class on Monday, watch the first video lecture for Module 4 of the RSLK curriculum.   

This video (4.1) will introduce the aspects of C programming that will get you started as an embedded programmer.    Note any places where you are confused.   We''l go over the contents of the video   in class on Monday because there are some embedded aspects that could use more attention.

The first part of lab 4 is to write the convert function in C (section 4.4.2) which is expected to be completed by the end of class on Wednesday.   The full lab is due Friday.

 

 

 

Feb 3

Valvano Chapter 5: Power sources and voltage regulation

Fiore: Chapters 8-10 & 15

Russell: The rest of chapter 2

 

 

Valvano Chapter 6: GPIO


Lab 5: Build, power & test the robot!

Parts list

Assembly & Disassembly instructions

Construction guide document

Have TA check jumper on launchpad before powering up

Cloud-based Test

  1. Use chrome browser
  2. It may ask you to install Chrome browser extension and download the TI Cloud Agent, do both of those.
  3. When you load the page, the webpage will check for the LaunchPad to be connected then download the test code

Lab is complete when 

  1. jumper on launchpad is checked
  2. all parts are included (esp extra castor ball and tiny rollers)
  3. plastic bags are recycled (except save electrostatic protection bag for motor board)
  4. motors are numbered (use labels in box)
  5. line sensor is attached correctly (not to interfere with battery pack)
  6. everything is checked using the cloud-based debug test

 

Lab 6: GPIO (General Purpose IO)

Wednesday: section 6.4.1

Friday: section 6.4.2 using the VB to view the signals

 

Feb 10

 

Valvano Chapter 6: GPIO

Valvano Chapter 7:  FSM

The rest of lab 6

Lab 7 part 1 (up to 7.4.2) for Friday

Lab 7 Part 2 (section 7.4.2) for Monday (by end of the day Tuesday)

State machine drawing due before class on Wednesday

 

Feb 17

 

 

Valvano Chapter 8:  Interfacing I/O

 

 

 

Lab 8: Interfacing Input & Output

Feb 24

 

Valvano Chapter 9: Managing Time

 

Lab 9: SysTick Timer

March 2

(no class on March 6)

 

Valvano Chapter 10: Concurrent Multithreading

 

 

Lab 10: Debugging RT systems using flash memory

Lab 10 up to 10.4.3 this week.

March 16 Robots on travel; class moves on-line.

Please indicate on this assignment that you have your robot and it is working OK

 Use the cloud-based test (see the entry from the week of Feb 3)

March 23

Valvano Chapter 10: Concurrent Multithreading

Watch the videos on the TI site from module 10 (there are 3 of them plus one on the lab)

Also see the supplemental slides and video recorded on March 23 (you can access the video using the "lecture capture" tab)

 

Lab 10: Debugging RT systems using flash memory

Lab 10 has 3 parts:   

Part 1 is from the week before the break (up to 10.4.3).   

Parts 2 & 3 are assignments in collab.

Part 2 is due Thursday March 26

Part 3 is due Monday March 30

March 30

Chapter 11: Serial Port Interfacing

Watch this video to learn about SPI (Serial Peripheral Interface)

(I apologize for the insensitivity of the phrasing master/slave.  Many (including me) have advocated for changing these terms to master/servant (to keep the same initials) but some terms stick around far too long.)

Watch video 11.1 and 11.4 on the TI site

Here are some supplemental notes to help you get started.

Lab 11: LCD

International students with new kits won't be able to do this lab.

 

April 6 & April 13 (both weeks)

Chapter 12: Motor Interfacing

Watch both Module 11 videos on the TI site.   These will describe how the motor driver circuits were designed and will introduce some of the physical aspects of controlling a motor.  

Lab 12: motors

The assignment is to write the software drivers that are described in section 12.4 of the lab document.   Then write a high level program that causes your robot to behave like the one in the demo (see the second lab video for module 12 on the TI site.  This is video 12.4.)

Your robot should drive in some present pattern, forward a little, maybe turn around in a circle, maybe turn left or right.   Do a dance, add some music, but constrain it within some enclosure so that the bump sensors are activated if it hits the wall.

Stop, backup,  turn and then continue forward if an edge is hit.   Do not allow the robot to keep trying to move forward if it hits a wall.   Keep the main action forward since it does not have back bumper sensors.  Don't stall the motors.  Don't keep the motors running if it's trapped.

Hold the robot off the table when you first try to run the program.  Don't let it run off the edge of the table.   Don't start at full speed.  Start slowly and increase speed as you gain confidence that it is working correctly.

Submit your code and a video of your robot dancing to some music.  At least 10 seconds long.  We may have a dance contest to determine which robot has the best moves.

April 20 & April 27

Chapter 13: Timers

Watch both Module 13 videos on the TI site (13.1 and 13.2) to learn how to use the timer for periodic interrupts and PWM.  

Lab 13: Timers & PWM

For LAb 13, what you need to do is to write the drivers in section 13.4 of the lab document.   These are basically the same as what you did for Lab 12 EXCEPT that  it uses Timer_A0 to produce the PWM outputs rather than producing them in software.   

Again, make sure that the robot detects a wall hit (bump sensor) and stops or backs up and turns so that you don't burn out the motor.

TI had to send out a correction last semester.  I think they updated the base set since then but in case not, there are corrections here.

Submit your code and work on your dance moves.    We're going to have a dance-off for anyone who has finished and submits a dance video by May the Fourth (be with you).