Old Webpage

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