We all know that smart devices play a big role in our day-to-day lives, and that more devices pop up every day. Have you considered that there needs to be a developer behind the scenes for every one of those devices? If you’re ready to change the world by converting the envisioned gadgets of tomorrow into digital reality, join this course and take your first steps toward programming for the Internet of Things.
Learn the basics of embedded device programming by implementing various projects on Raspberry Pi and MXChip AZ3166 devices (the AZ3166 is Arduino-software compatible). Learn how to write the software that controls the hardware (temperature sensors, photo cells, and more), and get started making a difference with procedural programming.
Begin with an intro to embedded programming, exploring embedded device types and the inputs and outputs for devices and sensors. Then work your way through a series of hands-on lab projects that teach you how to develop the hardware/software interface, help you to understand C programming for embedded devices, and explore basic data management for a resource-constrained device. From there, dive into embedded solutions that use your own circuit designs to solve real-world problems.
After completing this course, students will be able to develop embedded device systems that capture and process data from analog and digital sensors commonly found in IoT solutions.
NOTE: The lab project work in this course is based on the hardware found in the Microsoft IoT Pack for Raspberry Pi and the MXChip IoT DevKit.You may want to purchase in advance of starting the course.
Some basic programming experience is required.
Some knowledge of the C programming language will be beneficial but is not required.
What you'll learn
Describe the characteristics of an embedded device
Configure the development environment for an embedded device
Create a simple program that accesses GPIO pins
Implement features of the C programming language in a constrained resource environment
Configure I/O libraries and take pinout readings
Develop a simple embedded device application
Explain how to construct simple circuits using common electrical components
Describe the sensor and device resources available in the marketplace
Implement sensors within an application using SPI and I2C
Explain how to develop a solution that uses multiple sensors
Build the circuit for a solution
Develop a software/hardware solution for a common scenario
This course is completely lab-based. There are no lectures or required reading sections. All of the learning content that you will need is embedded directly into the labs, right where and when you need it. Introductions to tools and technologies, references to additional content, video demonstrations, and code explanations are all built into the labs.
Some assessment questions will be presented during the labs. These questions will help you to prepare for the final assessment.
The course includes four modules, each of which contains two or more lab activities. The lab outline is provided below.
Module 1: Introduction to Embedded Device Programming
Lab 1: Preparing Your Development Environment
Lab 2 Developing Your First Embedded Device Application
Module 2: Data and Device Inputs
Lab 1: Building a Binary Counter
Lab 2: Getting Started with the MXChip Device
Module 3: Circuit Components and Sensor Hardware
Lab 1: Building Simple Circuits
Lab 2: Using Sensors
Lab 3: Building a Temperature Gauge
Module 4: Real-World Solutions
Lab 1: Building a Photo Cell Device
Lab 2: Comparing Digital and Analog Inputs
Engineer and Software Developer
Chris is an engineer and software developer who has been working at Microsoft in various roles for the past 15 years. Before coming to Microsoft, Chris worked for the U.S. Department of Defense designing and developing computer controlled instrumentation and robotic systems, and was a self-employed contractor doing engineering research with NASA and select engineering start-ups.
Owner and Founder
Front Range Systems
Matt is owner and founder of Front Range Systems, a software consulting company focusing on custom software solutions for its clients. Matt has over 16 years of professional development experience, and loves solving complex problems with simple solutions. He has helped organizations through mentorship and training and specializes in professional and enterprise solutions with various technologies including HTML5, AngularJS, ASP.Net, WPF and C#.
Frequently Asked Questions
Who can take this course?
Unfortunately, learners from one or more of the following countries or regions will not be able to register for this course: Iran, Cuba and the Crimea region of Ukraine. While edX has sought licenses from the U.S. Office of Foreign Assets Control (OFAC) to offer our courses to learners in these countries and regions, the licenses we have received are not broad enough to allow us to offer this course in all locations. EdX truly regrets that U.S. sanctions prevent us from offering all of our courses to everyone, no matter where they live.