Introducing 

Prezi AI.

Your new presentation assistant.

Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.

Loading…
Transcript

IoT Review

CSE222: IoT

Motivation & Goals

Approach

Big Picture & Semester Review

Motivation & Goals

Possible Approaches

Choice

Goals

Possible Approaches

Focus on single aspect of IoT

(e.g., networking)

Survey of many topics

(breadth, but not depth)

Depth

(but not breadth)

Choice

Focus on development Applications of IoT

(depth approach) from a C.S. perspective

Why:

1. Exposure to many contemporary topics

2. Accessible & Exciting opportunities for you

Goals

Form a basic understanding of most major aspects of basic IoT systems

Goals

Approach

Challenges

Content

Studios

Assignments

Project

Quizzes

Challenges

Challenges

There are few existing IoT texts/course syllabi

Hardware (can't do traditional submission)

Topics cover many areas in C.S. & Comp.E.

All "Platforms" have serious flaws/limitations

Particle is "commercial ready"

APIs and documentation are acceptable

Connectivity compromises exist with most platforms

Content

Content

There are significant outside resources for technical content: Khan Academy, AdaFruit, MDN, etc.

Try to select a set of topics that allows construction of "real-world" IoT application by a person/small team.

Try to minimize languages/tools

Try to focus on real-world principles

Studios

Structured exploration of topic

Introduction of topic prior to assignment

Post studio summaries were intended to correct errors and provide review

Show some shortcuts / techniques

Assignments

In-depth exploration of topic.

Attempt to mimic development approaches used in real products

Attempt to introduce some software engineering tools and concepts

Project

Independent project

Opportunity to demonstrate significant mastery of concepts

Quizzes

Quizzes

Only required independent assessment

Tool to probe aspects of:

Breadth of knowledge

Depth of understanding

Domain specific critical thinking

Ability to generalize

Paced to:

Diffuse study

Coerce review soon after content

Philosophy

Philosophy

Traditional lectures are not effective for many students

Active learning / learning by doing

Social learning has been shown to have

some benefits

Some degree of self-learning from diverse resources is essential beyond academia.

Favor "broad exposure" to mastery

(for this course)

Include lightweight intro to many concepts needed for careers and larger projects

Module: IoT Intro

Module: What is IoT

Goal:

Basic Course Skills: Markdown & GitHub

Exposure to breadth & variety of IoT

Studio: Defining IoT

Studio: IoT Intro

GitHub & Markdown Intro

IoT is poorly defined

Covers many different topics / technologies

Goal was to discover some of the diversity of IoT

(Potentially giving some insight into potential projects)

Studio:

IoT Games

Studio: IoT Games

Goals: To see some of the breadth of IoT

Identify major aspects of IoT systems:

Things

Services

Interaction with IoT Systems:

Actions (by Humans)

Feedback (to Humans)

Evaluate IoT Systems:

"Criteria" for measuring potential benefit

Module:

Web Tech

Module:

Web Tech

Goal: "Minimial Viable Tools" for IoT

Introduce IoT with as few new skills as possible to cover full IoT system.

Cover significant, contemporary tools.

Studio: HTML+CSS

Studio: HTML

Development of a UI for an RGB LED

Software Engineering concepts:

User Stories are a way to identify/document features and needs

Usage scenarios can capture fine details of specific interaction

Paper Prototypes can help test user interaction early in development

Tools

Browser developer tools

Common UI Elements

Common UI Elements

Feedback: Display values (colors) & Status

Human Actions: Controls for interaction (on/off buttons, color picker/sliders)

Assignment:

UI For Garage

Assignment:

HTML

(UI For Garage)

Goal:

Foundation for an ongoing "real" project

Introduce concepts for project

Prototype features for later:

Login/Accounts

Basic Controls

Support for "advanced" features

Important contemporary concepts:

Responsive Web Design concepts

Tools:

HTML Validator

Studio: JavaScript

Goals:

Use most prominent web language.

Emphasize "event driven programming"

(Other examples: event listeners, cloud function call backs, timers, etc.)

Emphasize Object Oriented Design and callbacks

Software Engineering Concept:

UI Design Approaches: Model-View-Controller

& UI lifecycle

Stubs for partial implementations

Proxys to stand in for missing components

Tools:

JavaScript Console for interaction/inspection

JavaScript Specifics

Event Listeners

setTimeout() / setInterval()

Interacting with DOM via document object

Assignment:

Garage Behavior

Assignment: Garage Behavior

Goal:

Practice JavaScript

Implement navigation

Introduce "Single Page Applications"

Introduce JavaScript Objects

Module:

Embedded

Goal

Understand significant aspects of

firmware & devices used in "Things"

Studio:

Embedded 1 (Photon Basics)

Studio: Embedded 1

(Photon Basics)

Goal

Understand the basics of configuring a device for Wi-Fi

Understand the Particle's model of cloud-based deployment.

Resistor review (current, voltage, engineering constraints)

Understand analogWrite() & RGB LEDs

Studio:

Embedded 2 (Buttons, Time, & Timers)

Studio:

Embedded 2 (Buttons, Time, & Timers)

Goal:

Review input issues / pullups

Safe Mode

Buttons

Practice debugging (Serial.println)

Time object / "clock time"

Understanding software timers

Build crossfade for RGB light

Studio:

Hardware Cont'd

Goal

Explore common mistakes (floating input)

Debouncing (again)

Assignment:

Photon Phun

Goals

Emphasize the importance of API for separating concerns

Challenging, but real-world logic

Emphasize the importance of timing and states in many real applications

Module: Cloud

Module:

Cloud

Goal

Understand some approaches to networking (Transports, Protocols, and communication patterns)

Data Formats (JSON) & Protocols (HTTP)

Experience Publish-Subscribe and use of event names/channels

(Common IoT approaches)

Experience a few services

Service-to-Service integration & WebHooks

Studio: Cloud 1

Particle Functions & Variables

Studio:

Cloud 1

(Functions & Polling)

Goal

Complete a basic RGB LED lamp

Introduce use of Particle console for testing.

One-to-One communication & Polling: Particle.function() and Particle.variable()

Studio: Cloud 2

Pub-Sub

Studio:

Cloud 2

(Pub-Sub & JavaScript API)

Goals

Introduce pub-sub & events/topics (one-to-many communication)

Use JSON data format

JavaScript API for interacting with service

Studio: Cloud 3

ThingSpeak

Studio: Cloud 3

(ThingSpeak)

Goals

Sequence diagrams to convey interactions

See Cloud Service used for collecting and analyzing data

(ThingSpeak) / TCP based embedded

See Twitter integration

See multi-way communication via

Publish-Subscribe like model

See use of "Public" channel

Studio: Cloud 4 (NextBus)

Studio:

Cloud 4

(NextBus)

Goals

Hardware:

OLED & External Libraries

Piezo / Sound

HTTP Requests (GET/POST, apitester.com/)

WebHooks and cross-service integrations

Studio: Cloud 5

(IFTTT, Sheets, OneWire, Slack, PIR)

Studio: Cloud 5

(IFTTT & webHooks)

Goals

Data logging via IFTTT & Sheets

OneWire for "bus" of Temp. Sensors

PIR Sensor & Slack WebHook

Assignment:

Cloud Cohesion

Goal: Complete basic IoT project!

Combine

UI (Assignment 1)

Behavior (Assignment 2)

Hardware (Assignment 3)

into working project.

Assignment:

Device-to-Device

Assignment:

Device-to-Device

Goal

See device-to-device interaction

Practice prior concepts (i.e., new streams/approach for brightness)

Module:

Mobile

Module:

Mobile

Goals

Be able to create simple mobile apps for IoT

Studio:

Cordova Apps

Studio:

Mobile

Introduction to "hybrid" approach to app development.

PhoneGap Desktop (server) and PhoneGap Mobile (client)

Bringing RGB LED app to mobile.

Assignment:

Mobile

Goal

Short, simple assignment

Chance to catchup/fix errors on prior work

Minis & Misc.

Goals

Cover topics that don't fit elsewhere

Include some breadth of IoT (AdaFruit)

Bluetooth low energy basics

Motors

IFTTT & Texting

Example "projects"

More webhooks / services

Techniques & Tools

Languages: JavaScript, HTML, CSS, C++

Misc. Tech concepts:

Promise objects

Log-based debugging

Web consoles

Proxies/Stubs

Importance of APIs

State Machines / State

Sequence Diagrams

User Stories / Usage Scenarios

Incremental, Unit-based project development

Themes

Event Driven Programming

Responding to UI,

Responding to web traffic,

"Listener" approach

Basic UI concepts / lifecycle

Publish-Subscribe

Many platforms use pubsub

Get / Polling

Prevalence of JavaScript

Human-centric design / design thinking

Lightweight software engineering intro: Breaking a large project into logical sub-parts

Learn more about creating dynamic, engaging presentations with Prezi