Skip to main content

Description

The purpose of the project is to build a hardware device that runs software written in Rust.

Deliverables

All the deliverables will be published in a GitHub repository that each student will be assigned to.

The repository contains:

  • documentation - the reposiotry's README.md file
    • short description of functionality
    • requirements (hardware and software)
    • hardware design - use KiCad EDA or a similar tool for the schematics
    • software design
      • detail design
      • functional diagram
  • software source code

Students will have to build and showcase the hardware with the running software at PM Fair.

Hardware Rules

  1. Projects have to use a microcontroller (MCU) that is capable of running Rust code. Examples of MCUs are nRF52, RP2040, ESP32 (RISC-V version).
  2. Usage of a development board is encouraged, but not required, a custom PCB can be built. Example of development boards are:
  1. The hardware part may be designed either using a breadboard and jumper wires, a prototype board (solder breadboard) or a PCB.

Software Rules

It has to run software written in Rust. Students can use:

Project Rules

  1. Copying schematics or source code from the Internet is not allowed.
  2. Each project is considered individual work, students can ask the lab assistant (lab) about implementation details during the development period.
  3. Students are strongly encouraged to ask the lab assistant questions about the project.
  4. The presentation of all the milestones is mandatory.

Requirements

  1. Complexity: use knowledge of at least 3 labs, excluding 00 - Rust, 01 - Hardware Introduction and 02 - Setting up the Raspberry Pi Pico + GPIO
  2. Documentation: Complete documentation of the implementation for both hardware and software.
  3. Functionality: the hardware device has to be fully functional.

Example Projects

Examples of projects from past years

  1. https://ocw.cs.pub.ro/courses/pm/prj2022
  2. https://ocw.cs.pub.ro/courses/pm/prj2023

Outstanding Projects

  1. POV - DAVIC picTronics
  2. Ryobo - Computer Vision & Object Following
  3. Plug & Play ChatGPT
  4. VENDING MACHINE

Grading

PartDeadlinePoints
Documentation MilestoneLab 91p
Hardware MilestoneLab 111p
Software MilestoneLab 121p
PM FaireTBD2p
Total5p

F.A.Q

Q: Can I use another programming language, not Rust?
A: No, the main focus of the project is to learn to work with microcontrollers using Rust.

Q: Can I use a different framework than embassy-rs?
A: Yes, we suggest taking a look at RTIC or Tock.

Q: What if the PCB arrives after the hardware milestone?
A: You will only present the diagram for the hardware part and if there is a prototype using breadboard, but at the end of the project you must necessarily have the PCB printed and functional.

Footnotes

  1. Some function of this board, like WiFi, might not be supported in Rust.

  2. ESP32 provides its own Rust SDK described in the The Rust on ESP Book.