Professor Nicholas McGill
Course Prerequisite: ESE519 or permission from Professor
Recommended Textbook: Designing for Emerging Technologies: UX for Genomics, Robots, and the Internet of Things, 1st Edition, O’Reilly Media 2014.
2017S Final Projects: https://ese680as17.devpost.com/submissions
2018S Final Projects: https://ese516-2018s.devpost.com/submissions
Course Description
In “IoT Edge Computing”, students will fabricate their own IoT board, complete with microcontroller, network, and sensors that connects with real-world cloud services. Additionally, the class will focus on a comprehensive analysis and creation of a custom bootloader for over the air firmware updates, a critical addition for any modern electronic device and will also dive deep into Altium, an electronics CAD package, that will expose students to rapid IoT focused circuit design and prototyping. Finally, each student’s device will be linked up to the cloud for data logging, control, and automation. We’ll discuss all things Cloud, Edge, and Fog, as well as trends in the embedded industry. Field trips will supplement these lectures, with travel to local businesses succeeding in the IoT realm. When the course is through, each student will have completed an accelerated electronics product cycle in the Internet of Things and will have the power to deploy their custom device with web capabilities.
Students will begin the course by getting familiar with the Microchip SAM W25, a WiFi MCU, and the Atmel Studio IDE, a code development environment used in industry. They’ll learn how to program the microcontroller, leverage existing firmware support in the form of libraries, and use this knowledge to test and select sensors and actuators for their final PCB.
Next, students will learn how to use Altium, an industry standard electronic computer aided design packet (ECAD). Schematic capture will include the components each student has selected, and PCB layout will organize and wire all components. This PCB will have a battery charger, power regulation, sensors, and actuators on-board — buttons, accelerometers, relays, LEDs, etc. The PCBs will be sent out for fabrication and assembly.
The class will design and build a bootloader in embedded C to support over-the-air firmware updates (OTAFU). An investigation of memory maps and program space will highlight constraints that drive the design of the bootloader, choice of the microcontroller, and decision for external memory usage. The bootloader will implement checksums to verify data and redundant device images in the case of boot failure. Students will create state diagrams that describe the boot process and create their own memory map.
Students will then deploy their bootloader on their custom fabricated and assembled PCBs. Lectures will focus on good firmware practice, protocol implementation (SPI, I2C, I2S, etc.), and effective debugging. Finally, the course will turn towards the web aspect of the IOT — using cloud services to capture data from connected devices, as well as controlling devices from the web. They will set up their circuits to gather sensor input and send this data to an online cloud provider, such as Thingworx or IBM Bluemix. The protocol of choice will be MQTT for fast and lightweight messaging.
The final project for the course will bring all core topics together. Each student’s device must successfully implement a custom bootloader for OTAFU, communicate with its on-board sensors and actuators, log data to the cloud, and actuate the device from the web.
Week by Week Course Schedule
Date | Lecture | Assignment (Assigned Date) |
Week 0: 2018/01/11 | L0: Course Overview & Intro to IoT | A0: High Level Device Operation |
Week 1: 2018/01/16 | L1: Concept Shareing & Atmel Studio 7 Basics | A1: CLI Creation |
Week 1: 2018/01/18 | L2: Input & Output Theory, Power Management ICs (PMICs) | |
Week 2: 2018/01/23 | L3: Sensors & Actuators, Power | A2: Sense & React |
Week 2: 2018/01/25 | L4: Altium Introduction – Component Libraries, Schematic Capture | |
Week 3: 2018/01/30 | L5: Altium Intro Lab | A3: Local Library, MCU Pin Mapping, Power & Cost Budgets, Power Schematic Capture |
Week 3: 2018/02/01 | L6: Designing for Power & Cost | |
Week 4: 2018/02/06 | L7: Design Review | A4: Schematic Capture |
Week 4: 2018/02/08 | L8: Circuit & Schematic Best Practices | |
Week 5: 2018/02/13 | L9: PCB Layout | A4: PCB Layout, Partner Design Reviews |
Week 5: 2018/02/15 | L10: PCB Fabrication & Assembly Processes | |
Week 6: 2018/02/20 | L11: Manufacturing Packages & PCB Review | A5: PCBA Manufacturing Files |
Week 6: 2018/02/22 | L12: In class peer design reviews. | |
Week 7: 2018/02/27 | L13: PCB Manufacturing in Industry, RF Routing, FCC Certification, ESD Testing | |
Week 7: 2018/03/01 | L14: Final PCBA review | |
Week 8: 2018/03/06 | Spring Break | |
Week 8: 2018/03/08 | Spring Break | |
Week 9: 2018/03/13 | L15: Bootload I | A6: Bootloader Design |
Week 9: 2018/03/15 | L16: Bootload II | |
Week 10: 2018/03/20 | L17: Over The Air Firmware Updates I | A7: OTAFU Demonstration |
Week 10: 2018/03/22 | L18: Over The Air Firmware Updates II | |
Week 11: 2018/03/27 | L19: Cloud Connection I | A8: Cloud |
Week 11: 2018/03/29 | L20: Cloud Connection II | |
Week 12: 2018/04/03 | L21: PCBA Bringup Best Practices | A9: PCBA Bringup |
Week 12: 2018/04/05 | L22: Cloud Analysis & PCBA Bringup | |
Week 13: 2018/04/10 | L23: Guest Lecture | |
Week 13: 2018/04/12 | L24: Demo Day Checkin | |
Week 14: 2018/04/17 | L25: Demo Day Working Session | |
Week 14: 2018/04/19 | L26: Demo Day Dry Run | |
Week 15: 2018/04/24 | L27: Demo Day | |
Week 15: 2018/04/26 | A10: Final Submission |