Professional Documents
Culture Documents
IoT Course Outline
IoT Course Outline
Embedded Systems
In Module 1, we introduced the concept of the Internet of Things at a high level, defining the term and outlining
its implications. In this module we explore some of the details involved in the design and implementation of IoT
devices. Unlike traditional computer-based systems, IoT devices are embedded within other devices in order to
provide enhanced functionality without exposing the user to the complexities of a computer. The users interact
with the device in a natural way, similar to their interactions with any other objects in the world. In this way, an
embedded system has an interface that conforms to the expectations and needs of the users. Establishing a
natural interface requires that the embedded system interface with the physical world directly through sensors,
which read the state of the world, and actuators, which change the state of the world. In this module we will
discuss the structure of embedded systems and describe these interactions with the physical world.
Computer Telephony
The convergence begins! Computers and telephones start working together which served a great opportunity
for business in many ways. Imagine a world without caller ID or voicemail, scary isnt it? Telephony begins
to take the digital route, which brings a whole new experience in telecommunications. The digitization of
telephones wasnt all positive, for it created the possibility of hackers accessing personal information.
Wireless Technologies
Telephones eventually become a new entity which we might recognize as the cell phone. Phone mobility
revolutionizes the telecommunications market, phones are no longer apply to homes but rather to people.
Cell phones were a game changer for telephone companies.
21 videos, 1 reading
Features and Apps
Phone applications are born! This is probably the greatest contribution to the telephone industry because
now phone dont just make phone calls and take messages, but also handle finances, entertain, educate,
control your home, turn on your car and anything you can imagine! The limits of a technology have never
been more endless, if you can think it you can sure build an app for it.
7 videos, 1 reading
Arduino Environment
This module provides an introduction to the Arduino environment which is composed of three things: the Arduino
board, the Arduino IDE, and the Arduino-compatible shields together with their libraries. We first investigate the
board, discussing all of its main components, inputs, and outputs. We discuss how each component is used and
we examine the board schematic to see how they are connected. We then discuss the Arduino Integrated
Development Environment (IDE) which is used primarily to write, compile, and upload code. We survey the
interface of the IDE and discuss how to install and use it. We also examine the use of shields to extend the
functionality of an Arduino-based system. We discuss how shield libraries provide a useful abstraction to
facilitate programming.
C Programming
This module covers the basics of the C programming language which will be used to write code for the Arduino.
The course first covers basic syntax, variables, and types. Most of the basic C operators are presented.
Conditional statements (if, switch) and loops (while, for) are described. The concept of functions is presented
together with how to define and call functions. Creation and use of global variables is explained.
Arduino Programs
This module describes the composition of an Arduino program, or sketch, and the process by which it is
compiled and uploaded. The Arduino IDE is a user interface for the software tools which actually compile and
upload the program. We outline the use of these tools in the build process. We describe the basic structure of a
sketch, including the use of the setup() and loop() functions. The main interface of an Arduino is through its pins,
so we describe how to access those pins from a sketch.
UART
This module is an introduction on debugging embedded software on an Arduino. We discuss the basic
debugging requirements: controllability and observability. The debugging environment available for an Arduino
UNO is limited, so we describe how to use the UART communication protocol to gain controllability and
observability. We present the use of the Serial library to communicate with the Arduino through the serial
monitor.
Module 1
IoT devices involve a combination of software and hardware. This module provides background on the basics of
hardware design and wiring needed to build useful circuits. This module describes the functions of basic passive
components and describes how to use them in simple circuits. This module also describes how to wire circuits
together using a breadboard. The goal of this module is to enable students to design and implement the circuits
they need to interact with basic sensors and actuators.
Module 2
This module introduces sensors and actuators and discusses how to interface with them. Well examine different
classes of sensors and actuators. For each type of sensor/actuator, well examine the circuitry needed to
interface with it. Additionally, well take a look at the Arduino code needed to communicate with the sensors and
actuators.
Module 3
This module introduces the use of software libraries with an Arduino sketch. One of the best aspects of the
Arduino environment is that the use of good libraries allows a programmer to use complicated hardware without
dealing with the complexity. The Arduino environment is supported by many libraries and this module examines
the use of several of the more common libraries that allow the use of hardware peripherals in the
microprocessor.
Module 4
In this module well examine Arduino shields and how they are used to extend the capabilities of an Arduino-
based system. Shields are printed circuit boards that are stacked on top of the Arduino together with libraries
that enable the new hardware to be used through an Arduino sketch. Well describe the benefits of shields and
their basic construction as well as the use of libraries in interfacing with each shield. This module also describes
how to connect your IoT device to the Internet using shields. We focus on an Ethernet shield in order to establish
a wired network connection, and a WiFi shield to establish a wireless connection.
Module 1
This module describes the basic functionality the Raspberry Pi B+ board. I'll describe how to set up the board,
configure it, and use it. An important point differentiating Raspberry Pi from the Arduino platform which we have
talked about previously is that Raspberry Pi uses an operating system. I'll describe some of the implications of
an operating system on the behavior of the Raspberry Pi as an IoT device.
Module 2
The Raspberry Pi is typically installed with a Linux-based operating system, so we present the basics of Linux
and its use. We describe some of the main features including navigating the file system and managing
processes. We describe the text-based user interface through the shell and we overview the graphic user
interface which is the default with the Raspian Linux distribution.
Module 3
We present the basics of the Python programming language to prepare you for programming on the Raspberry
Pi. Many languages can be used but Python is the most convenient for the Raspberry Pi because convenient
APIs are provided for basic operations such as controlling the pins. Python is a powerful language with useful
features that we will present so that you can use these features to control the Raspberry Pi.
Module 4
In this module we describe how to communicate with devices through the pins of the Raspberry Pi. We examine
the RPi.GPIO library which provides Python functions used to access the pins. We discuss how to set up the
pins, apply digital voltages, and generate Pulse Width Modulated signals. We also describe the Tkinter Python
library and show how it can be used to access pins through a graphic user interface
Module 2
This module introduces the networking socket interface that is used to transfer data across the network
programmatically. An essential aspect of the Internet of Things is for your IoT device to send and receive data on
the Internet, and the socket interface is key to enabling that. We describe how to use socket in Python to act as
both a client and a server.
Module 3
This module focuses on how to have your Raspberry Pi interact with online services through the use of public
APIs and SDKs. Many interesting and useful services are available in the cloud and this module describes how
to write code that accesses those services. We define what an Application Programming Interface (API) is and
what a Software Development Kit (SDK) is. We present some API examples and we show the use of the Twitter
API in detail using the Twython package.
Module 4
In this module we show how to use the Raspberry Pi to interface with more complicated sensors and actuators.
We explore the use of the Raspberry Pi camera module and the use of a servo. The Raspberry Pi camera
module is used through the picamera library, which we describe. Servos are controlled by generating pulse width
modulated signals and varying their pulse width using library functions.
Get Started
This section will answer questions you might have about the project assignment, the grading rubric, and what
you can expect in the upcoming weeks together.
Do you want to develop skills to prototype mobile-enabled products using state-of-the-art technologies? In
this course you will build a hardware and software development environment to guide your journey through
the Internet of Things specialization courses. We will use the DragonBoard 410c single board computer
(SBC). This is the first in a series of courses where you will learn both the theory and get the hands-on
development practice needed to prototype Internet of Things products. This course is suitable for a broad
range of learners. This course is for you if: You want to develop hands-on experience with mobile
technologies and the Internet You want to pivot your career towards the design and development of
Internet of Things enabled products You are an entrepreneur, innovator or member of a DIY community
Learning Goals: After completing this course, you will be able to:
Configure at least one integrated development environment (IDE) for developing software.
Make use of git, adb and fastboot to flash multiple OS and repair bricked boards.
Program GPIOs (general purpose input/output pins) to enable communication between the
DragonBoard 410c and common sensors.
Write data acquisition code for sensors such as passive and active infrared (IR) sensors,
microphones, cameras, GPS, accelerometers, ultrasonic sensors, etc.
Write applications that process sensor data and take specific actions, such as stepper motors, LED
matrices for digital signage and gaming, etc.
Have you wondered how Things talk to each other and the cloud? Do you understand the alternatives for
conveying latency-sensitive real time data versus reliable signaling data? Building on the skills from the Sensing
and Actuation course, we will explore protocols to exchange information between processors. In this course, you
will learn how VoIP systems like Skype work and implement your own app for voice calls and text messages.
You will start by using the Session Initiation Protocol (SIP) for session management. Next, you will learn how
voice codecs such as Adaptive Multi Rate (AMR) are used in 3G networks and use them for voice traffic in your
app. Learning Goals: After completing this course, you will be able to:
Implement session initiation, management and termination on your DragonBoard 410c using SIP.
Compare and contrast narrowband and wideband codecs and experience the voice quality differences
between them.
Implement and demonstrate VoIP calls using the Dragon Board 410c.