Syllabus for Roster(s):
- 20Sp CS 3501-002 (ENGR)
- 20Sp CS 3501-002 (ENGR) Waitlist
- 20Sp ECE 3501-001 (ENGR)
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: | |
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
|
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 |
Assembly & Disassembly instructions Have TA check jumper on launchpad before powering up
Lab is complete when
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
| 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 |
|
| ||
March 2 (no class on March 6) |
Valvano Chapter 10: Concurrent Multithreading
|
|
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. |
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 | 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.
| 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.
| 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). |
|
|
|
| ||
|