EdX

Embedded Systems - Shape The World: Multi-Threaded Interfacing (edX)

Embedded Systems - Shape The World: Multi-Threaded Interfacing (edX)

Build real-world embedded solutions using a bottom-up approach from simple to complex in this hands-on, lab-based course. Learn how electronic gadgets are designed, developed, and built as embedded systems that shape the world.

Class Deals by MOOC List - Click here and see EdX's Active Discounts, Deals, and Promo Codes.

This is part two of a two part sequence. In this class, we will use interrupts to design a range of real-time systems including an audio player, a data acquisition system, a control system, and an interactive game. This is a hands-on, learn-by-doing course that shows you how to build solutions to real-world problems using embedded systems.

These courses use a bottom-up approach to problem solving, building gradually from simple interfacing of switches and LEDs to complex concepts like display drivers, digital to analog conversion, generation of sound, analog to digital conversion, motor control, graphics, interrupts, and communication. We will present both general principles and practical tips for building circuits and programming the microcontroller in the C programming language. You will develop debugging skills using oscilloscopes, logic analyzers, and software instrumentation. Laboratory assignments are first performed in simulation, and then you will build and debug your system on the real microcontroller. At the conclusion of this course you will possess the knowledge to build your own arcade-style game from the ground up.
This is the fourth time we have offered this course. Since the reviews have been overwhelmingly positive we do not plan major changes over the previous offerings of the course. We did however break the large class into two smaller classes. There are eight labs in part 1 and six labs in this class. Students can pick and choose a subset of labs to achieve certification. The three labs that students found most rewarding were the hand-held video game, generating sound using a digital to analog convertor, and creating a smart object using Wifi communication.
To complete this course, you will be required to purchase a Texas Instruments TM4C123 microcontroller kit and a few electronic components. This microcontroller has a state-of-the-art ARM Cortex-M4 processor.

What you'll learn

  • Understanding of embedded systems using modular design and abstraction
  • C programming: considering both function and style
  • Build and test circuits with switches, LEDs, resistors, potentiometers, and liquid crystal displays
  • Synchronizing hardware and software input/output with switches, lights, sound, sensors. motors, and liquid crystal displays
  • Implement an I/O driver and multi-threaded programming using interrupts
  • Debug using oscilloscopes, logic analyzers, and software instrumentation
  • Learn how to read a data sheet
  • Construct a smart object and create a system as part of the Internet of Things

Prerequisites
Computer programming course in any language with exposure to variables, arithmetic, logic, loops, and functions. High school physics course covering current, voltage, resistance, and power. We expect students to have knowledge obtained in part 1 of the course including LED/switch interfacing, I/O port programming, finite state machine, microcontroller debugging, and C programming.

Course Syllabus

The best way to understand what you will learn in this class is to list the labs you will complete and the example projects we will build. You will complete each lab first in simulation and then on the real board. For each module we will design a system and you will build and test a similar system.
Module 1: Welcome and introduction to course and staff
Module 11: UART - The Serial Interface, I/O Synchronization
Lab 11. Write C functions that output decimal and fixed-point numbers to serial port
Module 12: Interrupts
Lab 12. Design and test a guitar tuner, producing a 440 Hz tone
Module 13: DAC and Sound
Lab 13. Design and test a digital piano, with 4 inputs, digital to analog conversion, and sound
Module 14: ADC and Data Acquisition
Lab 14. Design and test a position measurement, with analog to digital conversion and calibrated output
Module 15: Systems Approach to Game Design
Lab 15. Design and test a hand-held video game, which integrates all components from previous labs. Lab 15 will be graded by having students watch videos of each other's’ games.
Module 16: Wireless Communication and the Internet of Things
Lab 16. Connect a CC3100 booster pack to the LaunchPad and communicate with an access point. Lab 16 will first fetch weather from the internet, and then you will send data to the class server.

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

Introducción a la programación en C: Funciones y punteros (edX) EdX
Universidad Autonoma de Madrid

Introducción a la programación en C: Funciones y punteros (edX)

En este curso aprenderás cómo hacer programas modulares a través de funciones y punteros en el lenguaje de programación C, uno de los más utilizados. Este curso en línea te permitirá aprender más conceptos para ampliar tus habilidades de programación en el lenguaje C. Ahora resolveremos los problemas de forma modular, dividiendo el código en pequeñas partes definidas como funciones.

Self Paced
Self-Paced
Laboratorio di Programmazione (edX) EdX
University of Naples Federico II,FedericaX

Laboratorio di Programmazione (edX)

Impara a risolvere problemi complessi attraverso l'uso del computer e avvicinati alla magia degli algoritmi. Il linguaggio di programmazione è uno degli strumenti che abbiamo per interpretare e risolvere i problemi di tutti i giorni. Un linguaggio che è alla base di problemi comuni, come le previsioni del tempo o l'analisi della deformazione di una struttura di un'auto in un incidente stradale.

Self Paced
Self-Paced
Probability and Statistics in Data Science using Python (edX) EdX
University of California, San Diego,UC San DiegoX

Probability and Statistics in Data Science using Python (edX)

Using Python, learn statistical and probabilistic approaches to understand and gain insights from data. The job of a data scientist is to glean knowledge from complex and noisy datasets. Reasoning about uncertainty is inherent in the analysis of noisy data. Probability and Statistics provide the mathematical foundation for such reasoning.

Self Paced
Self-Paced
Introducción a la programación en C: Tipos de datos y estructuras (edX) EdX
Universidad Autonoma de Madrid

Introducción a la programación en C: Tipos de datos y estructuras (edX)

Aprende a programar en C, uno de los lenguajes de programación más usados. En este curso en línea adquirirás los conocimientos necesarios para comenzar a convertirte en un experto en C. Este curso en línea te permitirá aprender los conceptos básicos que te ayudarán a desarrollar las habilidades de programación necesarias para iniciarte en el lenguaje C.

Self Paced
Self-Paced
Computing in Python I: Fundamentals and Procedural Programming (edX) EdX
Georgia Institute of Technology,GTx

Computing in Python I: Fundamentals and Procedural Programming (edX)

Learn the fundamentals of computing in Python, including variables, operators, and writing and debugging your own programs. This course starts from the beginning, covering the basics of how a computer interprets lines of code; how to write programs, evaluate their output, and revise the code itself; how to work with variables and their changing values; and how to use mathematical, boolean, and relational operators.

Self Paced
Self-Paced
Computational Thinking and Big Data (edX) EdX
University of Adelaide,AdelaideX

Computational Thinking and Big Data (edX)

Learn the core concepts of computational thinking and how to collect, clean and consolidate large-scale datasets. Computational thinking is an invaluable skill that can be used across every industry, as it allows you to formulate a problem and express a solution in such a way that a computer can effectively carry it out.

Self Paced
Self-Paced
Java Programming Fundamentals (edX) EdX
Galileo University,GalileoX

Java Programming Fundamentals (edX)

Your career as a program developer starts here. Gain entry-level programing skills in Java language, and prepare yourself to handle any task that is required in any programming job. Java is one of the most in-demand programming languages today. This course is designed to provide students the basic skills and knowledge on Java.

Self Paced
Self-Paced
LAFF – On Programming for Correctness (edX) EdX
University of Texas at Austin,UTAustinX

LAFF – On Programming for Correctness (edX)

Learn to apply formal methods to systematically develop correct, loop-based programs, an essential skill for computer programmers. Is my program correct? Will it give the right output for all possible permitted inputs? Computers are now essential in everyday life. Incorrect programs lead to frustration in the best case and disaster in the worst. Thus, knowing how to construct correct programs is a skill that all who program computers must strive to master.

Self Paced
Self-Paced
Software Construction: Object-Oriented Design (edX) EdX
The University of British Columbia,UBCx

Software Construction: Object-Oriented Design (edX)

Learn how to design large software systems that solve real-world problems using object-oriented design techniques. By the end of the course, you will have a solid foundation in Java and Object-Oriented Design, as well as many software development concepts that can be applied to any language.

Self Paced
Self-Paced