This course can also be taken for academic credit as ECEA 5348, part of CU Boulder’s Master of Science in Electrical Engineering degree.
M2M and IoT Interface Design and Protocols is the third of three classes in the Embedded Interface Design (EID) specialization, an online version of the on-campus EID class taught in graduate embedded systems design. This course is focused on connecting devices to each other and to the cloud to create prototypes and actual systems that flow data from devices to consumers. The class includes an introduction to M2M (Machine-to-Machine) and IoT (Internet of Things) concepts, using the cloud to develop IoT systems (specifically AWS (Amazon Web Services) and its IoT framework), a review of common communications protocols at every level of connected devices, and other IoT design concerns such as security, message queuing approaches, and the use and design of APIs and microservices . The content ranges from general design best practices to specifics for select tools and methods, but all are presented to support developing embedded devices in IoT applications. The class includes practical projects that let you try some of standard methods in software development of prototype graphical user interfaces for devices using AWS, Python, and optionally Node.JS. This course can be taken for academic credit as ECEA 5348, part of CU Boulder's Master of Science in Electrical Engineering degree.
Introduction to M2M & IoT
An introduction to M2M (Machine-to-Machine) and IoT (Internet of Things) definitions, differences, and the importance of these elements in modern use and industry. Also a review of basic cloud architectures, and related terms and concepts. We also review system design and architecture tools like UML, use cases, and architectural patterns. Finally, we look at the class projects for demonstrating IoT and cloud-connected (virtual) devices and systems, and start to prepare for working with AWS, Python, and Node.JS.
Cloud for IoT
Review of key protocols and elements to build cloud-connected IoT systems, including the most common IoT application protocols that connect devices to the cloud - MQTT, CoAP, WebSockets. We then examine what cloud systems must provide to support IoT design, elements like over-the-air updates, digital twins, and serverless processes. Finally we review the make up of one of the most complete cloud environments, AWS, and also look specifically at how it provides a framework for IoT connected devices and systems. We also provide the first cloud-connected IoT coding exercise for the course.
This module focuses on connections between devices and the protocols that enable those connections at several levels. We start at the board level of devices, and then look at low-level communications with protocols such as I2C, SPI, and UART. We then move up into personal, local, and wide area network protocols, both wired and wireless: Ethernet, USB, WiFi, Zigbee, etc. Finally we look specifically at long distance protocols for devices that will run on batteries for over ten years - cellular protocols like LTE-M and NB-IoT, and non-cellular protocols such as LoRaWAN and SIGFOX. We'll also create a second program to extend the first coding exercise to explore other cloud services and APIs.
Other Cloud and IoT Elements
Here we review the final elements that we will include in our tool sets for designing cloud-connected IoT systems. We will look at alternative cloud platforms to AWS, both commercial and open source. We consider cybersecurity issues for IoT devices and systems, ways to test, harden, and prepare our systems for public exposure. And we consider some underlying software technologies that enable the structure of an IoT system: message queuing, APIs, and microservices. We will close with peer review of ours and other's coding exercises, and (optionally) prepare for the final exam.