Instructor Information

Doug Ferguson

Cell Phone: 443-326-9161

Course Information

Course Description

This course examines the hardware and software technologies behind real-time, embedded computer systems. From smart kitchen appliances to sophisticated flight control for airliners, embedded computers play an important role in our everyday lives. Hardware topics include microcomputers and support devices (e.g., flash, ROM, DMA, timers, clocks, A/D, and D/A), as well as common applications (e.g., servo and stepper motor control, automotive sensors, and voice processing). Software topics focus on unique aspects of embedded programming and include interrupts, real-time control, communication, common design patterns, and special test considerations. The course also explores the unique tools that are used to develop and test embedded systems. Labs, beginning with using Bare Metal and Free RTOS on Arduino for simple devices and culminating with using Linux on Raspberry-Pi for Quad-Copter flight control, are developed.

Course Goal

The goal of this course is to provide both practical and theoretical information about the field of real-time embedded programming.

Course Objectives

  • Select a microcontroller
  • Specify the necessary peripherals
  • Choose a compatible software development environment and real-time operating system
  • Analyze timing constraints, and Design, Build, and Fly a QuadCopter

When This Course is Typically Offered

This course is offered on-line in the Spring and Fall

Syllabus

  • Simon-Hardware Fundamentals
  • Simon-Advanced Hardware Fundamentals
  • Simon-Software Control with Interrupts
  • Simon-Embedded Software Architectures
  • Simon-Real Time Operating Systems
  • Simon-RTOS Services
  • Simon-Basic Design Using a Real-Time Operating System
  • Simon-Embedded Dev Tools and Debugging Techniques
  • Molloy-Raspberry Pi Basics
  • Molloy-Interfacing and Programming
  • Molloy-Interfaces to I/O and Buses
  • Molloy-Real Time Interfacing using the Arduino
  • Molloy-Images, Video, and Audio
  • Molloy-Cross Compilation in Eclipse

Student Assessment Criteria

Project 1 - Morse Code LED 6%
Project 2 - Transmit Temperature 6%
Project 3 - Measure and transmit fan speed 6%
Project 4 - Control propeller speed 6%
Project 5 - Transmit and receive Controls 6%
Project 6 - Receive Inertial Measurement Unit 7%
Project 7 - Calibrate PID 7%
Project 8 - Remote Controlled Flying 7%
Project 9 - Flying with Video 7%

Projects including Requirements, Design, Implementation, and Output are submitted to Blackboard as a single .pdf and demonstrated via providing hyperlink in pdf to a video you record. (PdfCreator is useful) 

Each module has a quiz and discussion and there are 10 projects which build to a flying quadcopter

10% off when late and per week late on projects unless medically or otherwise excused, max of 30%

Computer and Technical Requirements

Working knowledge of C/C++, Java or Python or whatever language you select to use to develop

The Arduino is used for the first set of projects and is programmable in C or C++ and many elect to also use it on their QuadCopter
The Raspberry PI runs Linux, is used for later projects and is programmable in a variety of languages

Participation Expectations

Students decide whether to work on projects alone, in pairs, or groups of three, but as this is an online class you might decide to work alone if you are not geographically near any other student

Textbooks

Textbook information for this course is available online through the MBS Direct Virtual Bookstore.

Course Notes

There are notes for this course.

Final Words from the Instructor

This course teaches how to program Real-Time embedded systems. Students are provided a QuadCopter Kit, Legs, and Camera for the major projects, but students will need to procure an Arduino starter kit which has parts for the initial projects, and a Raspberry PI complete starter kit which has a strong plastic case for flight. For the Arduino and RPi, a starter kit is available from lots of places, but Amazon or AdaFruit are convenient. Term specific material, homework submittal, and grading is on the Blackboard site at blackboard.jhu.edu.

The parts for projects are provided by JHU EP and individually mailed to each student and includes spares for some parts known to regularly break.  At the end of the semester you either need to return the still operational parts back to me or pay JHU EP for the cost of the parts, which is $267.75 as of 2019-08-01.
 
Two textbooks are used for the course
Simon, "An Embedded Software Primer"
Molloy, "Exploring Raspberry PI"

(Last Modified: 08/20/2019 10:35:28 AM)