Workshops

All workshops are 2 hours and hands on. You will will need a laptop! You will need a few different USB cables . . . one that is your computer's port to USB-C and another that is your port to micro-usb. If you have USB-C you will alse need a USB-A dongle. Sometimes Windows is easier and sometimes Mac or Linux is easier but usually it's possible with either.

Web USB & Web Bluetooth: The Perfect Pair

In this workshop we will use the Nordic Semiconductor nRF52840 Dongle (PCA10059), which supports both Bluetooth and USB. For an OS we will use Zephyr RTOS, which is quickly becoming the Linux for IoT. An IoT product is not worth much without a companion application so we will be build one using modern web technology: HTML, CSS, and JavaScript, with a bit of help from the awesome LitElement project.

Requirements: A laptop with a USB-A plug or an adapter from usb-c to USB-A.

daniel-bank

Daniel Bank

TensorFlow fun with Sparkfun

This is an experiential workshop that focuses on the use of TensorFlow Lite on a low-power microcontroller to perform machine learning. Modalities that are covered include word recognition in speech; gesture recognition using accelerometer values; and human presence detection using imagery.

The workshop covers machine learning model training, deployment, and operation, with a majority of time that is spent on a gesture-recognition activity, “Magic Wand”, that is based on the content of Pete Warden’s book, TinyML: Machine Learning with TensorFlow on Arduino and Ultra-Low-Power Microcontrollers.

Requirements: A laptop with the Arduino IDE installed and a <your laptop connector> to micro-usb cable.

 

Turvey

Chris Turvey

Patti Shin

Patti Shin

TinyML for Everyone with Arduino

This workshop will introduce you to the process of deploying machine learning (ML) models to microcontrollers (MCUs). You will record real-time sensor data from an Arduino Nano 33 BLE board Using this data you will train deep learning model with TensorFlow. Finally, the ML model will be converted so that it can be run on the Arduino with real-time performance.

Prerequisites: A laptop with the Arduino IDE installed and a <your laptop connector> to micro-usb cable.

Resources: Guide in Github

 

Portraits from the Portrait Booth at the Open Hardware Summit 20015

Don Coleman

Sewable Circuits: Making a Wearable WebThing

This workshop will light you up! In this 2 hour session you will learn to build a circuit using stitches. Using a microcontroller and a sewable LED, participants will make a light up patch they can control over a network using Mozilla’s WebThings IoT Gateway.

Requirements: A laptop and a <your laptop connector> to micro-usb cable.

 

Device Hacking 101: Build a Serverless Application for an IoT Device

Building a secure, scalable, performant and managed backend for an IoT device can seem like a huge challenge. In this workshop, we'll build a serverless backend, utilizing readily available open-source hardware devices and AWS services, such as AWS Lambda and AWS IoT. Hacking is really all about taking advantage of available resources and so we'll cover the best practices to help you get started the right way, and onto hacking your next great thing.

Learning Objectives

  • Program and connect an ESP32 M5Stick smartwatch to AWS IoT
  • Interact with a remote device using AWS Lambda
  • Deploy a serverless application using the Serverless Application Repository

Prerequisites: A laptop and a way to plug in a USB-A cable.

Resources: AWS Blog

Asset Tracking and Location with BLE and Microcontrollers

Get hands on with the new Microchip PIC® & AVR®-BLE development boards, and learn how to build BLE nodes from the ground up which will culminate in you building an asset location device from scratch. In this class, you will learn some of the basics behind Bluetooth Low Energy® (BLE), its role in the IoT landscape, and development tools for quickly prototyping your own BLE nodes.

After familiarizing ourselves with the hardware and software as well as the out-of-the-box demo, we’ll get to work building our own application from the ground up. You’ll then get to take the hardware home for your own projects.

Prerequisites:

We will briefly walk through downloading and installing those items in the workshop as well, but they're large files so download them before if you want to have time for the hands-on portion of the class.

** Note for macOS® and 32-bit OS users: The latest version of macOS, 10.15 Catalina, removes support for 32-bit applications. This means that current versions of MPLAB XC32/32++ and MPLAB XC16 IDE will not run on this operating system.

A Hands-on Intro to Managing a Fleet of 1000's of IoT Devices with Balena

The balenaCloud workshop is a hands-on lesson in how to properly deploy, secure, and manage IoT devices, using the balenaCloud platform and Arm-powered devices, in this case a Raspberry Pi 4. This will be a guided, instructor-led activity that is co-hosted by Arm and balena, and each participant will follow along with their own hardware that we will provide them with! We will go through the process of creating a free account with balena, naming an application, provisioning a device, downloading a customized balenaOS, flashing that image to an SD Card using balena Etcher, powering up, and watching the devices come online in the Dashboard. From there, we will go through the steps of installing the balena CLI and cloning a GitHub repository, running a Docker container build, and pushing the resulting Container to the Raspberry Pi. We’ll also explore scaling and fleet management, more advanced container builds, and cover sample projects.

Woven throughout our discussion will be conversations about how to choose the most appropriate IoT hardware depending upon the application or use case, the various capabilities of Arm SoC’s, container-centric development, and other topics of interest to the group depending on any time remaining.

Prerequisites: A laptop and a <your laptop connector> to micro-usb cable. We’ll be flashing SD Cards, installing a CLI utility, building Docker containers, and pushing code to the devices all from the laptop so tools for doing that work will come in handy too (i.e. have Docker installed already!).

Resources: Slides

David Tischler

David Tischler

Robert Wolff

Robert Wolff

Mighty IoT with MicroPython

Get ready to get your hands dirty! In this hands-on workshop, we will discuss getting started with Micropython for building effective and efficient IoT devices. We will be using an ESP32 development board in this workshop. We will be using Micropython to interface sensors, control outputs and publish data to the cloud.

You'll have an ESP32, a breadboard, sensors, resistors and LEDs and you'll wire it up and use a few lines of Micropython to make it all work. Beginners welcome! Nothing to install on your computer! Just open a file and start writing!

Prerequisites: A laptop and a <your laptop connector> to micro-usb cable. Install Thonny IDE (https://thonny.org/). On Windows 7 laptops, install the following serial port driver (https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers).

Yamanoor Srihari

Yamanoor Srihari

Azure IoT workshop

Calling all AIoT DevFest attendees! Join Microsoft for a 2 hour IoT cloud workshop where you will be able to send a GIF to your brand new IoT device. After completing the workshop, each participant will receive an MXChip IoT Device to bring home and continue working on IoT projects independently.

Prerequisites: A laptop and a <your laptop connector> to micro-usb cable.

Resources:

https://github.com/Azure-Samples/mxchip-gifs

And here are a few notes Harj wanted to share . . hopefully the repo is updated soon!

Do not install apps from windows app store, please install from executables or MSI

Section 3 before uploading file to mxchip

Package-lock.json line 358, remove “,” at end of line

Section 3.2  ,,, skip the firmware upgrade by coping to device instead, open board manger in VS Code and upgrade firmware

Section 5 …start server

  1. cd server
  2. npm audit fix  ## fixes package version issues
  3. npm install
  4. npm start