💡 Hello World: Course Overview#

Note

Registration is live! Course quizzes and grades are available at https://q.utoronto.ca/.

In this course, you will build a minimal working example for a self-driving lab, using dimmable LEDs and a light sensor to perform a color-matching task. This introduction will help you implement microcontroller programming via a Pico W, Bayesian optimization via the Ax Platform, device communication via MQTT, and database integration via MongoDB. Finally, you will piece together the individual components to complete your self-driving lab. This introductory course will prepare you for deeper dives in data science, robotics, software development, and system design in later microcourses.

../../_images/clslab-light.gif

🔑 Prerequisites#

Warning

This course requires physical hardware and a 2.4 GHz WPA2-Personal wireless network

If you do not have the hardware, you will need to purchase the required components, replacing the USB power adapter with the correct style for your country (e.g., European type C), if necessary. You may also refer to “Before you Begin”.

Hardware annotated

Tip

If the AS7341 sensor shows as being on backorder, you can either order it from DigiKey still and wait until it comes back in stock or source it from another supplier (see e.g., Adafruit’s listing, Mouser). If you have trouble accessing the DigiKey cart, see the CSV version of the cart [permalink].

You will need access to a 2.4 GHz WPA2-personal wireless network (i.e., WiFi name and password only, without usernames, which is required for most internet-of-things devices). If you do not already have access to one, some alternatives include setting up a home network to broadcast both 2.4 GHz and 5 GHz networks per your router’s specific instructions, or perhaps easier - using a mobile hotspot in extended compatibility mode. Likewise, you may also use a SIM-enabled router or check if your organization supports IoT devices. Eduroam is not yet supported as of 2024-07-16. See additional recommendations for gaining access to the required network.

Wifi Help

Tip

If you need a quick solution that can be standalone and dedicated, we have tested the Cudy AC1200 SIM-enabled Router with a Hologram IoT SIM Card and pay-as-you-go plan, though pay-as-you-go data is expensive at US$100/GB (US$0.10/MB) and intended for low-bandwidth data transfer.

For participants to complete this course within the expected timeframe (approx. 25 hours), at least beginner proficiency in Python programming is recommended. Those with advanced programming expertise will likely require a significantly shorter amount of time, whereas those with no prior programming experience may require 50 hours or more.

🎯 Learning Outcomes#

  • Define and explain key terms and principles of self-driving labs to demonstrate understanding

  • Apply MQTT or similar frameworks to send commands and receive sensor data over WiFi

  • Demonstrate the ability to use MongoDB to store and retrieve experiment configurations and results effectively

  • Develop and implement software on a Raspberry Pi Pico W microcontroller to control device power and read sensor data accurately

  • Modify a Bayesian optimization script using the Ax Platform to iteratively propose new experimental configurations

  • Integrate the individual SDL components to orchestrate the full ‘Hello World’ workflow

🛠️ Competencies/Skills#

  • Basic self-driving lab literacy

  • Microcontrollers and sensors

  • Bayesian optimization

  • Hardware/software communication

  • Database management

  • Workflow orchestration

🧩 Modules#

The orientation modules are intended to be completed in under one hour in total. The modules after are intended to take approximately 3-4 hours each, assuming that the recommended prerequisites from above have been met.

Module Name

Topics

Learning Outcomes

1.0 Orientation

  • Git

  • GitHub

  • Version control

  • GitHub Classroom

  • Codespaces

  • Describe the purpose of Git and GitHub

  • Create a GitHub account and a repository

  • Commit, push, and pull changes

  • Run a unit test and fix a simple Python function

  • Define continuous integration

1.1 Run the demo

  • Database management

  • Bayesian optimization

  • Microcontrollers

  • Describe key terms and principles of self-driving labs

  • Preview an end-to-end self-driving lab

  • Upload software to a microcontroller

1.2 Blink and read

  • Microcontrollers

  • MicroPython

  • Write MicroPython scripts

  • Use a microcontroller

1.3 Bayesian optimization

  • Design of experiments

  • Bayesian optimization

  • Data visualization

  • Adapt a Bayesian optimization script to perform color-matching

  • Compare Bayesian optimization with other search methods

  • Visualize optimization efficiency

1.4 Device communication

  • MQTT

  • Broker/client

  • Send commands to a microcontroller

  • Receive sensor data from a microcontroller

1.5 Database Management

  • MongoDB

  • JSON

  • PyMongo

  • Set up a MongoDB account and database

  • Upload data directly from microcontroller

  • Extract and collate data from database

1.6 Connecting the pieces

  • Systems design

  • Describe how individual components of an SDL can be integrated

  • Perform system-level debugging and troubleshooting

  • Conduct a full SDL experimental campaign

⚖️ Course Assessments and Grading Schema#

Each student is required to complete various quizzes and GitHub Classroom assignments. The course is structured into an orientation module followed by several modules. The course is graded on a pass/fail basis with 70% as the threshold for passing. Here is the breakdown of the points for each part of the course:

  • 🧭 Orientation Module: Worth 15 points.
  • 📚 Modules 1-6: Each includes:
    • 🧭 A guided notebook tutorial (ungraded)
    • 📓 A knowledge check (graded, 5 points)
    • 🛠️ A GitHub Classroom assignment (graded, 10 points*)

*The final module's GitHub Classroom assignment is worth 30 points.

Note that partial points are available on certain assignments.

👤 Course developer(s)#

  • Sterling Baird, PhD Materials Science and Engineering (Acceleration Consortium)