class: title, smokescreen, shelf, bottom, no-footer background-image: url(images/Internet_of_Things.jpg) # 181U Spring 2020 ### IoT Applications --- layout: true .footer[ - Geoffrey Brown, 2020 - 181U ] <style> h1 { border-bottom: 8px solid rgb(32,67,143); border-radius: 2px; width: 90%; } .smokescreen h1 { border-bottom: none; } .small.remark-slide-content.compact {font-size:1.2rem} .smaller.remark-slide-content.compact {font-size:1.1rem} .small-code.remark-slide-content.compact code {font-size:1.0rem} .very-small-code.remark-slide-content.compact code {font-size:0.9rem} .line-numbers{ /* Set "line-numbers-counter" to 0 */ counter-reset: line-numbers-counter; } .line-numbers .remark-code-line::before { /* Increment "line-numbers-counter" by 1 */ counter-increment: line-numbers-counter; content: counter(line-numbers-counter); text-align: right; width: 20px; border-right: 1px solid #aaa; display: inline-block; margin-right: 10px; padding: 0 5px; } </style> --- class: compact # Agenda * Course Mechanics * Labs * Grading * Policies * What does IoT Mean ? * Outline of Course Topics * Introduction to Internet * IoT Protocols * C Programming * Embedded Programming * IoT Systems --- class: compact # Course Mechanics * **Instructor** * Geoffrey Brown * Office: Edmunds 128 * Office Hours: TBD * geoffrey.brown@pomona.edu * **Laboratory** * Tuesdays 1:15-4:00 Edmunds 105 * No lab this week * **Assignments** * Most assignments will start in Lab * The first few labs are mostly tutorial --- class: compact # Course Grading **Assignment Grading** * Every assignment will have a concise report that - explains any code developed - discusses the goals, design decisions, and issues * Default grade breakdown - 60% correct, working implementation (Please demo in lab) - 40% report **Course Grading** * 60% Lab/Assignments * 20% Final Project * 20% Midterms --- class: compact # This is a Systems Course * Systems building differs from your past experience in programming * Typically, systems are built from collections of existing components * Systems frequently involve communication between distributed components * Systems building often involves using libraries in a variety of languages * Debugging can be challenging * IoT systems building uses Internet Protocols to combine * Cloud-based servers * Local servers and gateways * Embedded devices --- class: compact,small # Assumptions **Current Assumptions** * You have had intro programming + data structures * You are likely comfortable in Java * You may have programmed in Python * You probably have not programmed in C * Some of you have used git for storing your code **My Plan** * To minimize the new languages you need to learn (C) * To teach you in lab how to use the tools you need **The Risks** * My assumptions are wrong -- *I hope you'll feel free to tell me !* * Things take longer than I plan -- *We'll adjust the schedule* --- class: compact # My Hopes * You're not afraid to "break things" * You can cope with the unexpected * You enjoy making stuff --- class: compact # What is IoT ? * An answer is the connection of sensors (and actuators) in distributed applications * IoT builds upon the underlying Internet infrastructure * IoT uses the Internet Infrastructure in new ways with new protocols * IoT also is used to refer to networks that are (generally) disconnected from the Internet -- such as cars (CAN Bus) and people (body area networks) * IoT applications are also characterized by intermittent connectivity --- class: compact # Connectivity ![](images/space.png# w-20pct) ![](images/connectivity.png# w-60pct) https://www.postscapes.com/what-exactly-is-the-internet-of-things-infographic/ --- class: compact # Sensors ![](images/space.png# w-25pct) ![](images/iotsensors.png# w-50pct) https://www.postscapes.com/what-exactly-is-the-internet-of-things-infographic/ --- class: compact # Existing Smart Application Services ![](images/space.png# w-10pct) ![](images/existing-smart-apps.png# w-80pct) --- class: compact # Applications ![](images/space.png# w-3-12th) ![](images/iot-applications.png# w-50pct) --- class: compact # Compound Applications ![](images/space.png# w-20pct) ![](images/compound-applications.png# w-60pct) --- class: compact # An Application Taxonomy * Consumer - Smart Home - Elder Care * Commercial - Medical/Heathcare - Transportation - Building automation * Industrial - Manufacturing - Agriculture * Infrastructure - Smart Cities - Energy - Environment --- class: compact # E-Health ![](images/space.png# w-20pct) ![](images/ehealth.png# w-60pct) ** Figure from: "The Era of Internet of things", Khaled Salah Mohamed, 2019, Springer** --- class: compact # The Internet The Internet is a remarkable entity that introduced some key ideas to computer science * **Recursive structure** -- "the Internet" is composed of smaller "Internets". In fact, computer operating systems have been structured on similar principles. * **Virtualization** -- applications communicate through "virtual" services. * **Abstraction Layers** --The structure is built in as a series of layers -- each layer "encapsulates" the function of the lower layers and provides a new, more powerful, abstraction to the layers above it. * **Fault Tolerance** -- The Internet is designed to be resilient in the face of failures --- class: compact # Internet Design requirements - scalable connectivity **Point to Point Links** ![](images/space.png# w-30pct) ![](images/point-to-point-links.png# w-40pct) --- class: compact # Internet Design requirements - scalable connectivity **Switched Network** ![](images/space.png# w-30pct) ![](images/switched-network.png# w-40pct) --- class: compact # Internet Design requirements - scalable connectivity **Interconnection of Networks** ![](images/space.png# w-30pct) ![](images/interconnected-networks.png# w-40pct) --- class: compact # Internet Design requirements **Cost Effective Resource Sharing** ![](images/space.png# w-30pct) ![](images/resource-sharing.png# w-40pct) --- class: compact # Internet Design requirements **Switch multiplexing packets onto a link** ![](images/space.png# w-30pct) ![](images/packet-multiplexing.png# w-40pct) --- class:compact # Internet Design Requirements -- support for common services **Applications communicating through a virtual channel** ![](images/space.png# w-30pct) ![](images/support-for-applicaitons.png# w-40pct) --- class: compact # Internet Architecture **Protocol layering** ![](images/layered-protocols.png# w-30pct) ![](images/space.png# w-2-12th) ![](images/peer-to-peer-interface.png# w-40pct) --- class: compact # Internet Architecture **Hypothetical Protocol Graph** ![](images/space.png# w-30pct) ![](images/hypothetical-protocol-graph.png# w-40pct) --- class: compact # Internet Architecture **Encapsulation** ![](images/space.png# w-30pct) ![](images/protocol-encapsulation.png# w-40pct) --- class: compact # Internet Architecture **Internet Protocol Graph** ![](images/internet-protocol-graph.png# w-30pct) ![](images/space.png# w-3-12th) ![](images/internet-packets.png# w-30pct) --- class: compact # Architecture for this class (roughly) * Internet Architecture and Protocols -- 2-3 weeks * IoT Protocols -- 1 week * C Programming -- 2 weeks * Embedded Devices - Foundations -- 2 weeks - Sensors -- 2 weeks * Communication -- 2 weeks * Security -- 1 week * IoT Platforms -- 1 week --- class: compact # Some of the building blocks we'll use ![](images/nucleo-stm.png# w-30pct) ![](images/space.png# w-10pct) ![](images/node-red-image.png# w-50pct) --- class: compact # Example system (Bloomington) **BLE Plant Monitor** ![](images/plant-monitor.png# w-30pct) ![](images/space.png# w-1-12th) ![](images/study-dashboard.png# w-60pct) --- class: compact # Summary * Slides from https://www.postscapes.com/what-exactly-is-the-internet-of-things-infographic/ * Slides from https://book.systemsapproach.org * Cover Photo and lecture material: By <a rel="nofollow" class="external text" href="https://www.flickr.com/photos/wilgengebroed/">Wilgengebroed on Flickr</a> - Cropped and sign removed from <a href="//commons.wikimedia.org/wiki/File:Internet_of_things_signed_by_the_author.jpg" title="File:Internet of things signed by the author.jpg">Internet of things signed by the author.jpg</a>, <a href="https://creativecommons.org/licenses/by/2.0" title="Creative Commons Attribution 2.0">CC BY 2.0</a>, <a href="https://commons.wikimedia.org/w/index.php?curid=32745645">Link</a>